Check meta done
This commit is contained in:
parent
3b140b6953
commit
26a62a3f25
|
@ -6573,28 +6573,6 @@ local lit = {}
|
||||||
-- Status indicator
|
-- Status indicator
|
||||||
lit.status = true
|
lit.status = true
|
||||||
|
|
||||||
-- Valid metadata structure
|
|
||||||
lit.metastruct = {
|
|
||||||
["mandatory"] = {
|
|
||||||
-- Value as table == whole patterns to match
|
|
||||||
["id"] = {"%a[_%w]*"},
|
|
||||||
},
|
|
||||||
["optional"] = {
|
|
||||||
["lang"] = {"lua", "fennel", "python", "js", "ruby", "lisp", "graphviz"},
|
|
||||||
["cmd"] = {".+"},
|
|
||||||
-- Value as string == type to match
|
|
||||||
["args"] = "table",
|
|
||||||
["shift"] = "boolean",
|
|
||||||
["wipe"] = "boolean",
|
|
||||||
["typed"] = "boolean",
|
|
||||||
["link"] = "path",
|
|
||||||
["img"] = "path",
|
|
||||||
["alt"] = "string",
|
|
||||||
["dump"] = "path",
|
|
||||||
["quote"] = "boolean",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
-- Grammars
|
-- Grammars
|
||||||
function lit.g(name)
|
function lit.g(name)
|
||||||
|
|
||||||
|
@ -6650,9 +6628,9 @@ INFO:
|
||||||
en: "Skipping '#1': this check is not supported"
|
en: "Skipping '#1': this check is not supported"
|
||||||
es: "Skipping '#1': esta comprobación no está soportada"
|
es: "Skipping '#1': esta comprobación no está soportada"
|
||||||
WARNING:
|
WARNING:
|
||||||
foo:
|
ignore_lang:
|
||||||
en: bar
|
en: "Keys 'cmd' and 'lang' present: '#1' overrides '#2'"
|
||||||
es: baz
|
es: "Llaves 'cmd' y 'lang' presentes: '#1' sobrescribe '#2'"
|
||||||
ERROR:
|
ERROR:
|
||||||
invalid_key:
|
invalid_key:
|
||||||
en: Invalid key '#1'
|
en: Invalid key '#1'
|
||||||
|
@ -6728,6 +6706,69 @@ function lit.exam(doc)
|
||||||
|
|
||||||
-- Checks code block
|
-- Checks code block
|
||||||
local function check(parsed)
|
local function check(parsed)
|
||||||
|
|
||||||
|
-- Indicates if checks passes
|
||||||
|
local ispass = true
|
||||||
|
|
||||||
|
-- Valid metadata structure
|
||||||
|
local metastruct = {
|
||||||
|
["mandatory"] = {
|
||||||
|
-- Value as table == whole patterns to match
|
||||||
|
["id"] = {"%a[_%w]*"},
|
||||||
|
},
|
||||||
|
["optional"] = {
|
||||||
|
["lang"] = {
|
||||||
|
"lua", "fennel", "python", "js", "ruby", "lisp", "graphviz",
|
||||||
|
},
|
||||||
|
["cmd"] = {".+"},
|
||||||
|
-- Value as string == type to match
|
||||||
|
["args"] = "table",
|
||||||
|
["shift"] = "boolean",
|
||||||
|
["wipe"] = "boolean",
|
||||||
|
["typed"] = "boolean",
|
||||||
|
["link"] = "path",
|
||||||
|
["img"] = "path",
|
||||||
|
["alt"] = "string",
|
||||||
|
["dump"] = "path",
|
||||||
|
["quote"] = "boolean",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Language commands
|
||||||
|
local langcmds = {
|
||||||
|
["lua"] = {["int"] = "TODO"},
|
||||||
|
["fennel"] = {["int"] = "TODO"},
|
||||||
|
["python"] = {["ext"] = "TODO"},
|
||||||
|
["js"] = {["ext"] = "TODO"},
|
||||||
|
["ruby"] = {["ext"] = "TODO"},
|
||||||
|
["lisp"] = {["ext"] = "TODO"},
|
||||||
|
["graphviz"] = {["ext"] = "TODO"},
|
||||||
|
}
|
||||||
|
|
||||||
|
local function putserr(...)
|
||||||
|
lit.puts(...)
|
||||||
|
ispass = false
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Checks language and command
|
||||||
|
local function addeval(meta)
|
||||||
|
meta["eval"] = {}
|
||||||
|
if ispass then
|
||||||
|
if meta["lang"] and meta["cmd"] then
|
||||||
|
lit.puts("ignore_lang", meta["cmd"], meta["lang"])
|
||||||
|
meta["eval"] = {["ext"] = meta["cmd"]}
|
||||||
|
elseif not(meta["lang"]) and not(meta["cmd"])then
|
||||||
|
meta["lang"] = "lua"
|
||||||
|
meta["eval"] = langcmds["lua"]
|
||||||
|
elseif meta["lang"] and not(meta["cmd"]) then
|
||||||
|
meta["eval"] = langcmds[meta["lang"]]
|
||||||
|
elseif not(meta["lang"]) and meta["cmd"] then
|
||||||
|
meta["eval"] = {["ext"] = meta["cmd"]}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
print(meta["lang"], meta["eval"]["int"], meta["eval"]["ext"])
|
||||||
|
return meta
|
||||||
|
end
|
||||||
|
|
||||||
-- Checks for valid command
|
-- Checks for valid command
|
||||||
local function checkcmd(meta)
|
local function checkcmd(meta)
|
||||||
|
@ -6735,7 +6776,9 @@ function lit.exam(doc)
|
||||||
cmd = meta["cmd"]:split()[1]
|
cmd = meta["cmd"]:split()[1]
|
||||||
if os.isunix() then
|
if os.isunix() then
|
||||||
status = io.try("type", cmd)
|
status = io.try("type", cmd)
|
||||||
if not(status) then lit.puts("invalid_cmd", cmd) end
|
if not(status) then
|
||||||
|
putserr("invalid_cmd", cmd)
|
||||||
|
end
|
||||||
else
|
else
|
||||||
lit.puts("skip_check", "checkcmd")
|
lit.puts("skip_check", "checkcmd")
|
||||||
end
|
end
|
||||||
|
@ -6745,10 +6788,10 @@ function lit.exam(doc)
|
||||||
-- Checks for extra and unwanted metadata
|
-- Checks for extra and unwanted metadata
|
||||||
local function checkextra(meta)
|
local function checkextra(meta)
|
||||||
for key, val in pairs(meta) do
|
for key, val in pairs(meta) do
|
||||||
local missing1 = lit.metastruct["mandatory"][key] == nil
|
local missing1 = metastruct["mandatory"][key] == nil
|
||||||
local missing2 = lit.metastruct["optional"][key] == nil
|
local missing2 = metastruct["optional"][key] == nil
|
||||||
if missing1 and missing2 then
|
if missing1 and missing2 then
|
||||||
lit.puts("invalid_key", key)
|
putserr("invalid_key", key)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -6763,10 +6806,10 @@ function lit.exam(doc)
|
||||||
if type1 ~= type2 then
|
if type1 ~= type2 then
|
||||||
if type1 == "path" then
|
if type1 == "path" then
|
||||||
if not(pandoc.path.directory(val):isdir()) then
|
if not(pandoc.path.directory(val):isdir()) then
|
||||||
lit.puts("invalid_path", val, key)
|
putserr("invalid_path", val, key)
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
lit.puts("invalid_type", type2, key)
|
putserr("invalid_type", type2, key)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -6782,13 +6825,13 @@ function lit.exam(doc)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if not(err:isempty()) then
|
if not(err:isempty()) then
|
||||||
lit.puts("invalid_value", val, err)
|
putserr("invalid_value", val, err)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
for key, val in pairs(lit.metastruct[kind]) do
|
for key, val in pairs(metastruct[kind]) do
|
||||||
if meta[key] == nil and kind == "mandatory" then
|
if meta[key] == nil and kind == "mandatory" then
|
||||||
lit.puts("no_key", key)
|
putserr("no_key", key)
|
||||||
elseif meta[key] and type(val) == "table" then
|
elseif meta[key] and type(val) == "table" then
|
||||||
checkpattern(val, meta, key)
|
checkpattern(val, meta, key)
|
||||||
elseif meta[key] then
|
elseif meta[key] then
|
||||||
|
@ -6803,25 +6846,25 @@ function lit.exam(doc)
|
||||||
local meta = {}
|
local meta = {}
|
||||||
if isok and not(pandoc.utils.stringify(res.meta):isempty()) then
|
if isok and not(pandoc.utils.stringify(res.meta):isempty()) then
|
||||||
meta = pandoc.metatotable(res.meta)
|
meta = pandoc.metatotable(res.meta)
|
||||||
|
-- These 3 checks should
|
||||||
checkmeta(meta, "mandatory")
|
checkmeta(meta, "mandatory")
|
||||||
checkmeta(meta, "optional")
|
checkmeta(meta, "optional")
|
||||||
checkextra(meta)
|
checkextra(meta)
|
||||||
checkcmd(meta)
|
checkcmd(meta)
|
||||||
-- TODO: checks for
|
|
||||||
-- with lang and cmd (warn)
|
|
||||||
-- overrides (warn)
|
|
||||||
elseif isok and pandoc.utils.stringify(res.meta):isempty() then
|
elseif isok and pandoc.utils.stringify(res.meta):isempty() then
|
||||||
lit.puts("meta_empty")
|
putserr("meta_empty")
|
||||||
else
|
else
|
||||||
lit.puts("meta_invalid")
|
putserr("meta_invalid")
|
||||||
end
|
end
|
||||||
return meta
|
return addeval(meta)
|
||||||
end
|
end
|
||||||
|
|
||||||
lit.puts("checking", table.concat(parsed, ""):indent())
|
lit.puts("checking", table.concat(parsed, ""):indent())
|
||||||
local meta = parsemeta(parsed[1])
|
local meta = parsemeta(parsed[1])
|
||||||
-- TODO:
|
-- TODO:
|
||||||
-- meta["code"] = checkcode(parsed[2], meta)
|
-- meta["code"] = checkcode(parsed[2], meta)
|
||||||
|
-- TODO: checks for
|
||||||
|
-- overrides (warn)
|
||||||
-- return meta
|
-- return meta
|
||||||
return meta
|
return meta
|
||||||
end
|
end
|
||||||
|
|
118
src/literate.lua
118
src/literate.lua
|
@ -6,28 +6,6 @@ local lit = {}
|
||||||
-- Status indicator
|
-- Status indicator
|
||||||
lit.status = true
|
lit.status = true
|
||||||
|
|
||||||
-- Valid metadata structure
|
|
||||||
lit.metastruct = {
|
|
||||||
["mandatory"] = {
|
|
||||||
-- Value as table == whole patterns to match
|
|
||||||
["id"] = {"%a[_%w]*"},
|
|
||||||
},
|
|
||||||
["optional"] = {
|
|
||||||
["lang"] = {"lua", "fennel", "python", "js", "ruby", "lisp", "graphviz"},
|
|
||||||
["cmd"] = {".+"},
|
|
||||||
-- Value as string == type to match
|
|
||||||
["args"] = "table",
|
|
||||||
["shift"] = "boolean",
|
|
||||||
["wipe"] = "boolean",
|
|
||||||
["typed"] = "boolean",
|
|
||||||
["link"] = "path",
|
|
||||||
["img"] = "path",
|
|
||||||
["alt"] = "string",
|
|
||||||
["dump"] = "path",
|
|
||||||
["quote"] = "boolean",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
-- Grammars
|
-- Grammars
|
||||||
function lit.g(name)
|
function lit.g(name)
|
||||||
|
|
||||||
|
@ -120,6 +98,70 @@ function lit.exam(doc)
|
||||||
|
|
||||||
-- Checks code block
|
-- Checks code block
|
||||||
local function check(parsed)
|
local function check(parsed)
|
||||||
|
|
||||||
|
-- Indicates if checks passes
|
||||||
|
local ispass = true
|
||||||
|
|
||||||
|
-- Valid metadata structure
|
||||||
|
local metastruct = {
|
||||||
|
["mandatory"] = {
|
||||||
|
-- Value as table == whole patterns to match
|
||||||
|
["id"] = {"%a[_%w]*"},
|
||||||
|
},
|
||||||
|
["optional"] = {
|
||||||
|
["lang"] = {
|
||||||
|
"lua", "fennel", "python", "js", "ruby", "lisp", "graphviz",
|
||||||
|
},
|
||||||
|
["cmd"] = {".+"},
|
||||||
|
-- Value as string == type to match
|
||||||
|
["args"] = "table",
|
||||||
|
["shift"] = "boolean",
|
||||||
|
["wipe"] = "boolean",
|
||||||
|
["typed"] = "boolean",
|
||||||
|
["link"] = "path",
|
||||||
|
["img"] = "path",
|
||||||
|
["alt"] = "string",
|
||||||
|
["dump"] = "path",
|
||||||
|
["quote"] = "boolean",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Language commands
|
||||||
|
local langcmds = {
|
||||||
|
["lua"] = {["int"] = "TODO"},
|
||||||
|
["fennel"] = {["int"] = "TODO"},
|
||||||
|
["python"] = {["ext"] = "TODO"},
|
||||||
|
["js"] = {["ext"] = "TODO"},
|
||||||
|
["ruby"] = {["ext"] = "TODO"},
|
||||||
|
["lisp"] = {["ext"] = "TODO"},
|
||||||
|
["graphviz"] = {["ext"] = "TODO"},
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Prints error and does not pass the check
|
||||||
|
local function putserr(...)
|
||||||
|
lit.puts(...)
|
||||||
|
ispass = false
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Adds 'eval' key in meta
|
||||||
|
-- This keys indicates what to eval
|
||||||
|
local function addeval(meta)
|
||||||
|
meta["eval"] = {}
|
||||||
|
if ispass then
|
||||||
|
if meta["lang"] and meta["cmd"] then
|
||||||
|
lit.puts("ignore_lang", meta["cmd"], meta["lang"])
|
||||||
|
meta["eval"] = {["ext"] = meta["cmd"]}
|
||||||
|
elseif not(meta["lang"]) and not(meta["cmd"])then
|
||||||
|
meta["lang"] = "lua"
|
||||||
|
meta["eval"] = langcmds["lua"]
|
||||||
|
elseif meta["lang"] and not(meta["cmd"]) then
|
||||||
|
meta["eval"] = langcmds[meta["lang"]]
|
||||||
|
elseif not(meta["lang"]) and meta["cmd"] then
|
||||||
|
meta["eval"] = {["ext"] = meta["cmd"]}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return meta
|
||||||
|
end
|
||||||
|
|
||||||
-- Checks for valid command
|
-- Checks for valid command
|
||||||
local function checkcmd(meta)
|
local function checkcmd(meta)
|
||||||
|
@ -127,7 +169,9 @@ function lit.exam(doc)
|
||||||
cmd = meta["cmd"]:split()[1]
|
cmd = meta["cmd"]:split()[1]
|
||||||
if os.isunix() then
|
if os.isunix() then
|
||||||
status = io.try("type", cmd)
|
status = io.try("type", cmd)
|
||||||
if not(status) then lit.puts("invalid_cmd", cmd) end
|
if not(status) then
|
||||||
|
putserr("invalid_cmd", cmd)
|
||||||
|
end
|
||||||
else
|
else
|
||||||
lit.puts("skip_check", "checkcmd")
|
lit.puts("skip_check", "checkcmd")
|
||||||
end
|
end
|
||||||
|
@ -137,10 +181,10 @@ function lit.exam(doc)
|
||||||
-- Checks for extra and unwanted metadata
|
-- Checks for extra and unwanted metadata
|
||||||
local function checkextra(meta)
|
local function checkextra(meta)
|
||||||
for key, val in pairs(meta) do
|
for key, val in pairs(meta) do
|
||||||
local missing1 = lit.metastruct["mandatory"][key] == nil
|
local missing1 = metastruct["mandatory"][key] == nil
|
||||||
local missing2 = lit.metastruct["optional"][key] == nil
|
local missing2 = metastruct["optional"][key] == nil
|
||||||
if missing1 and missing2 then
|
if missing1 and missing2 then
|
||||||
lit.puts("invalid_key", key)
|
putserr("invalid_key", key)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -155,10 +199,10 @@ function lit.exam(doc)
|
||||||
if type1 ~= type2 then
|
if type1 ~= type2 then
|
||||||
if type1 == "path" then
|
if type1 == "path" then
|
||||||
if not(pandoc.path.directory(val):isdir()) then
|
if not(pandoc.path.directory(val):isdir()) then
|
||||||
lit.puts("invalid_path", val, key)
|
putserr("invalid_path", val, key)
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
lit.puts("invalid_type", type2, key)
|
putserr("invalid_type", type2, key)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -174,13 +218,13 @@ function lit.exam(doc)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if not(err:isempty()) then
|
if not(err:isempty()) then
|
||||||
lit.puts("invalid_value", val, err)
|
putserr("invalid_value", val, err)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
for key, val in pairs(lit.metastruct[kind]) do
|
for key, val in pairs(metastruct[kind]) do
|
||||||
if meta[key] == nil and kind == "mandatory" then
|
if meta[key] == nil and kind == "mandatory" then
|
||||||
lit.puts("no_key", key)
|
putserr("no_key", key)
|
||||||
elseif meta[key] and type(val) == "table" then
|
elseif meta[key] and type(val) == "table" then
|
||||||
checkpattern(val, meta, key)
|
checkpattern(val, meta, key)
|
||||||
elseif meta[key] then
|
elseif meta[key] then
|
||||||
|
@ -199,22 +243,19 @@ function lit.exam(doc)
|
||||||
checkmeta(meta, "optional")
|
checkmeta(meta, "optional")
|
||||||
checkextra(meta)
|
checkextra(meta)
|
||||||
checkcmd(meta)
|
checkcmd(meta)
|
||||||
-- TODO: checks for
|
|
||||||
-- with lang and cmd (warn)
|
|
||||||
-- overrides (warn)
|
|
||||||
elseif isok and pandoc.utils.stringify(res.meta):isempty() then
|
elseif isok and pandoc.utils.stringify(res.meta):isempty() then
|
||||||
lit.puts("meta_empty")
|
putserr("meta_empty")
|
||||||
else
|
else
|
||||||
lit.puts("meta_invalid")
|
putserr("meta_invalid")
|
||||||
end
|
end
|
||||||
return meta
|
return addeval(meta)
|
||||||
end
|
end
|
||||||
|
|
||||||
lit.puts("checking", table.concat(parsed, ""):indent())
|
lit.puts("checking", table.concat(parsed, ""):indent())
|
||||||
local meta = parsemeta(parsed[1])
|
local meta = parsemeta(parsed[1])
|
||||||
-- TODO:
|
-- TODO:
|
||||||
-- meta["code"] = checkcode(parsed[2], meta)
|
-- meta["code"] = checkcode(parsed[2], meta)
|
||||||
-- return meta
|
-- NOTE: if not valid code, return meta["eval"] = {}
|
||||||
return meta
|
return meta
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -222,6 +263,7 @@ function lit.exam(doc)
|
||||||
local checked = (parsed ~= nil and check(parsed) or parsed)
|
local checked = (parsed ~= nil and check(parsed) or parsed)
|
||||||
-- TODO:
|
-- TODO:
|
||||||
-- evaluated = eval(checked)
|
-- evaluated = eval(checked)
|
||||||
|
-- TODO: write evaluated and do overrides with warns
|
||||||
-- return evaluated
|
-- return evaluated
|
||||||
return codeblock
|
return codeblock
|
||||||
end
|
end
|
||||||
|
|
|
@ -7,9 +7,9 @@ INFO:
|
||||||
en: "Skipping '#1': this check is not supported"
|
en: "Skipping '#1': this check is not supported"
|
||||||
es: "Skipping '#1': esta comprobación no está soportada"
|
es: "Skipping '#1': esta comprobación no está soportada"
|
||||||
WARNING:
|
WARNING:
|
||||||
foo:
|
ignore_lang:
|
||||||
en: bar
|
en: "Keys 'cmd' and 'lang' present: '#1' overrides '#2'"
|
||||||
es: baz
|
es: "Llaves 'cmd' y 'lang' presentes: '#1' sobrescribe '#2'"
|
||||||
ERROR:
|
ERROR:
|
||||||
invalid_key:
|
invalid_key:
|
||||||
en: Invalid key '#1'
|
en: Invalid key '#1'
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
{"pandoc-api-version":[1,23],"meta":{},"blocks":[{"t":"Header","c":[1,["block-override",[],[]],[{"t":"Str","c":"Block"},{"t":"Space"},{"t":"Str","c":"Override"}]]},{"t":"CodeBlock","c":[["",[],[]],"---\nid: fn1\n...\n1 + 2 + 3"]},{"t":"Para","c":[{"t":"Str","c":"Override:"}]},{"t":"CodeBlock","c":[["",[],[]],"---\nid: fn1\n...\n4 + 5 + 6"]},{"t":"Header","c":[1,["block-with-unused-argument",[],[]],[{"t":"Str","c":"Block"},{"t":"Space"},{"t":"Str","c":"with"},{"t":"Space"},{"t":"Str","c":"Unused"},{"t":"Space"},{"t":"Str","c":"Argument"}]]},{"t":"CodeBlock","c":[["",[],[]],"---\nid: fn3\nargs:\n a: 1\n...\n7 + 8 + 9"]},{"t":"Header","c":[1,["block-with-language-and-command",[],[]],[{"t":"Str","c":"Block"},{"t":"Space"},{"t":"Str","c":"with"},{"t":"Space"},{"t":"Str","c":"Language"},{"t":"Space"},{"t":"Str","c":"and"},{"t":"Space"},{"t":"Str","c":"Command"}]]},{"t":"CodeBlock","c":[["",[],[]],"---\nid: fn4\nlang: python\ncmd: python -E -X utf8\nargs:\n n: 2\n...\n#n * #n"]},{"t":"Header","c":[1,["block-with-unknown-language",[],[]],[{"t":"Str","c":"Block"},{"t":"Space"},{"t":"Str","c":"with"},{"t":"Space"},{"t":"Str","c":"Unknown"},{"t":"Space"},{"t":"Str","c":"Language"}]]},{"t":"CodeBlock","c":[["",[],[]],"---\nid: fn5\n...\n\"Lang becomes cmd.\""]}]}
|
{"pandoc-api-version":[1,23],"meta":{},"blocks":[{"t":"Header","c":[1,["block-override",[],[]],[{"t":"Str","c":"Block"},{"t":"Space"},{"t":"Str","c":"Override"}]]},{"t":"CodeBlock","c":[["",[],[]],"---\nid: fn1\n...\n1 + 1"]},{"t":"Para","c":[{"t":"Str","c":"Override:"}]},{"t":"CodeBlock","c":[["",[],[]],"---\nid: fn1\n...\n1 + 2"]},{"t":"Header","c":[1,["block-with-language-and-command",[],[]],[{"t":"Str","c":"Block"},{"t":"Space"},{"t":"Str","c":"with"},{"t":"Space"},{"t":"Str","c":"Language"},{"t":"Space"},{"t":"Str","c":"and"},{"t":"Space"},{"t":"Str","c":"Command"}]]},{"t":"CodeBlock","c":[["",[],[]],"---\nid: fn4\nlang: python\ncmd: python -E -X utf8\n...\n1 + 1"]},{"t":"Header","c":[1,["block-with-unused-argument",[],[]],[{"t":"Str","c":"Block"},{"t":"Space"},{"t":"Str","c":"with"},{"t":"Space"},{"t":"Str","c":"Unused"},{"t":"Space"},{"t":"Str","c":"Argument"}]]},{"t":"CodeBlock","c":[["",[],[]],"---\nid: fn3\nargs:\n a: 1\n...\n1 + 1"]}]}
|
||||||
|
|
Loading…
Reference in New Issue