summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/support/cluttex/build.lua
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/doc/support/cluttex/build.lua')
-rw-r--r--Master/texmf-dist/doc/support/cluttex/build.lua56
1 files changed, 42 insertions, 14 deletions
diff --git a/Master/texmf-dist/doc/support/cluttex/build.lua b/Master/texmf-dist/doc/support/cluttex/build.lua
index bda6cf637a2..24d0674ffc9 100644
--- a/Master/texmf-dist/doc/support/cluttex/build.lua
+++ b/Master/texmf-dist/doc/support/cluttex/build.lua
@@ -28,6 +28,7 @@ elseif arg[1] == "--windows-batchfile" then
table.remove(arg, 1)
end
local outfile = arg[1]
+local preserve_location_info = false
local modules = {
{
@@ -82,6 +83,10 @@ local modules = {
name = "texrunner.message",
path = "texrunner/message.lua",
},
+ {
+ name = "texrunner.fswatcher_windows",
+ path = "texrunner/fswatcher_windows.lua",
+ },
}
local imported_globals = {"io", "os", "string", "table", "package", "require", "assert", "error", "ipairs", "type", "select", "arg"}
@@ -102,7 +107,13 @@ local function strip_global_imports(code)
end
local function strip_test_code(code)
- return (code:gsub("%-%- TEST CODE\n(.-)%-%- END TEST CODE\n", ""))
+ if preserve_location_info then
+ return (code:gsub("%-%- TEST CODE\n.-%-%- END TEST CODE\n", function(s)
+ return (s:gsub("[^\n]",""))
+ end))
+ else
+ return (code:gsub("%-%- TEST CODE\n(.-)%-%- END TEST CODE\n", ""))
+ end
end
local function load_module_code(path)
@@ -133,8 +144,10 @@ else
end
end
-table.insert(lines, string.format("local %s = %s\n", table.concat(imported_globals, ", "), table.concat(imported_globals, ", ")))
-table.insert(lines, "local CLUTTEX_VERBOSITY, CLUTTEX_VERSION\n")
+if not preserve_location_info then
+ table.insert(lines, string.format("local %s = %s\n", table.concat(imported_globals, ", "), table.concat(imported_globals, ", ")))
+ table.insert(lines, "local CLUTTEX_VERBOSITY, CLUTTEX_VERSION\n")
+end
if default_os then
table.insert(lines, string.format("os.type = os.type or %q\n", default_os))
@@ -142,19 +155,34 @@ end
-- LuajitTeX doesn't seem to set package.loaded table...
table.insert(lines, "if lfs and not package.loaded['lfs'] then package.loaded['lfs'] = lfs end\n")
-
-for _,m in ipairs(modules) do
- if m.path_windows or m.path_unix then
- table.insert(lines, 'if os.type == "windows" then\n')
- table.insert(lines, string.format("package.preload[%q] = function(...)\n%send\n", m.name, load_module_code(m.path_windows or m.path)))
- table.insert(lines, 'else\n')
- table.insert(lines, string.format("package.preload[%q] = function(...)\n%send\n", m.name, load_module_code(m.path_unix or m.path)))
- table.insert(lines, 'end\n')
- else
- table.insert(lines, string.format("package.preload[%q] = function(...)\n%send\n", m.name, load_module_code(m.path)))
+if preserve_location_info then
+ table.insert(lines, "local loadstring = loadstring or load\n")
+ for _,m in ipairs(modules) do
+ if m.path_windows or m.path_unix then
+ table.insert(lines, 'if os.type == "windows" then\n')
+ table.insert(lines, string.format("package.preload[%q] = assert(loadstring(%q, %q))\n", m.name, load_module_code(m.path_windows or m.path), "=" .. (m.path_windows or m.path)))
+ table.insert(lines, 'else\n')
+ table.insert(lines, string.format("package.preload[%q] = assert(loadstring(%q, %q))\n", m.name, load_module_code(m.path_unix or m.path), "=" .. (m.path_unix or m.path)))
+ table.insert(lines, 'end\n')
+ else
+ table.insert(lines, string.format("package.preload[%q] = assert(loadstring(%q, %q))\n", m.name, load_module_code(m.path), "=" .. m.path))
+ end
+ end
+ table.insert(lines, string.format("assert(loadstring(%q, %q))(...)\n", main, "=cluttex.lua"))
+else
+ for _,m in ipairs(modules) do
+ if m.path_windows or m.path_unix then
+ table.insert(lines, 'if os.type == "windows" then\n')
+ table.insert(lines, string.format("package.preload[%q] = function(...)\n%send\n", m.name, load_module_code(m.path_windows or m.path)))
+ table.insert(lines, 'else\n')
+ table.insert(lines, string.format("package.preload[%q] = function(...)\n%send\n", m.name, load_module_code(m.path_unix or m.path)))
+ table.insert(lines, 'end\n')
+ else
+ table.insert(lines, string.format("package.preload[%q] = function(...)\n%send\n", m.name, load_module_code(m.path)))
+ end
end
+ table.insert(lines, strip_global_imports(main))
end
-table.insert(lines, strip_global_imports(main))
if outfile then
io.output(assert(io.open(outfile, "wb")))