summaryrefslogtreecommitdiff
path: root/macros/luatex/generic/penlightplus/penlightplus.lua
diff options
context:
space:
mode:
Diffstat (limited to 'macros/luatex/generic/penlightplus/penlightplus.lua')
-rw-r--r--macros/luatex/generic/penlightplus/penlightplus.lua57
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