diff options
Diffstat (limited to 'macros/luatex/generic/penlightplus/penlightplus.lua')
-rw-r--r-- | macros/luatex/generic/penlightplus/penlightplus.lua | 57 |
1 files changed, 53 insertions, 4 deletions
diff --git a/macros/luatex/generic/penlightplus/penlightplus.lua b/macros/luatex/generic/penlightplus/penlightplus.lua index ffdbe89bc5..96eb565fb6 100644 --- a/macros/luatex/generic/penlightplus/penlightplus.lua +++ b/macros/luatex/generic/penlightplus/penlightplus.lua @@ -1,5 +1,5 @@ --% Kale Ewasiuk (kalekje@gmail.com) ---% 2023-07-22 +--% 2023-08-27 --% Copyright (C) 2021-2023 Kale Ewasiuk --% --% Permission is hereby granted, free of charge, to any person obtaining a copy @@ -67,6 +67,10 @@ penlight.tex._xTrue = '\\BooleanTrue ' penlight.tex._xFalse = '\\BooleanFalse ' penlight.tex._xNoValue = '-NoValue-' +penlight.tex.xTrue = '\\BooleanTrue ' +penlight.tex.xFalse = '\\BooleanFalse ' +penlight.tex.xNoValue = '-NoValue-' + --Generic LuaLaTeX utilities for print commands or environments if not __PL_SKIP_TEX__ then @@ -138,6 +142,8 @@ function penlight.tex.help_wrt(s1, s2) -- helpful printing, makes it easy to deb wrt2('\n^^^^^\n') end penlight.help_wrt = penlight.tex.help_wrt +penlight.wrth = penlight.help_wrt +penlight.tex.wrth = penlight.help_wrt function penlight.tex.prt_array2d(t) for _, r in ipairs(t) do @@ -171,9 +177,10 @@ end --definition helpers -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -function penlight.tex.defmacro(cs, val) -- , will not work if val contains undefined tokens (so pre-define them if using..) +function penlight.tex.defmacro(cs, val, g) -- , will not work if val contains undefined tokens (so pre-define them if using..) val = val or '' -- however this works for arbitrary command names (\@hello-123 etc allowed) - token.set_macro(cs, val, 'global') + g = g or 'global' + token.set_macro(cs, val, g) end @@ -767,6 +774,47 @@ function penlight.tex.split2items(s, d) end +penlight.tbls = {} + +function penlight.get_tbl_item(s, p) -- get item with string, p means print value + p = p or false + local itm = 'tbl: INVALID INDEX WITH: "'..s..'"' + if s:find('%.') then + local tt = s:split('.') + itm = penlight.tbls[tt[1]][tt[2]] + elseif s:find('/') then + local tt = s:split('/') + itm = penlight.tbls[tt[1]][tonumber(tonumber(tt[2]))] + else + if s:isdigit() then + itm = penlight.tbls._recent[tonumber(s)] + else + itm = penlight.tbls._recent[s] + end + end + if p then + tex.sprint(tostring(itm)) + end + return itm +end + + +function penlight.set_tbl_item(s, v) + if s:find('%.') then + local tt = s:split('.') + penlight.tbls[tt[1]][tt[2]] = v + elseif s:find('/') then + local tt = s:split('/') + penlight.tbls[tt[1]][tonumber(tonumber(tt[2]))] = v + else + if s:isdigit() then + penlight.tbls._recent[tonumber(s)] = v + else + penlight.tbls._recent[s] = v + end + end + end + if penlight.hasval(__PL_GLOBALS__) then -- iterators @@ -803,8 +851,9 @@ if penlight.hasval(__PL_GLOBALS__) then penlight.filterfiles = penlight.utils.filterfiles penlight.a2 = penlight.array2d + A2d = penlight.array2d penlight.tbl = penlight.tablex - + TX = penlight.tablex for k,v in pairs(penlight.tex) do -- make tex functions global _G[k] = v |