Commit Graph

305 Commits

Author SHA1 Message Date
Emery Hemingway d3a236bb92 UTF-16 surrogate pair parsing 2024-01-01 17:32:52 +02:00
Emery Hemingway 8a70cd0987 Fix float parsing 2024-01-01 17:32:52 +02:00
Emery Hemingway e43371da87 Adjust UTF-16 parsing 2024-01-01 17:32:52 +02:00
Emery Hemingway 44f98163d9 Unify string and symbol escaping 2024-01-01 17:32:52 +02:00
Emery Hemingway 32ed35adce Unescape symbols during parse 2024-01-01 17:32:52 +02:00
Emery Hemingway c622d39c3f Parse require delimiters after bools, numbers, symbols 2024-01-01 17:32:52 +02:00
Emery Hemingway c9c231914b Looser symbol parsing 2024-01-01 17:32:52 +02:00
Emery Hemingway 10ceb9ec88 Allow float suffix of 'f' or 'F' 2024-01-01 17:32:52 +02:00
Emery Hemingway cf5efb7d86 Make NaN equal NaN 2024-01-01 17:32:52 +02:00
Emery Hemingway 75916ea0dd Convert awkard floats to hex 2024-01-01 17:32:52 +02:00
Emery Hemingway a2024f4111 Parsing: accept '+' prefix on numbers 2024-01-01 17:32:52 +02:00
Emery Hemingway cedf25d1c3 Split pkSignedInteger into pkRegister and pkBigInt 2024-01-01 17:32:50 +02:00
Emery Hemingway 558a1a862a PEG: tweak commas and symbols 2023-12-25 10:08:10 +02:00
Emery Hemingway dbe9f3566f Add raw floats and doubles to parser 2023-12-25 10:08:10 +02:00
Emery Hemingway 82631b1a01 Stop running nim doc 2023-12-25 10:08:10 +02:00
Emery Hemingway adadcc181a Move some of preserves implementation to preserves/private 2023-12-25 10:08:03 +02:00
Emery Hemingway 126365d164 Remove superfluous PEG whitspace rules 2023-12-24 21:24:02 +02:00
Emery Hemingway 5267b7dc13 Generate graphs for PEGs 2023-12-24 21:24:02 +02:00
Emery Hemingway c1eb0a513a schemac: Bundle is now a ref obj 2023-12-24 21:24:02 +02:00
Emery Hemingway 40f20a3ca8 schema: extract And clauses 2023-12-24 21:24:02 +02:00
Emery Hemingway 218ca7a669 schemaparse: parse them commas 2023-12-24 21:24:02 +02:00
Emery Hemingway c83b78aef7 Replace comment marker ; with # 2023-12-24 21:24:02 +02:00
Emery Hemingway 27a5ace1ea Fix decoding of annotations 2023-12-24 21:12:30 +02:00
Emery Hemingway 7187a45f9c Hash nil embedded pointers 2023-11-02 13:33:52 +00:00
Emery Hemingway 0c4ef8269f Add pop for dictionaries 2023-11-02 13:33:47 +00:00
Emery Hemingway ca5d44ed32 Step with mulitple indexes 2023-10-28 00:24:27 +01:00
Emery Hemingway 6e0834316f Fix code-gen for embedded literals 2023-10-26 15:32:35 +01:00
Emery Hemingway 71acd4c951 Regenerate schema 2023-10-26 15:29:28 +01:00
Emery Hemingway edece399be Support standard Preserves text encoding as well as JSON 2023-10-21 18:40:14 +01:00
Emery Hemingway 8362a09ec0 Make text rendering JSON compatible 2023-10-20 19:57:09 +01:00
Emery Hemingway a2dc5becc0 Update binary encoding to Preserves-0.990 2023-10-19 18:14:14 +01:00
Emery Hemingway c915accf7d Zero length byte sequences are fine 2023-09-14 10:30:19 +02:00
Emery Hemingway 53981fd70a Fix post-return compilation warning 2023-09-13 09:38:11 +02:00
Emery Hemingway ab3bd12c11 Remove bad varint check 2023-09-13 09:38:06 +02:00
Emery Hemingway 15390dd48e Suppport preservesTupleTail pragma within objects 2023-09-12 11:35:09 +02:00
Emery Hemingway 8b3b182ce7 Do not raise ValueError at early end of binary stream 2023-08-25 19:28:48 +01:00
Emery Hemingway 52faec6e43 Fix varint encoding and decoding 2023-08-25 19:28:48 +01:00
Emery Hemingway 5e2cd329f6 Make apply gcsafe 2023-08-17 14:39:39 +01:00
Emery Hemingway 57f9984007 preserves_schema_nim: add acyclic pragmas 2023-08-16 08:33:11 +01:00
Emery Hemingway ec77872467 Port preserves_schema_nim to Nim-2.0.0 2023-08-16 08:33:11 +01:00
Emery Hemingway b563de9ac4 Remove threads and gcsafe where parsing is used 2023-08-16 08:33:11 +01:00
Emery Hemingway e65dc2271f Preserve JSON object keys as symbols 2023-08-01 11:09:29 +01:00
Emery Hemingway 5fa72cd25b Be more consistent about sorting dictionary keys 2023-07-23 08:27:28 +01:00
Emery Hemingway 335dcd2987 Tweak type walking in private/macros 2023-07-23 08:26:35 +01:00
Emery Hemingway 6008b0ba25 Tidy imports 2023-07-20 23:17:41 +01:00
Emery Hemingway e6868fabd2 Do not convert string to string 2023-07-20 20:20:36 +01:00
Emery Hemingway 81d04290a5 Use new delete(…) 2023-07-20 19:54:01 +01:00
Emery Hemingway 47e7851beb Never convert Preserves symbols to Nim strings! 2023-07-20 18:26:29 +01:00
Emery Hemingway 9fa6685071 Add escaping to $ operator for Symbol 2023-06-12 21:01:26 +01:00
Emery Hemingway 10d20600bf Escape zero-length Symbols 2023-06-11 21:35:28 +01:00
Emery Hemingway acdfd3c560 Permit fromPreserve for subsets of dictionaries 2023-06-11 21:35:28 +01:00
Emery Hemingway c087294b23 schema: sort dictionary fields by key
Size of the value is a compelling alternative but cannot be
inferred at code generation time.
2023-06-11 21:35:28 +01:00
Emery Hemingway fa5441bd01 Cannonicalize values at toPreserve 2023-06-11 21:35:28 +01:00
Emery Hemingway a7a90097a8 Add sort and cannonicalize 2023-06-11 21:33:41 +01:00
Emery Hemingway 96879da08c schema: do not deref atomic types 2023-06-07 11:59:50 +01:00
Emery Hemingway 0e3824fc5d schema: import std/sets when neccessary 2023-06-07 11:00:24 +01:00
Emery Hemingway 0f697349cc Add isInteger and isString procs for testing against values 2023-05-30 13:11:33 +01:00
Emery Hemingway c500e99b95 Fix some decoder defects 2023-05-20 13:53:21 +01:00
Emery Hemingway 03876850e5 schema: use Preserve[E] for records without literal labels 2023-05-17 09:12:08 +01:00
Emery Hemingway b3f40347e8 Regenerate schema module 2023-05-16 23:06:52 +01:00
Emery Hemingway 7718227662 Add step proc for symbols 2023-05-14 22:57:12 +01:00
Emery Hemingway eeef9860cf schema: don't override $ proc for Preserves[E] types 2023-05-14 22:55:27 +01:00
Emery Hemingway b7406cd6f7 Add preserves/datehooks for handling dates and times 2023-05-12 09:38:01 +01:00
Emery Hemingway b9d8275624 schema: emit "tuple[]" for literal object fields 2023-05-04 10:55:09 +01:00
Emery Hemingway cd2dde6d71 preserves_schema_nim: use field0,1,..N for anonymous fields 2023-05-03 16:03:43 +01:00
Emery Hemingway 67b470078c Revert "preserves_schema_nim: declare literal fields as void"
This reverts commit 30c330cecf.
2023-04-30 09:57:45 +01:00
Emery Hemingway 305edff213 Make toPreserve warning more explicit 2023-04-28 23:59:47 +01:00
Emery Hemingway 30c330cecf preserves_schema_nim: declare literal fields as void 2023-04-28 23:58:48 +01:00
Emery Hemingway 335d1b61cc Move jsonhooks check to runnableExamples 2023-04-10 17:51:14 -05:00
Emery Hemingway 30dbed4aa9 Allow for an unlimited DecodeBuffer size 2023-04-03 17:04:12 -05:00
Emery Hemingway ea7225e3b5 Add toDictionary procedure 2023-04-03 17:03:56 -05:00
Emery Hemingway 1a0cb2be5c Cleanup preserves_schema_nim 2023-04-01 12:33:28 -05:00
Emery Hemingway 466a8d3af4 Add initSequenceOfCap proc 2023-03-29 17:33:39 -05:00
Emery Hemingway 71b6d4c017 Rework the initX[E]() procs to initX(E = void) 2023-03-29 17:32:54 -05:00
Emery Hemingway 5d3f7b94a3 Add isRecord(…) with arity descriminator 2023-03-29 16:47:54 -05:00
Emery Hemingway 786342c39b Cannot print a void value 2023-03-29 16:47:47 -05:00
Emery Hemingway b38b85a8f1 Catch IOError at Preserves decoder 2023-03-22 11:21:46 -05:00
Emery Hemingway 8ff65486ff preserves_schema_nim: use "E" as a default emebedding ident 2023-03-01 20:58:17 -06:00
Emery Hemingway 6b965c5c0e Only catch ValueError during decode 2023-03-01 20:58:17 -06:00
Emery Hemingway dab8f11b9b Serialize dummy text for embeds 2023-03-01 20:58:17 -06:00
Emery Hemingway 075627709f preserves_schema_nim: recursively search dicts for embedding 2023-03-01 20:58:17 -06:00
Emery Hemingway a130079162 preserves_schema_nim: code formatting 2023-03-01 12:50:33 -06:00
Emery Hemingway 3a6dfc0349 preserves_schema_nim: be more careful about type parameters 2023-03-01 12:49:21 -06:00
Emery Hemingway 10682883a4 preserves_schema_nim: detect schema self references
Do not add a schema module as an import to itself when a
definition refers to a type with a qualified module name that is
the same as the schema the definition occurs in.
2023-03-01 12:49:21 -06:00
Emery Hemingway 70655a959b preserves_schema_nim: emit Perserve type for And composites 2023-03-01 12:49:18 -06:00
Emery Hemingway 66a653a775 Fix expand of embedded Preserves 2022-12-13 22:05:05 -06:00
Emery Hemingway adec7fd7ad Rewrite tupfiles 2022-12-11 19:21:17 -06:00
Emery Hemingway d5909e4df0 Schema: a collection of breaking changes
- Process all modules in a bundle simultanously so that it can be
   determined if imported types are recursive or take a parameter
- Different rules for deciding when an object must be a ref
- Use Preserve[void] if there is no EmbededTypeName defined
- Put embeddeded types directly into other types without a
  Preserve[E] container
2022-12-10 13:32:36 -06:00
Emery Hemingway cc0703c343 Fix symbol escaping during conversion to text 2022-12-08 01:00:38 -06:00
Emery Hemingway 3dd112879d Enable tracing for non-POSIX platforms 2022-12-08 01:00:38 -06:00
Emery Hemingway 587c5274f8 Fix preserving of embedded type 2022-12-08 01:00:38 -06:00
Emery Hemingway 806c4118fc Trivially convert from Preserve[void] to Preserve[E] 2022-12-08 01:00:34 -06:00
Emery Hemingway 92834a8968 Add expand, contract for embedded conversions 2022-12-08 00:59:54 -06:00
Emery Hemingway c9268b2a5d Cannot embed a void value 2022-12-08 00:59:54 -06:00
Emery Hemingway c04fc181c8 private/macros: keep walking through bracket expressions 2022-12-08 00:59:53 -06:00
Emery Hemingway 7eea68edb4 Add warning when preserving fails 2022-12-06 22:30:28 -06:00
Emery Hemingway 60c5f03637 Add preservesEmbedded pragma 2022-12-06 22:30:28 -06:00
Emery Hemingway d3132391bd Fix Symbol usage in the spry module 2022-12-05 16:10:49 -06:00
Emery Hemingway f9bed998f1 Fix schemaparse for <rec …> records 2022-12-05 16:09:04 -06:00
Emery Hemingway 6d5acf324b schemac: tool for processing schemas 2022-12-05 16:04:52 -06:00