Commit Graph

172 Commits

Author SHA1 Message Date
flyx 1dfc2a3333 Implemented Option serialization. Fixes #78 2020-03-08 19:58:02 +01:00
flyx f714881ae9 Fixed submodules. Fixed some depr warnings. Fixes #77 2020-03-08 19:22:34 +01:00
Felix Krause f8b264f992 Fixes #76 2019-11-30 13:16:40 +01:00
k0zmo 0336d06114 Disallow deserialization of object variants with multiple object branches 2019-07-06 11:14:34 +02:00
k0zmo fd4a718586 Adhere to new rules of object variants (re)initialization 2019-07-06 11:14:34 +02:00
Marcus Eriksson 90f47e1043 Only include the type name in the error message 2019-07-06 11:14:34 +02:00
Marcus Eriksson ef2b2e9ae7 Fixes for Nim v0.20.0
The breaking changes affecting this library are:

* Macro arguments of type typedesc are now passed to the macro as
  NimNode like every other type except static. Use typed for a behavior
  that is identical in new and old Nim. See the RFC Pass typedesc as
  NimNode to macros for more details.
  (https://github.com/nim-lang/RFCs/issues/148)

* case object branch transitions via system.reset are deprecated.
  Compile your code with -d:nimOldCaseObjects for a transition period.

  The solution here is to compile with '-d:nimOldCaseObjects' for the
  time being. I didn't understand how to modify the code to adhere to
  the new way of initializing/changing variant objects.

* The compiler now enforces range checking which exposed a bug in the
  fieldCount proc. For variant objects where one of the branches is
  given on one line, e.g.

    ...
    of akDog: barkometer: int
    ...

  the field wasn't counted and the total field count was not accurate.
2019-07-06 11:14:34 +02:00
Kobi 053d5d1333 removed empty lines
(probably from nimpretty formatting?)
2019-01-27 12:07:16 +01:00
Kobi Lurie 9226aa4d37 modified presenter to work with deques instead of the obsolete queues 2019-01-27 12:07:16 +01:00
Vindaar 1babb26616 move echo statement for internal stacktrace into if branch
No need to echo internal stacktrace, if there is no parent to echo for.
2018-10-12 16:00:39 +02:00
Vindaar 8a7750cb6c make sure to also append '\0' for JS as well as C backend
Also remove now unnecessary `os` (was imported for internal
`assertStringEqual` test) module import in `tserialization`.
2018-10-12 16:00:39 +02:00
Vindaar c4e7072722 clean up `constructJson` by removing not needed assignments
Also use `expKey` everywhere.
2018-10-12 16:00:39 +02:00
Vindaar 3eb006be2d Revert "fix for null terminator not accessable in strings anymore"
This reverts commit 07c59e2d2d90b3123973814ebc9cf974a0bf4baf.
2018-10-12 16:00:39 +02:00
Vindaar d26a57fe93 append null terminator to source when creating `StringSource`
This makes editing the lexer unnecessary.
2018-10-12 16:00:39 +02:00
Vindaar ba06599b7d echo internal stack trace if not release, check if parent is nil 2018-10-12 16:00:39 +02:00
Vindaar 06ddc9eb13 Revert "fix internal `IndexError` in `lex.nim` due to null term n.a."
This reverts commit e147df31718bb5bcd27c4067314dc40c2ecc9348.
2018-10-12 16:00:39 +02:00
Vindaar e104dc351d [tojson] extend `Level` by `expKey` to signal node expects a key
Extens the `Level` type in `tojson` by a `expKey` field, which is used
to indicate whether a node still expects a key or not.

NOTE: not sure if the `expKey = true` statements in lines 163 and 183
are necessary / correct. Tests work this way though.
2018-10-12 16:00:39 +02:00
Vindaar 407b10be66 do not construct empty seq for `yamlScalar` 2018-10-12 16:00:39 +02:00
Vindaar d19539a231 fix internal `IndexError` in `lex.nim` due to null term n.a.
Since the null terminator is not available anymore we need to be
careful how we access strings in the lexer.

This should probably be solved in a nicer and more scalable way! :/
2018-10-12 16:00:39 +02:00
Vindaar 446493ded8 replace `newException` by `constructionError` call if int too large
If an integer doesn't fit into the target type an exception is thrown.
2018-10-12 16:00:39 +02:00
Vindaar db1a2c4041 allow echoing internal stacktrace if compiling with `d:debug`
`internalError` and `yAssert` now allow to echo the internal stack
traces if the `d:debug` compile flag is set.
2018-10-12 16:00:39 +02:00
Vindaar f0eeece22d remove unnecessary cast on return value of `newStringOfCap` 2018-10-12 16:00:39 +02:00
Vindaar 53c476ce38 remove unnecessary if branch related too seq construction
Not needed anymore, since seqs can never be nil nowadays.
2018-10-12 16:00:39 +02:00
Vindaar 81e50d73d9 remove commented out old code 2018-10-12 16:00:39 +02:00
Vindaar 253a4623e4 circumvent RangeError, which will be wrongly caught
Converting an integer via `T(number)` to some integer will cause a
range error, if it doesn't fit. Maybe it didn't in the past, which is
why the code worked before? Some other error was thrown?
With this code anyway it crashed, because it threw an internal error.
2018-10-12 16:00:39 +02:00
Vindaar 4821ef95fb [soft] take out yTagNimNilString/Seq and related (?) nil tests 2018-10-12 16:00:39 +02:00
Vindaar 7ad13d98d9 force vals in `quote do` to bool due to compile time when changes 2018-10-12 16:00:39 +02:00
Vindaar 011c99270f fix regression in times.parse syntax due to changes in times module
Probably due to the changes in the times module, the old syntax throws
an error now.
2018-10-12 16:00:39 +02:00
Vindaar 048f6615f5 fix for null terminator not accessable in strings anymore 2018-10-12 16:00:39 +02:00
Vindaar 890bbed5ed further `nil` fixes in `tojson` and `serialization` 2018-10-12 16:00:39 +02:00
Alexander Ivanov 566e28dcc5 Make it work with new not nil 2018-10-12 16:00:39 +02:00
Alexander Ivanov ba53fc0494 Load 0 fix #60 2018-08-30 09:21:30 +02:00
majj ddf22a3a41 experimental: notnil 2018-08-24 13:30:05 +02:00
majj 51d33d4a05 experimental: notnil 2018-08-24 13:30:05 +02:00
Marcus Eriksson 2328289dba Fixes #54 2018-05-29 19:12:03 +02:00
flyx e9658f22ec
Fixes #49 2017-11-14 15:52:11 +01:00
Jacob MacDonald 4933194dd6 Fix for newer versions of compiler.
61720e0df9475af647de171f6b2964c36234961a in the Nim compiler introduced the bug
in this project. In brief, the upstream change flattens `nnkStmtList`s of one
item. Thus, `quote do:` followed by one statement is no longer a nnkStmtList
but whatever that one statement is. This breaks several macro implementations
where a `quote do:` form is initialized and then appended to. Based on Araq's
feedback (https://irclogs.nim-lang.org/02-10-2017.html#21:01:26), these
single-statement quotes are now converted into one-element statement lists as
necessary (behavior on old versions of the compiler is maintained).
2017-10-03 15:59:45 +02:00
Felix Krause 8d8464da71 Fixes #43 2017-09-20 18:58:09 +02:00
Felix Krause 37031c4c80 make tests green again 2017-08-30 18:11:18 +02:00
Felix Krause ff86083461 Fixes #44 2017-08-30 18:04:52 +02:00
Felix Krause 0caebe2618 Revert "Actual fix for #40" because it's shit
This reverts commit 15f8995ae2.
2017-07-10 19:52:34 +02:00
Felix Krause 15f8995ae2 Actual fix for #40 2017-06-30 16:45:32 +02:00
Zahary Karadjov 7a122adad3 fix #40 2017-06-30 16:07:43 +03:00
Felix Krause f07cf173dc Fixed to previous JS adjustments 2017-03-30 17:58:53 +02:00
Felix Krause 7ba95845e0 JS improvements; also added constructObjectDefault 2017-03-29 21:42:07 +02:00
Felix Krause 71b075abf6 Allow backticked field names in macros 2017-03-29 18:38:31 +02:00
Felix Krause a48bf086b7 Merge branch 'devel' of github.com:flyx/NimYAML into devel 2017-03-29 17:15:04 +02:00
Felix Krause f017a57d86 Made NimYAML compile for JS 2017-03-29 17:14:50 +02:00
flyx fc9ed39efd Make `0` a valid integer 2017-03-29 16:39:51 +02:00
flyx 75548f956b Fixes #37 2017-03-29 15:40:13 +02:00
Felix Krause 83efb88978 Fixed compilation error 2017-02-18 12:31:23 +01:00
Felix Krause e30739fb36 final final fixes for event rendering 2017-02-18 10:40:39 +01:00
Felix Krause d6ace28775 (hopefully) final event output fix 2017-02-14 22:30:48 +01:00
Felix Krause b15f3dbae9 Even more fixes to event output 2017-02-14 22:22:56 +01:00
Felix Krause 8abe91cb32 Further event output improvements 2017-02-14 22:08:38 +01:00
Felix Krause 2bb32139c4 Added `+DOC ---` event output. Fixed parserTests 2017-02-14 22:06:48 +01:00
Felix Krause 9eee22bbc5 Improved event output conformity 2017-02-14 21:53:15 +01:00
Felix Krause 8b4f781d41 Added anchor name to display() 2017-02-14 19:43:02 +01:00
Felix Krause c581f1acc2 Added YamlParser.display()
* renders events with proper tag and anchor names
2017-02-14 19:40:40 +01:00
Felix Krause 58ef5da17b Made token output conform to yaml test suite
* Added -d:yamlScalarRepInd switch
 * Modified `$` on stream items to use yaml test suite format
2017-02-14 19:06:41 +01:00
Felix Krause 5ebde01ca5 Made tjson and tserialization compile for JS 2017-02-13 17:10:56 +01:00
Felix Krause 0ef9cbf535 Moved private sources to yaml/private 2017-02-06 20:39:04 +01:00
Felix Krause d8f6ea5e2d Fixed an error in flow map parsing
* { ? foo: bar } emitted an additional, second, empty
   key-value pair
2017-02-06 20:35:17 +01:00
Felix Krause e46ef33a23 Allow stream end after block scalar indicators 2017-01-13 16:25:46 +01:00
Felix Krause b99fa8df7a Fixes #35 2017-01-13 16:19:04 +01:00
Felix Krause 538a2d2deb Recognize empty string as !!null 2017-01-12 11:19:46 +01:00
Felix Krause f78c2c5961 Correctly handle `{1}`. Fixes #34 2017-01-10 12:00:15 +01:00
Felix Krause 936df70daa Correctly present empty collections in block-only.
* Fixes #33
2017-01-10 11:45:55 +01:00
Felix Krause 356dc5c8bd Added testSuiteEvents tool 2017-01-09 19:09:07 +01:00
Felix Krause 87bfcd1490 Fixed bugs
* lexer did not handle indentation indicator for block scalars properly
 * transform() did not work properly for string output
2016-12-13 21:22:36 +01:00
Felix Krause 4b529c1fd6 Fixed and improved presenter.transform
* Added option to resolve non-specific tags
 * Actually resolve non-specific tags
 * Made it compile again after hints enhancement
2016-12-05 18:27:32 +01:00
Felix Krause 44ca31b1e2 Empty documents always contain an empty scalar 2016-11-30 21:58:46 +01:00
Felix Krause 40e303049f Documented serialization macros 2016-11-30 18:31:09 +01:00
Felix Krause 5e00d714eb Do not assume RecLists everywhere. Fixes #31 2016-11-30 18:01:03 +01:00
Felix Krause 84d4127caf Improved DOM API
* yMapping is now a Table
 * changed names to match those of the json module
 * implemented procs to easier get and set values
2016-11-28 20:17:04 +01:00
Felix Krause a51befe30d Improved float parsing
* Fixed #30
 * Accept underscores in float literals
 * Added test
2016-11-10 10:12:32 +01:00
Felix Krause 64f68ae1af Implemented !!timestamp 2016-11-08 21:13:01 +01:00
Felix Krause dcfa8fd27c Implemented ignoreInputKey 2016-10-27 17:58:14 +02:00
Felix Krause 6402433d2a Implemented setDefaultValue. 2016-10-26 18:32:54 +02:00
Felix Krause 9290ca0d91 Load objects with transient fields 2016-10-19 22:04:46 +02:00
Felix Krause ab8bfe4192 Removed garbage code 2016-10-15 18:30:52 +02:00
Felix Krause 3ab3dc7ad0 Dump variant objects with transient fields
* tuples not working yet
 * loading not woring yet
 * added tests
2016-10-15 17:58:29 +02:00
Felix Krause b3d83025f7 Started transient implementation
* represent of simple object works
 * TODO: variant objects
 * TODO: construct
2016-10-12 22:39:59 +02:00
Felix Krause 29352fa4fe Use global tag handle for NimYAML
* NimYAML now uses the tag prefix tag:nimyaml.org,2016:
 * That tag handle is shortened to !n! when presenting
 * Also fixed some minor bugs dealing with tag handles
2016-10-10 20:16:54 +02:00
Felix Krause 4bde3a7986 Fixed issues in quickstart and taglib
* Updated expected YAML in 02
 * Fixed duplicate TagIds in taglib
2016-10-09 11:48:52 +02:00
Felix Krause 0f2e077b87 Added automatic test for quickstart snippets
* There are errors which indicate real bugs!
2016-10-08 23:35:33 +02:00
Felix Krause 9f7e87e935 Ordered snippets with file system hierarchy 2016-10-08 20:57:53 +02:00
Felix Krause b9f569a3cf Fixed a GC problem; improved bench & tojson 2016-09-30 19:35:43 +02:00
Felix Krause 3942e80d9b Improved error messages and test them. 2016-09-24 16:45:49 +02:00
Felix Krause 2ad41d349e Improved and fixed issues with error reporting 2016-09-23 15:42:24 +02:00
Felix Krause a8d68d1696 Addressed some compiler warnings 2016-09-22 14:25:10 +02:00
Felix Krause 680e419d12 Simplified field checking 2016-09-22 14:16:10 +02:00
Felix Krause 1dc8ddc6ea got rid of yaml.common 2016-09-22 13:28:24 +02:00
Felix Krause 5dfc984913 Updated documentation for new structure 2016-09-21 21:20:57 +02:00
Felix Krause d987b607e5 Check for custom object errors when loading
* Ensure no duplicate fields
 * Ensure no missing fields
 * Ensure no unknown fields
 * Implemented for both tuples and objects,
   including variant objects
2016-09-21 15:40:03 +02:00
Felix Krause 6bb110b185 Made bench great again 2016-09-21 10:44:40 +02:00
Felix Krause 12960b2e31 Restructuring: no more includes 2016-09-20 21:53:38 +02:00
Felix Krause 325e3ec18f Made serialization part of yaml. Improved doc. 2016-02-12 20:44:38 +01:00
Felix Krause c6c13eb044 Better doc index. YamlStream now an object.
* Also various fixes to serialization and presentation
2016-02-12 19:53:25 +01:00
Felix Krause 32c42054f7 Renamed serialize() to represent() to better conform to YAML spec 2016-02-02 18:19:40 +01:00