From f9bed998f11cc2fe97c601d711165cc8716dc59f Mon Sep 17 00:00:00 2001 From: Emery Hemingway Date: Mon, 5 Dec 2022 16:09:04 -0600 Subject: [PATCH] =?UTF-8?q?Fix=20schemaparse=20for=20=20r?= =?UTF-8?q?ecords?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- preserves.nimble | 2 +- src/preserves/schemaparse.nim | 13 +++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) 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