diff --git a/dist/lin.lua b/dist/lin.lua index 85727c6..3d37d5b 100644 --- a/dist/lin.lua +++ b/dist/lin.lua @@ -6491,6 +6491,37 @@ lit.metastruct = { }, } +-- TODO +function lit.stringify(content) + if pandoc.utils.type(content) == "Inlines" then + return pandoc.utils.stringify(content:walk { + Quoted = function(quoted) + local quote = (quoted.quotetype == SingleQuoted and '"' or "'") + quoted = pandoc.utils.stringify(quoted.content) + return pandoc.Str(quote .. quoted .. quote) + end, + Inline = function(inline) + return pandoc.utils.stringify(inline) + end, + }) + else + return pandoc.utils.stringify(content) + end +end + +function lit.meta2table(meta) + for k, v in pairs(meta) do + if pandoc.utils.type(v) == "table" then + lit.meta2table(v) + else + v = lit.stringify(v) + -- print(k, v) + end + end + return meta +end +lit.test = lit.meta2table(pandoc.read(("src/locate.yaml"):read_text()).meta) + -- Messages for the user lit.msg = { ["INFO"] = { @@ -6613,6 +6644,7 @@ function lit.checkmetatype(type, meta, key) end end +-- TODO: has bug function lit.checkmetatable(table, meta, key) local mval = lit.getmetaval(meta, key) for _, pattern in pairs(table) do diff --git a/src/literate.lua b/src/literate.lua index 0345184..031d467 100644 --- a/src/literate.lua +++ b/src/literate.lua @@ -28,6 +28,37 @@ lit.metastruct = { }, } +-- TODO +function lit.stringify(content) + if pandoc.utils.type(content) == "Inlines" then + return pandoc.utils.stringify(content:walk { + Quoted = function(quoted) + local quote = (quoted.quotetype == SingleQuoted and '"' or "'") + quoted = pandoc.utils.stringify(quoted.content) + return pandoc.Str(quote .. quoted .. quote) + end, + Inline = function(inline) + return pandoc.utils.stringify(inline) + end, + }) + else + return pandoc.utils.stringify(content) + end +end + +function lit.meta2table(meta) + for k, v in pairs(meta) do + if pandoc.utils.type(v) == "table" then + lit.meta2table(v) + else + v = lit.stringify(v) + -- print(k, v) + end + end + return meta +end +lit.test = lit.meta2table(pandoc.read(("src/locate.yaml"):read_text()).meta) + -- Messages for the user lit.msg = { ["INFO"] = { @@ -150,6 +181,7 @@ function lit.checkmetatype(type, meta, key) end end +-- TODO: has bug function lit.checkmetatable(table, meta, key) local mval = lit.getmetaval(meta, key) for _, pattern in pairs(table) do diff --git a/src/locate.yaml b/src/locate.yaml new file mode 100644 index 0000000..13d7a92 --- /dev/null +++ b/src/locate.yaml @@ -0,0 +1,35 @@ +--- +INFO: + parsing: + en: Parsing:\n#1 + es: Realizando análisis sintáctico:\n#1 +WARNING: + foo: + en: true + es: 1 +ERROR: + invalid_key: + en: Invalid key '#1' with value '#2' + es: Clave '#1' inválida con valor '#2' + invalid_path: + en: Invalid path '#1' in key '#2' + es: Ruta '#1' inválida en clave '#2' + invalid_type: + en: Invalid type '#1' in key '#2' + es: Tipo '#1' inválido en clave '#2' + invalid_value: + en: Invalid value '#1' in key '#2' + es: Valor '#1' inválido en clave '#2' + no_key: + en: Key '#1' not found + es: Clave '#1' no encontrada + aborted: + en: Aborted due previous errors + es: Abortado debido a previos errores + yaml_empty: + en: Empty YAML + es: YAML vacío + yaml_invalid: + en: Invalid YAML + es: YAML inválido +...