1 local markdown_it={} |
1 local markdown_it={} |
2 |
2 |
3 local io = require('io') |
3 local io = require('io') |
4 local os = require('os') |
4 local os = require('os') |
|
5 local path = require('mypath') |
|
6 local lfs = require('lfs') |
|
7 |
|
8 function markdown_it.katex_config(env) |
|
9 katex_config = path.join(env.paths.tmpl, "katex_config.json") |
|
10 if lfs.attributes(katex_config) then |
|
11 return katex_config |
|
12 else |
|
13 return nil |
|
14 end |
|
15 end |
5 |
16 |
6 function markdown_it.markdown(str, env) |
17 function markdown_it.markdown(str, env) |
7 -- Lua doesn't have bidirectional pipes without the posix library. |
18 -- Lua doesn't have bidirectional pipes without the posix library. |
8 -- Keep things and compatible and use temporary files. |
19 -- Keep things and compatible and use temporary files. |
9 tmpname = os.tmpname() |
20 tmpname = os.tmpname() |
10 file = io.open(tmpname, 'w') |
21 file = io.open(tmpname, 'w') |
11 file:write(str) |
22 file:write(str) |
12 cmd = string.format("node '%s/markdown_it.js' '%s'", |
23 cmd = string.format("node '%s/markdown_it.js' '%s'", |
13 env.paths.lgen_location, |
24 env.paths.lgen_location, |
14 tmpname) |
25 tmpname) |
|
26 -- Provide TEMPLATE_PATH/katex_config.json if it exists |
|
27 katex_config = markdown_it.katex_config(env) |
|
28 if katex_config then |
|
29 cmd = cmd .. " '" .. katex_config .. "'" |
|
30 end |
15 io.stdout:write('Executing ' .. cmd .. '\n') |
31 io.stdout:write('Executing ' .. cmd .. '\n') |
16 h = io.popen(cmd, 'r') |
32 h = io.popen(cmd, 'r') |
17 result = h:read("*a") |
33 result = h:read("*a") |
18 h:close() |
34 h:close() |
19 file:close() |
35 file:close() |
20 return result |
36 return result |
21 end |
37 end |
22 |
38 |
|
39 function markdown_it.add_deps(deps, env) |
|
40 katex_config = markdown_it.katex_config(env) |
|
41 if katex_config then |
|
42 table.insert(deps, katex_config) |
|
43 end |
|
44 end |
|
45 |
23 return markdown_it |
46 return markdown_it |