OSDN Git Service

Regenerated luatexja-{ja,en,zh}.pdf.
[luatex-ja/luatexja.git] / src / ltj-infomute.lua
1 --
2 -- luatexja/infomute.lua
3 --
4 luatexbase.provides_module({
5   name = 'luatexja.infomute',
6   date = '2011/04/01',
7   version = '0.1',
8   description = '',
9 })
10 module('luatexja.infomute', package.seeall)
11 local err, warn, info, log = luatexbase.errwarinf(_NAME)
12
13 --------------------
14 --! luatexbase.module_info() で特定のモジュールの情報出力だけ
15 --! 抑止したい. 
16
17 local org_texio = texio
18 local patch_applied = false
19 local info_mute = {}
20
21 local function pick_module_name(line)
22   local mod
23   if line:sub(1, 7) == "Module " then
24      local s, e = line:find(" ", 8, true)
25      if s then mod = line:sub(8, s - 1) end
26   elseif line:sub(1, 1) == "(" then
27      local s, e = line:find(")", 2, true)
28      if s then mod = line:sub(2, s - 1) end
29   end
30   return mod
31 end
32
33 local function patched_write_nl(line, ...)
34   local mod = pick_module_name(line)
35   if not (mod and info_mute[mod]) then
36     org_texio.write_nl(line, ...)
37   end
38 end
39
40 local new_texio = setmetatable({ write_nl = patched_write_nl },
41   { __index = org_texio })
42 local org_fenv = getfenv(luatexbase.module_info)
43
44 local function apply_patch()
45   setfenv(luatexbase.module_info,
46     setmetatable({ texio = new_texio }, { __index = org_fenv }))
47   patch_applied = true
48 end
49
50 --! モジュール mod の情報出力を抑止する.
51 function add_mute(mod)
52   info_mute[mod] = true
53   if not patch_applied then
54     apply_patch()
55   end
56 end
57
58 -------------------- all done
59 -- EOF