summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/luatex/luatexja/ltj-infomute.lua
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/luatex/luatexja/ltj-infomute.lua')
-rw-r--r--Master/texmf-dist/tex/luatex/luatexja/ltj-infomute.lua59
1 files changed, 59 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltj-infomute.lua b/Master/texmf-dist/tex/luatex/luatexja/ltj-infomute.lua
new file mode 100644
index 00000000000..90dd870caf8
--- /dev/null
+++ b/Master/texmf-dist/tex/luatex/luatexja/ltj-infomute.lua
@@ -0,0 +1,59 @@
+--
+-- luatexja/infomute.lua
+--
+luatexbase.provides_module({
+ name = 'luatexja.infomute',
+ date = '2011/04/01',
+ version = '0.1',
+ description = '',
+})
+module('luatexja.infomute', package.seeall)
+local err, warn, info, log = luatexbase.errwarinf(_NAME)
+
+--------------------
+--! luatexbase.module_info() で特定のモジュールの情報出力だけ
+--! 抑止したい.
+
+local org_texio = texio
+local patch_applied = false
+local info_mute = {}
+
+local function pick_module_name(line)
+ local mod
+ if line:sub(1, 7) == "Module " then
+ local s, e = line:find(" ", 8, true)
+ if s then mod = line:sub(8, s - 1) end
+ elseif line:sub(1, 1) == "(" then
+ local s, e = line:find(")", 2, true)
+ if s then mod = line:sub(2, s - 1) end
+ end
+ return mod
+end
+
+local function patched_write_nl(line, ...)
+ local mod = pick_module_name(line)
+ if not (mod and info_mute[mod]) then
+ org_texio.write_nl(line, ...)
+ end
+end
+
+local new_texio = setmetatable({ write_nl = patched_write_nl },
+ { __index = org_texio })
+local org_fenv = getfenv(luatexbase.module_info)
+
+local function apply_patch()
+ setfenv(luatexbase.module_info,
+ setmetatable({ texio = new_texio }, { __index = org_fenv }))
+ patch_applied = true
+end
+
+--! モジュール mod の情報出力を抑止する.
+function add_mute(mod)
+ info_mute[mod] = true
+ if not patch_applied then
+ apply_patch()
+ end
+end
+
+-------------------- all done
+-- EOF