Emery Hemingway
5c72729f23
xmlhooks: parse attributes
...
Parse attribute values to booleans and numbers. This isn't best
practices for handling XML (if there is such a thing) but it
reduces the internal representation and allows typed pattern
matching without further processing.
2022-10-25 12:18:31 -05:00
Emery Hemingway
62480318cc
BufferedDecoder: feed by pointer
2022-10-23 23:39:37 -05:00
Emery Hemingway
5fe041fa45
New BufferedDecoder object
2022-10-22 18:40:24 -05:00
Emery Hemingway
85e67603ed
Rewrite xmlhooks to match xml-infoset.prs
2022-10-20 14:19:24 -05:00
Emery Hemingway
f92cb4d8ba
Found a problem with C++
2022-10-18 17:31:20 -05:00
Emery Hemingway
918d4d3e2e
Fix encoding and decoding of embedded values
2022-10-16 15:32:09 -05:00
Emery Hemingway
5b6f673951
Convert Preserves sets to JSON arrays
...
A one way conversion but still useful.
2022-10-13 23:08:53 -05:00
Emery Hemingway
54ec2d439a
Allocate new TableRefs when necessary
2022-10-13 23:05:37 -05:00
Emery Hemingway
a97f1e8554
Fix schema includes
2022-09-04 13:15:52 -05:00
Emery Hemingway
8c0af37694
Use set[T] rather than HashSet[T] for enum sets
2022-08-30 11:45:22 -05:00
Emery Hemingway
895a8695d2
Use BiggestInt in generated code
2022-07-09 08:08:11 -05:00
Emery Hemingway
cc0472da3d
Add apply procedure
2022-06-25 16:19:42 -05:00
Emery Hemingway
abb39e02a5
I'm using that, sometimes
2022-06-12 23:05:35 -05:00
Emery Hemingway
5043d8595a
Set type conversions
2022-05-18 13:57:40 -05:00
Emery Hemingway
aaf5e7ce39
Remove old imports of parse module
2022-04-25 11:53:17 -05:00
Emery Hemingway
ddc26f0c71
Add pragma accessors
...
This library requires a forked macros module, so export accessors
that would prevent a downstream library from having the same
problems with std/macros.
2022-04-25 11:33:37 -05:00
Emery Hemingway
f32e783e0b
Unembed during fromPreserve
2022-04-22 00:28:36 -05:00
Emery Hemingway
a3c55238f5
Generate `data` fields for anonymous patterns
2022-03-19 09:13:23 -05:00
Emery Hemingway
e8d1bf2c57
Refactor mapEmbeds
2022-03-18 18:57:37 -05:00
Emery Hemingway
1dcad539f4
Move preserves/parse module into preserves
...
Some macros in preserves call `parsePreserves` so include that
proc implicitly.
2022-03-18 11:26:52 -05:00
Emery Hemingway
5408cb859a
Add `step` func as a no-effects substitue for `[]` proc
...
ehmry/xdg_open_ng#2
2022-03-18 10:08:39 -05:00
Emery Hemingway
a6b31247cf
Fix indentation bug
2022-03-14 14:28:37 -05:00
Emery Hemingway
5f746706b6
Add forked macros module
...
This one has a more premissive version of "hasCustomPragma".
2022-03-10 23:41:14 -06:00
Emery Hemingway
633cb0a3c4
Tweak fromPreserve for floats and objects
2022-03-10 23:41:14 -06:00
Emery Hemingway
8b52e3baf9
Index into compound types by Preserve keys
2022-03-10 23:41:13 -06:00
Emery Hemingway
db06066e17
Trace to stderr, not stdout
...
This would interfer with stdio communications.
2022-03-08 15:22:49 -06:00
Emery Hemingway
3924e48deb
Distinct Symbol strings
...
More type buracracy makes schema conversion less lossy.
2022-02-20 09:23:49 -06:00
Emery Hemingway
486443a098
Remove submodule
2022-02-19 10:33:16 -06:00
Emery Hemingway
6c4cfa0885
Fix fromPreserve for distinct types
...
This is an example of why bypassing the type system with "when"
is dangerous.
2022-02-11 15:36:30 -06:00
Emery Hemingway
ba4d567791
Careful with those variable length tuples
2021-12-24 00:38:02 +01:00
Emery Hemingway
e25e06efba
Don't convert Table[string,string] to {symbol:string...:...}
...
Should not assume that table keys can be treated at symbols. This
also makes the resulting dictionary convertable to JSON.
2021-12-22 23:49:06 +01:00
Emery Hemingway
84b28ec55a
XML: use tuples rather than records for elements
2021-12-22 22:27:18 +01:00
Emery Hemingway
a466930e6e
Hack to unescape \n
2021-12-11 18:32:37 +00:00
Emery Hemingway
7d8c3b29c2
XML conversion
2021-12-06 23:57:47 +00:00
Emery Hemingway
200e0a0080
Do not leak null characters into the #"" encoding
2021-12-05 21:30:54 +00:00
Emery Hemingway
061898c3c2
Escaping fix in parser
2021-12-04 12:02:15 +00:00
Emery Hemingway
8a85ff5d52
Make enums generated for alt-types pure
2021-12-04 11:44:18 +00:00
Emery Hemingway
21052681b6
schemaparse: fix parsing of atoms to Preserves
2021-11-17 14:21:15 +00:00
Emery Hemingway
7cc0b050f4
Remove support for integers wider than 64 bits
...
I believe this was an unecessary compilication and it can be
restored later if necesary.
2021-11-12 12:25:28 +01:00
Emery Hemingway
e88c238a74
Schema text parsing
2021-11-11 21:57:04 +01:00
Emery Hemingway
6039a729c8
Do not intersperse commas in sequences
2021-11-07 17:30:42 +01:00
Emery Hemingway
1dc7991761
Schemas: use int rather than BiggestInt
...
Produce ints for integers in schemas. If int is too small then
the generated code can be hand-edited.
2021-11-03 19:18:07 +01:00
Emery Hemingway
ef4278062a
Encode short byte-strings as hex text
2021-11-03 19:17:33 +01:00
Emery Hemingway
c74f5c2c63
Spry: binary encoding and decoding
2021-11-03 19:17:04 +01:00
Emery Hemingway
a8373e37c6
Add Spry VM module
...
http://sprylang.se/
2021-11-01 10:35:14 +01:00
Emery Hemingway
29d7352a23
Assert upreservable pragma at runtime
...
This makes the compiler less pedantic.
2021-10-25 21:36:57 +02:00
Emery Hemingway
d1be46de49
Equality across different embedded types
2021-10-25 21:36:57 +02:00
Emery Hemingway
0387cbc7eb
Update documentation
2021-10-25 21:36:57 +02:00
Emery Hemingway
ae5f4b78ac
Adjust stringification
2021-10-25 21:36:45 +02:00
Emery Hemingway
bc9568d6bd
Add unembed routine
2021-10-25 21:36:45 +02:00
Emery Hemingway
a03a188bc2
fromPreserve: fix conversion of literals in tuples
2021-10-25 21:36:45 +02:00
Emery Hemingway
cbf27a0ee0
schema: fix missing literals in tuples
2021-10-25 21:36:45 +02:00
Emery Hemingway
ba45f80087
schema: embedded type required for toPreserve inside `$`
2021-10-25 21:36:45 +02:00
Emery Hemingway
cca512c9df
mapEmbeds for Preserve[void] to Preserve[E]
2021-10-25 21:36:45 +02:00
Emery Hemingway
b6275a241b
Schema: do not overload `$` or encode for Preserve types
2021-10-20 13:59:48 +02:00
Emery Hemingway
5250707f0e
Schema: make all Preserves embeddable
2021-10-18 12:12:33 +02:00
Emery Hemingway
171502f1d2
Schemas: seperate procs for unembeddables
2021-10-18 12:12:33 +02:00
Emery Hemingway
54c28c90ce
Mark a preserves template as used
2021-10-18 12:12:33 +02:00
Emery Hemingway
30a9d55aac
Fix schema import, normalize version
2021-10-17 14:22:41 +02:00
Emery Hemingway
99201de724
Schemas: use canonical meta-schema
2021-10-17 13:26:05 +02:00
Emery Hemingway
220577c8a0
New pragmas for toPreserve and fromPreserve
2021-10-17 11:38:45 +02:00
Emery Hemingway
2dd63903f0
Remove records module
...
Redundant with toPreserve and fromPreserve.
2021-09-25 13:57:58 +02:00
Emery Hemingway
42a9b26458
Embeddable Preserves
...
Make Preserve a generic type that can embed a native Nim type.
Generate generic implementations from schemas and discard
embeddedType.
2021-09-25 13:47:05 +02:00
Emery Hemingway
75c176ddb6
New constructors for record and sequence
2021-09-23 14:29:31 +02:00
Emery Hemingway
cd5dd7dd03
Add [] operator for dictionaries
2021-09-23 14:29:16 +02:00
Emery Hemingway
9f2921d0ca
Add is* checks
2021-09-23 13:32:04 +02:00
Emery Hemingway
e7af40ce2f
Export the variant members
2021-09-23 13:31:10 +02:00
Emery Hemingway
2451b441ad
Use dedicated types for record alternates
2021-09-22 14:30:50 +02:00
Emery Hemingway
ea50b05bad
Some types implicitly handled by toPreserve
2021-09-21 09:38:37 +02:00
Emery Hemingway
6b7a23fecf
Compiler compatibility tweaks
2021-09-21 09:30:40 +02:00
Emery Hemingway
dae5dd9751
Fix toPreserveHook for Table[A, B]
...
The toPreserveHook for tables was not compiling, which would fall
back to the behavior for preserving objects, which would not work
for tables.
2021-09-21 08:00:33 +02:00
Emery Hemingway
7edc05a35d
Refactor preserves_schema_nim
2021-09-21 08:00:33 +02:00
Emery Hemingway
efd5cf62df
Optimize allocation of sequences from toPreserve
2021-09-21 08:00:33 +02:00
Emery Hemingway
fc53b47ec6
Add megaType procs
2021-09-21 08:00:33 +02:00
Emery Hemingway
c407179540
Remove dead code
2021-09-21 08:00:33 +02:00
Emery Hemingway
098f067ffb
Quote schema comments
2021-09-21 08:00:33 +02:00
Emery Hemingway
efbf9af7ba
TableRef
2021-09-21 08:00:33 +02:00
Emery Hemingway
a7acd971d2
Fix symbol printing in schemas
2021-09-21 08:00:33 +02:00
Emery Hemingway
df53ff0d41
Fix printing of schema symbols
2021-09-21 08:00:33 +02:00
Emery Hemingway
23d34d1468
Emit a discard for empty case…of branch fields
2021-09-21 08:00:33 +02:00
Emery Hemingway
00bb9de55f
Less identifier mangling
2021-09-21 08:00:33 +02:00
Emery Hemingway
41675a2daf
Generate procs for constants
2021-09-21 08:00:33 +02:00
Emery Hemingway
58a9f5dde4
quiet down
2021-09-21 08:00:33 +02:00
Emery Hemingway
de50a0a41d
Import tables when necessary
2021-09-21 08:00:33 +02:00
Emery Hemingway
d43f9ca926
Quote proc parameters
2021-09-21 08:00:33 +02:00
Emery Hemingway
c942e79a0a
Make objects ref objects to support recursion
2021-09-21 08:00:33 +02:00
Emery Hemingway
e556fa26e0
Do not generate object fields for constants
2021-09-21 08:00:33 +02:00
Emery Hemingway
b940a458a1
Write name of output to stdout
2021-09-21 08:00:33 +02:00
Emery Hemingway
cef2116e96
Module scoping for embedded type and refs
2021-09-21 08:00:33 +02:00
Emery Hemingway
2d64dae0dd
Collect imports from schema
2021-09-21 08:00:33 +02:00
Emery Hemingway
460e7596f4
Make all type declarations in title-case
2021-09-21 08:00:33 +02:00
Emery Hemingway
e322482d0a
no preserveTypeOf
2021-09-21 08:00:33 +02:00
Emery Hemingway
2016974e95
Replace prsFoo() with foo()
2021-09-21 08:00:33 +02:00
Emery Hemingway
cb4f4df4f1
No date comment
2021-09-21 08:00:33 +02:00
Emery Hemingway
3c39f54962
Stop using preserveTypeOf
2021-09-08 11:16:42 +02:00
Emery Hemingway
c9c7744531
Do not emit (Preserve | Preserve) types
2021-09-08 11:16:42 +02:00
Emery Hemingway
d9cf6dbab4
Fix definition of empty records
2021-09-08 11:16:42 +02:00
Emery Hemingway
13854f88c7
Do not export case…of labels
2021-09-08 11:16:42 +02:00
Emery Hemingway
dffd52965b
Add some utilities
2021-09-08 11:16:42 +02:00
Emery Hemingway
e6d07ba924
Revert Preserve to a concrete type
...
A generic type with an embedded type is too much hassle with the
type system. Add an "embedded" flag on "Preserve" to mark if a
value should be considered as embedded.
2021-09-08 11:16:40 +02:00
Emery Hemingway
9ed18c279c
Release 1.0.0
2021-09-01 13:32:26 +02:00
Emery Hemingway
53642eef83
Add preserves_schema_nim utilty
...
A utility for generating code from Preserves schema.
2021-09-01 11:35:44 +02:00
Emery Hemingway
91bf449f6b
Unlicense
2021-08-31 17:00:00 +02:00
Emery Hemingway
d671a2ac22
Include support in schemas
2021-08-31 16:49:50 +02:00
Emery Hemingway
5ca277b8c0
Embedded types
2021-08-31 16:48:55 +02:00
Emery Hemingway
41b1328e4e
Move JSON specifics to preserves/jsonhooks
2021-08-28 11:31:58 +02:00
Emery Hemingway
5aaac95ca1
Remove % operator
...
Use toPreserves, % is not compatible with a parameterized Preserve
type.
2021-08-28 11:25:04 +02:00
Emery Hemingway
338a468466
Schemas: allow CompoundPatterns in AltPatterns
2021-08-28 11:25:04 +02:00
Emery Hemingway
d67482fad8
Do not throw from preserveTo or fromPreserve
...
Return an Option or boolean value. This makes it cheap to test if
a Preserves value is convertable to a Nim type.
2021-08-27 22:35:37 +02:00
Emery Hemingway
8341360741
Restore record pragma handling
2021-08-24 18:00:58 +02:00
Emery Hemingway
f6a9d27ca2
Drop '=' when parsing alt symbols
2021-08-24 18:00:58 +02:00
Emery Hemingway
1644736625
Support '.' in Ref
2021-08-24 18:00:58 +02:00
Emery Hemingway
c449d41759
Drop bad assertions, improve error message
2021-08-24 18:00:58 +02:00
Emery Hemingway
50b71b8651
Schemas: fix embedded pattern
2021-08-24 18:00:58 +02:00
Emery Hemingway
16c8ce62ff
Move some stuff around
2021-08-24 18:00:57 +02:00
Emery Hemingway
7359f1cac2
Schemas
2021-08-24 18:00:03 +02:00
Emery Hemingway
dd0937f70b
Dereference distinct types in fromPreserves
2021-08-11 13:06:19 +02:00
Emery Hemingway
84e9d00e1d
Initialize bigint
2021-08-11 13:06:19 +02:00
Emery Hemingway
26faea8d91
fix `$` for records
2021-08-11 13:06:19 +02:00
Emery Hemingway
99b0ddbb13
Textual parser
2021-08-11 13:06:16 +02:00
Emery Hemingway
30bfaa8c00
Rewrite some of `%`
2021-07-16 19:13:10 +02:00
Emery Hemingway
713f9d00d3
Add `%` operator
...
Reuse the `%` operator from json module for consistency.
2021-07-09 16:56:09 +02:00
Emery Hemingway
f0c1ebe85e
Add isNil for Preserve
...
Not a ref type, but add `isNil` for checking if a Perserve is
zero-initialized.
2021-07-09 12:24:51 +02:00
Emery Hemingway
8985060055
Add items iterator
...
Iterates over all child items in a Preserve.
2021-07-09 12:24:29 +02:00
Emery Hemingway
be8ad62f99
Infix operator % for constructing records
2021-07-07 12:50:57 +02:00
Emery Hemingway
24d974b91f
Get RecordClass of tuple types
2021-07-01 12:48:07 +02:00
Emery Hemingway
2eda0fc9a7
Add {.unpreservable.} pragma
2021-07-01 12:47:30 +02:00
Emery Hemingway
376c0e04c5
Add a {.record: "label".} pragma
...
A pragma for serializing tuples and objects to or from records.
2021-06-28 17:39:27 +02:00
Emery Hemingway
5aa5ccbd09
Move utilities for records to a seperate module
2021-06-28 17:38:41 +02:00
Emery Hemingway
dddf82eedd
Store record labels behind fields
2021-06-24 17:33:02 +02:00
Emery Hemingway
6ebb752690
Store embedded values as pointers
...
Reduce Preserve from a generic to a concrete type.
2021-06-15 18:51:13 +02:00
Emery Hemingway
32ce6a71fe
Implement set with HashSet rather than CountTable
...
I didn't know HashSet was a thing.
2021-06-15 16:02:14 +02:00
Emery Hemingway
db3e302067
setItems iterator
2021-06-10 12:08:34 +02:00
Emery Hemingway
b099475d25
Record utilities
2021-06-08 14:15:12 +02:00
Emery Hemingway
b5940cfe22
Symbol constructor
2021-06-08 12:22:31 +02:00
Emery Hemingway
bfb0825721
Bigint fixes
...
* Native and big integer comparison
* Refuse to serialize negative big ints for now
2021-06-04 11:41:34 +02:00
Emery Hemingway
d63dfad954
Initial commit
2021-06-02 15:51:36 +02:00