From 3606ce545994b26c5c834aca7e4dd61789ed850e Mon Sep 17 00:00:00 2001 From: Emery Hemingway Date: Mon, 25 Dec 2023 21:47:56 +0200 Subject: [PATCH] Schema: parse the embeddedType --- src/preserves/preserves_schemac.nim | 2 +- src/preserves/schemaparse.nim | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/preserves/preserves_schemac.nim b/src/preserves/preserves_schemac.nim index f103f5a..37bf678 100644 --- a/src/preserves/preserves_schemac.nim +++ b/src/preserves/preserves_schemac.nim @@ -47,7 +47,7 @@ when isMainModule: scm = parsePreservesSchema(readFile(inputPath / filePath)) path: ModulePath for e in split(dirPath, '/'): - add(path, Symbol e) + if e != "": add(path, Symbol e) add(path, Symbol fileName) bundle.modules[path] = scm if bundle.modules.len == 0: diff --git a/src/preserves/schemaparse.nim b/src/preserves/schemaparse.nim index 0b2a284..68b3312 100644 --- a/src/preserves/schemaparse.nim +++ b/src/preserves/schemaparse.nim @@ -70,7 +70,12 @@ const parser = peg("Schema", p: ParseState): Version <- "version" * S * >(*Digit): if parseInt($1) != 1: fail() - EmbeddedTypeName <- "embeddedType" * S * >("#f" | Ref) + EmbeddedTypeName <- "embeddedType" * S * ("#f" | Ref): + if capture.len == 1: + var r = popStack() + p.schema.embeddedType = + EmbeddedTypeName(orKind: EmbeddedTypeNameKind.Ref) + validate p.schema.embeddedType.`ref`.fromPreserve(r) Include <- "include" * S * '"' * >(+Preserves.char) * '"': var path: string