mirror of https://github.com/status-im/NimYAML.git
12 KiB
12 KiB
2.1.0 (upcoming)
Features:
- New pragmas
scalar
andcollection
allow you to modify the presentation style used for certain types and object fields. Defined in new moduleyaml/style
. - The presenter now honors the node style set in the events it presents, if possible. So if a scalar is set to be a literal block scalar, it is presented as such unless impossible or presenter options specifically prevent this.
- The presenter can now output single-quoted scalars. It only does so when this scalar style is explicitly set on an event.
Changes:
- renamed
canonicalDumper
/setCanonicalStyle
toexplanatoryDumper
/setExplanatoryStyle
because it was a misnomer and there is nothing canonical about this output style. The terminology canonical was carried over from PyYAML, but the YAML specification uses that term for different things. The old names are kept with adeprecated
pragma. - The
explanatoryDumper
now automatically enables the tag shorthand!n!
, because in this style you want that for readability.
Bugfixes:
- Fixed a bug that prevented instances of generic types to be used in
Option
fields (e.g.Option[seq[string]]
) (#101) - Fixed a bug that caused invalid indentation when dumping with certain settings (#140)
- Fixed parsing errors for verbatim tags in flow style (#140)
- Fixed a bug that caused presentation of block scalars in flow collections (#140)
- Fixed a bug that sometimes caused the last word of a folded block scalar not to be presented.
- Fixed maximum line length not properly implemented in presenter in a number of cases.
- Fixed a bug that prevented the presenter from outputting compact flow mappings in cMixed mode.
- Fixed block scalars as mapping keys not being presented properly.
2.0.0
Breaking Changes:
- Requires Nim 2.x
yaml/serialization
has been split intoyaml/native
(low-level API to load aYamlStream
into Nim vars),yaml/loading
(high-level loading API) andyaml/dumping
(high-level dumping API).- Dumping API now has a
Dumper
object. All dumping procs require an instance of this object. Previous parameterstagStyle
,handles
andoptions
have been moved into this object. - Constants with default values have been removed in favor of default values for object fields.
- Low-level native API for loading and dumping has undergone changes to parameter order. Serialization and deserialization context is now first parameter, to be able to use prefix notation.
- Removed
PresentationStyle
; insteadDumper
can be initialized with presets mirroring the former values ofPresentationStyle
. - Removed deprecated
YamlDocument
type from DOM API. UseYamlNode
instead.
Features:
- Can now load and dump fields of the parent type(s) of used types (#131)
- Updated type guessing to use regexes from YAML 1.2 instead of old YAML 1.1. Type guessing is used primarily for heterogeneous items (implicit variant objects).
- Presenter no longer outputs trailing spaces
- More presentation options
- Simplified default presentation style: Don't output
%YAML 1.2
,%TAG !n! ...
or---
by default. Output compact notation for collections. - Loading now works at compile time (#70, #91). Dumping doesn't work at compile time currently.
Bugfixes:
- Don't crash on invalid input, instead raise a catchable
YamlParserError
(#129) - Fixed some parser errors in exotic edge cases
- Several fixes to make the library work with Nim 2.x
1.1.0
Features:
YamlNode
now contains node styles and preserves them when serializing to YAML again- Added
maxLineLength
toPresentationOptions
. (#119) - Added
loadFlattened
to resolve aliases while loading, instead of deserializing them into pointers. (#117)
Bugfixes:
- Fixed problems with ARC/ORC (#120)
- Fixes some edge cases around whitespace while parsing
- Fixed a problem that made
{.ignore: [].}
fail when trying to ignore collection values. (#127) - Always write a newline character at the end of output, as required by POSIX for text files.
- Fixed an error with loading recursive nodes into YamlNodes.
- Fixed an error where
0
could not be loaded into an unsigned integer lvalue. (#123) - Fixed an error where
float32
values could not properly be deserialized. (#124) - Fixed a compiler error concerning stricteffects. (#125)
1.0.0
Features:
YamlNode
can now be used with the serialization API (load
/dump
) and can be used to hold substructures that should not be deserialized to native types (#48).
Bugfixes:
- Raise a proper exception when a stream contains no documents but one is expected (#108)
- Comments after a block scalar do not lead to a crash anymore (#106)
- Fixed an error with parsing document end markers (#115)
- Fixed an error when serializing block scalars (#105)
0.16.0
Features:
- dumping
sparse
objects now omits emptyOption
fields (#100).
Bugfixes:
- Fixed several parser errors that emerged from updates on the test suite.
- Fixed
raises
annotations which could lead to compilation errors (#99).
0.15.0
Features:
- Compiles with --gc:arc and --gc:orc
Bugfixes:
- Parser rewrite: Fixes some test suite errors (including #83)
- Fixed problems where a syntax error lead to an invalid state (#39, #90)
- Serialize boolean values as
true
/false
instead ofy
/y
to conform to YAML 1.2 spec.
0.14.0
Features:
- Breaking change: transient, defaultVal, ignore and implicit are now annotations.
- Added
sparse
annotation to treat allOption
fields as optional.
Bugfixes:
- can now use default values with ref objects (#66)
0.13.1
Bugfixes:
- Changed
nim tests
tonim test
to make nim ci happy.
0.13.0
Bugfixes:
- Fixed submodule link to yaml-test-suite.
Features:
- Added support for
Option
type.
0.12.0
Bugfixes:
- Made it work with Nim 0.20.2
0.11.0
Bugfixes:
- Made it work with Nim 0.19.0
NimYAML 0.11.0 is unlikely to work with older Nim versions.
0.10.4
Bugfixes:
- Made it work with Nim 0.18.0
0.10.3
Bugfixes:
- Fixed a nimble error when installing the package.
Features:
- Added
ignoreUnknownKeys
macro to ignore all mapping keys that do not map to a field of an object / tuple (#43).
0.10.2
Bugfixes:
- Fixed a nimble warning (#42)
- Make sure special strings (e.g. "null") are properly quoted when dumping JSON (#44)
0.10.1
Bugfixes:
- Made it actually work with Nim 0.17.0.
0.10.0
Features:
- Compatibility with Nim 0.17.0 (#40). Important: This fix breaks compatibility with previous Nim versions!
0.9.1
Features:
- Added
YamlParser.display()
which is mainly used by tests - NimYAML now builds for JS target (but does not work properly yet)
Bugfixes:
- Correctly present empty collections in block-only style (#33)
- Correctly handle
{1}
(#34) - Recognize empty plain scalar as possible
!!null
value - Require colons before subsequent keys in a flow mapping (#35)
- Allow stream end after block scalar indicators
- Fixed regression bugs introduced with timestamp parsing (#37)
0.9.0
Features:
- Better DOM API:
- yMapping is now a Table
- field names have changed to imitate those of Nim's json API
- Better getter and setter procs
- Added ability to resolve non-specific tags in presenter.transform
Bugfixes:
- Fixed parsing floating point literals (#30)
- Fixed a bug with variant records (#31)
- Empty documents now always contain an empty scalar
- Block scalars with indentation indicator now have correct whitespace on first line.
0.8.0
Features:
- NimYAML now has a global tag URI prefix for Nim types,
tag:nimyaml.org,2016:
. This prefix is denoted by the custom tag handle!n!
. - Support arbitrary tag handles.
- Added ability to mark object and tuple fields as transient.
- Added ability to set a default value for object fields.
- Added ability to ignore key-value pairs in the input when loading object values.
- Support
!!timestamp
by parsing it toTime
from moduletimes
.
Bugfixes:
- Fixed a bug concerning duplicate TagIds for different tags in the
serializationTagLibrary
- Convert commas in tag URIs to semicolons when using a tag URI as generic parameter to another one, because commas after the tag handle are interpreted as flow separators.
0.7.0
Features:
- Better handling of internal error messages
- Refactoring of low-level API:
- No more usage of first-class iterators (not supported for JS target)
- Added ability to directly use strings as input without stdlib's streams (which are not available for JS)
- Added ability to parse octal and hexadecimal numbers
- Restructuring of API: now available as submodules of yaml. For backwards
compatibility, it is still possible to
import yaml
, which will import all submodules - Check for missing, duplicate and unknown fields when deserializing tuples and objects
Bugfixes:
- Fixed double quotes inside plain scalar (#25)
- Return correct line content for errors if possible (#23)
- Some smaller lexer/parser fixes
0.6.3
Bugfixes:
- Can load floats from integer literals (without decimal point) (#22)
0.6.2
Bugfixes:
- Fixed problem when serializing a type that overloads the
==
operator (#19) - Fixed type hints for floats (
0
digit was not processed properly) (#21)
0.6.1
Bugfixes:
- Fixed deserialization of floats (#17)
- Handle IndexError from queues properly
0.6.0
Features:
- Properly support variant object types
- First version that works with a released Nim version (0.14.0)
Bugfixes:
- Fixed a crash in presenter when outputting JSON or canonical YAML
- Raise an exception when trying to output multiple documents in JSON style
0.5.1
Bugfixes:
- Fixed a problem that was introduced by a change in Nim devel
0.5.0
Features:
- Support variant object types (experimental)
- Added ability to use variant object types to process heterogeneous data
- Support
set
type - Support
array
type - Support
int
,uint
andfloat
types (previously, the precision must be specified) - Check for duplicate tag URIs at compile time
- Renamed
setTagUriForType
tosetTagUri
Bugfixes:
- None, but fastparse.nim has seen heavy refactoring
0.4.0
Features:
- Added option to output YAML 1.1
- Added benchmark for processing YAML input
- Serialization for OrderedMap
- Use !nim:field for object field names (#12)
Bugfixes:
- Code refactoring (#9, #10, #11, #13)
- Some small improvements parsing and presenting
0.3.0
Features:
- Renamed some symbols to improve consistency (#6):
yamlStartSequence
->yamlStartSeq
yamlEndSequence
->yamlEndSeq
yamlStartDocument
->yamlStartDoc
yamlEndDocument
->yamlEndDoc
yTagMap
->yTagMapping
- Introduced
PresentationOptions
:- Let user specify newline style
- Merged old presentation options
indentationStep
andpresentationStyle
into it
- Use YAML test suite from
yaml-dev-kit
to test parser.
Bugfixes:
- Fixed various parser bugs discovered with YAML test suite:
- Block scalar as root node no longer leads to a parser error
- Fixed a bug that caused incorrect handling of comments after plain scalars
- Fixed bugs with newline handling of block scalars
- Fixed a bug related to block sequence indentation
- Skip content in tag and anchor names and single-quoted scalars when scanning for possible implicit map key
- Properly handle more indented lines in folded block scalars
- Fixed a problem with handling ':' after whitespace
- Fixed indentation handling after block scalar
0.2.0
Features:
- Added DOM API
- Output block scalars in presenter if scalar is long and block scalar output is feasible. Else, use multiple lines for long scalars in double quotes.
Bugfixes:
- Improved parser (#1, #3, #5)
- Made parser correctly handle block sequences that have the same indentation as their parent node (#2)
- Fixed problems with outputting double quoted strings (#4)
0.1.0
- Initial release