|
Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
#!/usr/bin/env lua5.1
-- This file:
-- http://anggtwu.net/LUA/LeanMetaDoc1.lua.html
-- http://anggtwu.net/LUA/LeanMetaDoc1.lua
-- (find-angg "LUA/LeanMetaDoc1.lua")
-- Author: Eduardo Ochs <eduardoochs@gmail.com>
--
-- Process the source files of
-- (find-es "lean" "metaprogramming")
-- Generate lines like these:
-- (find-leanmetadoc "main/05_syntax#declaring-syntax")
-- (find-leanmetadocr "main/05_syntax" "## Declaring Syntax")
-- (find-leanmetadoc "main/05_syntax#declaration-helpers")
-- (find-leanmetadocr "main/05_syntax" "### Declaration helpers")
-- See: (find-angg "LEAN/syntax.lean")
--
-- (defun e () (interactive) (find-angg "LUA/LeanMetaDoc1.lua"))
--
-- «.getopt» (to "getopt")
-- «.process-sections» (to "process-sections")
mklinks0 = function (li, tag0)
local fmt = '-- (find-leanmetadoc "'..stem..'#%s")\n'
.. '-- (find-leanmetadocr "'..stem..'" "%s")'
return format(fmt, tag0, li)
end
mklinks = function (li)
local tag = li:match"^##+ (.*)$"
tag = string.lower(tag)
tag = tag:gsub("['`()?:;,./<>\"]", "")
tag = tag:gsub(" ", "-")
return mklinks0(li, tag)
end
process = function (stem0)
stem = stem0 or "main/05_syntax"
fname = format("~/usrc/lean4-metaprogramming-book/lean/%s.lean", stem)
bigstr = ee_readfile(fname)
fmt0 = '-- (find-sh "~/LUA/LeanMetaDoc1.lua -stem %s")\n'
fmt1 = '-- (find-angg "LUA/LeanMetaDoc1.lua" "process-sections")\n'
fmt2 = '-- (find-leanmetadoc "%s")\n'
fmt3 = '-- (find-leanmetadocr "%s")\n'
printf(fmt0, stem)
printf(fmt1, stem)
printf(fmt2, stem)
printf(fmt3, stem)
for _,li in ipairs(splitlines(bigstr)) do
local body = li:match"^(##+ .*)$"
or li:match"^/%- (##+ .*) %-/$"
if body then
print(mklinks(body))
end
end
end
-- «getopt» (to ".getopt")
-- Test: (find-sh "~/LUA/LeanMetaDoc1.lua -stem main/01_intro")
--
Path.addLUAtopath()
require "GetOpt1" -- (find-angg "LUA/GetOpt1.lua")
mygetopt = GetOpt {
["-stem"] = function (g,s) process(stem) g:rest(2) end,
}
mygetopt:run(unpack(arg or {}))
-- «process-sections» (to ".process-sections")
--[[
* (eepitch-lua51)
* (eepitch-kill)
* (eepitch-lua51)
dofile "LeanMetaDoc1.lua"
process()
process("main/01_intro")
process("main/02_overview")
process("main/03_expressions")
process("main/04_metam")
process("main/05_syntax")
process("main/06_macros")
process("main/07_elaboration")
process("main/08_dsls")
process("main/09_tactics")
process("main/10_cheat-sheet")
process("extra/01_options")
process("extra/02_attributes")
process("extra/03_pretty-printing")
process("solutions/03_expressions")
process("solutions/04_metam")
process("solutions/05_syntax")
process("solutions/07_elaboration")
process("solutions/09_tactics")
--]]
-- Local Variables:
-- coding: utf-8-unix
-- End: