Jacek Sieka
a7d815ed92
normalise nimble, update CI ( #52 )
2022-11-24 13:49:34 +01:00
Zahary Karadjov
b42cd3c0d9
Make Reader.skipSingleJsValue part of the public API
2022-11-23 13:32:11 +02:00
Tanguy
e5b18fb710
bugfix: a leading field with a 'none' value was producing an incorrect encoding ( #50 )
...
The field was omitted, but not the comma following it, resulting in an
encoding such as '{, otherFields: ...}'
2022-07-15 10:23:35 +00:00
Zahary Karadjov
97cf184119
Rename some definitions to avoid clashes with stew/bitops2
2022-07-14 16:05:55 +03:00
Zahary Karadjov
aca66fbd8e
bugfix: even the Option fields were mandatory under requireAllFields
2022-07-14 15:14:10 +03:00
Ivan Yonchovski
090749e577
Add setup files ( #49 )
2022-07-12 23:22:39 +03:00
tersec
5a7f9a86cb
fix Nim 1.6 deprecation warning ( #48 )
2022-07-01 17:48:29 +00:00
Zahary Karadjov
dbe0f1ae51
Remove a string-to-cstring conversion warning on Nim 1.6
2022-06-19 13:06:02 +03:00
Zahary Karadjov
bedbe6595a
Avoid overloading the separate classes of writeField ops
2022-06-19 12:38:44 +03:00
Zahary Karadjov
95399caff3
Use latest nim-serialization; Add tests for useCustomSerialization
2022-06-18 13:34:04 +03:00
Zahary Karadjov
cc5038e0e2
Add writer.stepwiseArrayCreation
2022-06-17 20:16:28 +03:00
zah
b9af0be99d
Don't write empty optional fields ( #47 )
2022-06-16 17:14:00 +03:00
Zahary Karadjov
5034fef8d0
Avoid a dangerous string to cstring conversion
2022-06-07 12:35:20 +03:00
tersec
7d3d339e73
rm TaintedString ( #43 )
2022-06-04 08:58:13 +02:00
Jordan Hrycaj
3509706517
Lazy JSON parser ( #42 )
...
* Proper error handling when parsed number exceeds uint64
details:
Returns an "errNonPortableInt" error
* need legacy flag for unit tests
* lazy numeric token parser
why:
Numeric data may have a custom format. In particular,numeric data may be
Uint256 which is not a JSON standard and might lead to an overflow.
details:
Numeric values are assigned a preliminary token type tkNumeric without
being fully parsed. This can be used to insert a custom parser.
Otherwise the value is parsed implicitly when querying/fetching the
token type.
+ tok: replaced by getter tok() resolving lazy stuff (if necessary)
+ tokKind: current type without auto-resolving
This lazy scheme could be extended to other custom types as long as
the first token letter determines the custom type.
* activate lazy parsing in reader
howto:
+ no code change if a custom reader refers to an existing reader
type FancyInt = distinct int
proc readValue(reader: var JsonReader, value: var FancyInt) =
value = reader.readValue(int).FancyInt
+ bespoke reader for cusom parsing
type FancyUint = distinct uint
proc readValue(reader: var JsonReader, value: var FancyUint) =
if reader.lexer.lazyTok == tkNumeric:
var accu: FancyUint
reader.lexer.customIntValueIt:
accu = accu * 10 + it.u256
value = accu
elif reader.lexer.tok == tkString:
value = reader.lexer.strVal.parseUint.FancyUint
...
reader.lexer.next
+ full code explanation at json_serialisation/reader.readValue()
* Add lazy parsing for customised string objects
why:
This allows parsing large or specialised strings without storing it
in the lexer state descriptor.
details:
Similar logic applies as for the cusomised number parser. For mostly
all practical cases, a DSL template is available serving as wrapper
around the character/byte item processor code.
* fix typo in unit test
2022-05-05 17:33:40 +01:00
Dustin Brody
074cd026e6
revert, just in case some action-at-a-distance thing is causing Unhandled exception: assignment to discriminant changes object branch; compile with -d:nimOldCaseObjects for a transition period [FieldError]
2022-04-07 10:51:02 +00:00
Dustin Brody
216c29ca60
rm obsolete/unused/unmaintained CI AppVeyor and Travis scripts
2022-04-07 10:37:43 +00:00
Zahary Karadjov
461fd03edb
Better default JsonReaderError.formatMsg implementation
2022-03-09 18:24:02 +02:00
Jacek Sieka
a12beabd2f
Revert "add missed exceptions ( #36 )" ( #39 )
...
This reverts commit 232710f5b2
.
2022-02-21 10:29:04 +01:00
jangko
ea965bbe00
silence spurious warning: 'ReaderType' is declared but not used
2022-02-18 22:57:58 +07:00
Jacek Sieka
cd044da00f
clean up imports/exports ( #31 )
2022-02-18 10:26:15 +01:00
Antonis Geralis
232710f5b2
add missed exceptions ( #36 )
...
* add missed exceptions
* Update json_serialization/reader.nim
Co-authored-by: Jacek Sieka <arnetheduck@gmail.com>
2022-02-18 10:24:20 +01:00
Ștefan Talpalaru
4b8f487d2d
CI: test with multiple Nim versions ( #35 )
2022-01-06 20:10:03 +01:00
Tanguy
010aa238cf
Enable styleCheck:usages
2021-12-15 13:17:38 +02:00
Kim De Mey
c5f0e2465e
Add gcsafe and raises annotations to the formatMsg methods ( #33 )
2021-11-18 15:24:59 +01:00
Zahary Karadjov
297496d703
NULL cstrings are encoded to JS null
2021-11-01 18:59:12 +02:00
Zahary Karadjov
4f3775ddf4
Add JsonReader.init(..., requireAllFields: bool)
2021-08-11 20:01:47 +03:00
Ștefan Talpalaru
652099a959
CI: refactor Nim compiler caching ( #28 )
2021-06-03 02:16:30 +02:00
Zahary Karadjov
fe8a82ca76
Adapt to the latest nim-serialization API
2021-03-19 04:13:55 +02:00
Zahary Karadjov
706eb5740e
Add support for serialization flavors
2021-03-18 13:01:06 +02:00
andri lim
7999d25225
Merge pull request #24 from status-im/github_action
...
add github action
2020-12-26 11:35:30 +07:00
jangko
5d36ea5900
fixes test
2020-12-24 16:32:59 +07:00
jangko
dd2a6d8ac3
add github action
2020-12-24 16:04:58 +07:00
Zahary Karadjov
cedf0c5f0c
Add a low-level API for controlling the state of the Writer when writing to the output stream manually
2020-11-27 19:42:33 +02:00
Zahary Karadjov
32f75d93b0
Add support for TaintedString
2020-11-12 21:00:10 +02:00
Zahary Karadjov
3b0c9eafa4
Bugfix: incorrect logic in the parsing of comments fails to detect EOF properly
2020-10-09 19:32:25 +03:00
Zahary Karadjov
1dccd4b2ef
Another readObjectFields convenience helper
2020-08-02 20:15:44 +03:00
Zahary Karadjov
f011bea54b
Add a helper for specifying enums types that must be serialized as strings
2020-08-02 20:15:13 +03:00
Zahary Karadjov
ec374f26ca
Break reader.readObject into smaller reusable pieces
2020-08-02 13:22:24 +03:00
Zahary Karadjov
9ca88fdcd4
Turn a potential assertion failure into a syntax error
2020-08-01 19:28:36 +03:00
Zahary Karadjov
d5eb9427b8
Serialization of JsonNode fields
2020-07-24 23:16:35 +03:00
Zahary Karadjov
25adda6f3f
Alternative implementation that doesn't require rewind points
2020-07-21 22:09:38 +03:00
Zahary Karadjov
4d8145c67b
WIP Deserialization of the JsonString literal fields
2020-07-17 23:58:02 +03:00
Zahary Karadjov
1cf51931f1
Implement forward-compatible deserialization
2020-06-30 22:11:56 +03:00
Zahary Karadjov
463a0cf1b7
Address review comments; Passing test suite
2020-06-22 17:42:50 +03:00
Zahary Karadjov
6e92113a06
Stricter error handling
2020-06-16 01:03:00 +03:00
Zahary Karadjov
c478b7bbba
Proper JSON serialization for IP addresses
2020-06-05 17:06:48 +03:00
Zahary Karadjov
4f2aa8b5cb
Make the JsonString type more accessible
2020-06-01 21:15:33 +03:00
Zahary Karadjov
8d4c31f7c2
Allow custom serializers to report unexpected values in the Json file
2020-05-30 22:40:17 +03:00
Zahary Karadjov
aa51f6fed1
Test case for the serializedFieldName pragma
...
The pragma was added in https://github.com/status-im/nim-serialization/pull/25
2020-05-20 13:53:21 +03:00