diff --git a/preserves.nimble b/preserves.nimble index 43737dc..f7ccdd6 100644 --- a/preserves.nimble +++ b/preserves.nimble @@ -1,6 +1,6 @@ # Package -version = "20221204" +version = "20221205" author = "Emery Hemingway" description = "data model and serialization format" license = "Unlicense" diff --git a/src/preserves/schemaparse.nim b/src/preserves/schemaparse.nim index 04c7e1a..728acc5 100644 --- a/src/preserves/schemaparse.nim +++ b/src/preserves/schemaparse.nim @@ -225,6 +225,9 @@ const parser = peg("Schema", p: ParseState): toSymbolLit $1, initRecord(toSymbol"tuple", toPreserve takeStackAfter())) pushStack n + else: + var n = initRecord(toSymbol"rec", takeStackAfter()) + pushStack n TuplePattern <- '[' * S * *(NamedPattern * S) * ']': @@ -294,7 +297,9 @@ proc parsePreservesSchema*(text: string; directory = getCurrentDir()): Schema = when isMainModule: import std/streams - let - scm = parsePreservesSchema(readAll stdin) - pr = toPreserve scm - stdout.newFileStream.write pr + let txt = readAll stdin + if txt != "": + let + scm = parsePreservesSchema(readAll stdin) + pr = toPreserve scm + stdout.newFileStream.write pr