diff options
author | Philipp Gesang <phg@phi-gamma.net> | 2015-10-29 07:14:40 +0100 |
---|---|---|
committer | Philipp Gesang <phg@phi-gamma.net> | 2015-10-29 07:14:40 +0100 |
commit | 4f053696e1813fde4bd6cebbb77ff2a1e1f6800b (patch) | |
tree | 308ec3223eec7744136e95c40284602ba35efacc /src/fontloader/misc/fontloader-l-lua.lua | |
parent | d7a36a33d8d57a5aec9232364cf0bd307523281c (diff) | |
download | luaotfload-4f053696e1813fde4bd6cebbb77ff2a1e1f6800b.tar.gz |
[fontloader] sync with Context as of 2015-10-29
Diffstat (limited to 'src/fontloader/misc/fontloader-l-lua.lua')
-rw-r--r-- | src/fontloader/misc/fontloader-l-lua.lua | 34 |
1 files changed, 24 insertions, 10 deletions
diff --git a/src/fontloader/misc/fontloader-l-lua.lua b/src/fontloader/misc/fontloader-l-lua.lua index 1a2a987..cb61829 100644 --- a/src/fontloader/misc/fontloader-l-lua.lua +++ b/src/fontloader/misc/fontloader-l-lua.lua @@ -129,22 +129,36 @@ local print, select, tostring = print, select, tostring local inspectors = { } -function setinspector(inspector) -- global function - inspectors[#inspectors+1] = inspector +function setinspector(kind,inspector) -- global function + inspectors[kind] = inspector end function inspect(...) -- global function for s=1,select("#",...) do local value = select(s,...) - local done = false - for i=1,#inspectors do - done = inspectors[i](value) - if done then - break + if value == nil then + print("nil") + else + local done = false + -- type driven (table) + local kind = type(value) + local inspector = inspectors[kind] + if inspector then + done = inspector(value) + if done then + break + end + end + -- whatever driven (token, node, ...) + for kind, inspector in next, inspectors do + done = inspector(value) + if done then + break + end + end + if not done then + print(tostring(value)) end - end - if not done then - print(tostring(value)) end end end |