summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/luatex/penlight
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2023-07-19 20:48:38 +0000
committerKarl Berry <karl@freefriends.org>2023-07-19 20:48:38 +0000
commit5e4a00666cc9b79bfdab9a1077053159000a35ec (patch)
treee92b0519850b9c83e1e2becf5332690258b4d5de /Master/texmf-dist/tex/luatex/penlight
parenta35702bb9de1169a9f02b42e6c98d60cb9955ee8 (diff)
penlight (19jul23)
git-svn-id: svn://tug.org/texlive/trunk@67672 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/luatex/penlight')
-rw-r--r--Master/texmf-dist/tex/luatex/penlight/penlight.sty70
-rw-r--r--Master/texmf-dist/tex/luatex/penlight/penlightextras.lua17
2 files changed, 70 insertions, 17 deletions
diff --git a/Master/texmf-dist/tex/luatex/penlight/penlight.sty b/Master/texmf-dist/tex/luatex/penlight/penlight.sty
index 8180a839acf..4f5900e3b83 100644
--- a/Master/texmf-dist/tex/luatex/penlight/penlight.sty
+++ b/Master/texmf-dist/tex/luatex/penlight/penlight.sty
@@ -1,5 +1,5 @@
% Kale Ewasiuk (kalekje@gmail.com)
-% 2022-10-24
+% 2023-07-18
% Copyright (C) 2021-2022 Kale Ewasiuk
%
% Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -22,7 +22,7 @@
% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
% OR OTHER DEALINGS IN THE SOFTWARE.
-\ProvidesPackage{penlight}[2022-10-24]
+\ProvidesPackage{penlight}[2023-07-18]
\RequirePackage{luacode}
@@ -42,11 +42,15 @@
\DeclareOption{stringx}{\luadirect{_G[__PENLIGHT__].stringx.import()}}
\DeclareOption{format}{\luadirect{_G[__PENLIGHT__].stringx.format_operator()}}
\DeclareOption{func}{\luadirect{_G[__PENLIGHT__].utils.import(__PENLIGHT__..'.func')}}
-\DeclareOption{extras}{\luadirect{require'penlightextras'}}
+\DeclareOption{extras}{\luadirect{require'penlightextras'}
+ \gdef\penlight@loadextras{}
+}
\DeclareOption{extrasglobals}{\luadirect{
__PL_GLOBALS__ = true
require'penlightextras'
-}}
+ }
+ \gdef\penlight@loadextras{}
+}
\ProcessOptions*\relax
@@ -56,9 +60,9 @@ if __PENLIGHT__ == nil then
end
}
+\ifdefined\penlight@loadextras
-
-\newcommand{\writePDFmetadata}{\luadirect{_G[__PENLIGHT__].tex.writePDFmetadata()}}
+\global\newcommand{\writePDFmetadata}{\luadirect{_G[__PENLIGHT__].tex.writePDFmetadata()}}
\NewDocumentCommand{\writePDFmetadatakv}{ s m }{
\IfBooleanTF{#1}{% if *, overwrite everything
@@ -74,8 +78,8 @@ end
}
-\def\luastringT#1{\luastring{\unexpanded\expandafter\expandafter\expandafter{#1}}} % expand luastring twice
-\let\luastringF\luastring % fully expanded luastring
+\gdef\luastringT#1{\luastring{\unexpanded\expandafter\expandafter\expandafter{#1}}} % expand luastring twice
+\global\let\luastringF\luastring % fully expanded luastring
% allow control over expansion of arguments to a latex function
\NewDocumentCommand{\MakeluastringCommands}{O{} m }{% #1 the desired commands #2 defaults
@@ -90,4 +94,52 @@ end
\NewDocumentCommand{\splitToItems}{ O{NN} m m }{%
\MakeluastringCommands[nn]{#1}%
\luadirect{_G[__PENLIGHT__].tex.split2items(\plluastringA{#2},\plluastringB{#3})}%
-} \ No newline at end of file
+}
+
+
+%
+%
+%\NewDocumentCommand{\tblnew}{m}{\luadirect{
+% _G[\luastring{#1}] = {}
+%}}
+%
+%\NewDocumentCommand{\tblfrkv}{m m O{} }{\luadirect{
+% _G[\luastring{#1}] = luakeys.parse(\luastring{#2}, luakeys.parse(\luastring{#3}))
+%}}
+%
+%\NewDocumentCommand{\tblset}{m m m}{\luadirect{
+% _G[\luastring{#1}][\luastring{#2}] = \luastring{#3}
+%}}
+%
+%\NewDocumentCommand{\tblget}{m m}{\luadirect{
+% tex.sprint(tostring(_G[\luastring{#1}][\luastring{#2}]))
+%}}
+%
+%\NewDocumentCommand{\tblidx}{m m}{\luadirect{
+% tex.sprint(tostring(_G[\luastring{#1}][#2]))
+%}}
+%
+%
+%\NewDocumentCommand{\tblupd}{ m m}{\luadirect{
+% _G[__PENLIGHT__].tablex.update(_G[\luastring{#1}], _G[\luastring{#2}])
+%}}
+%
+%\NewDocumentCommand{\tblupdkv}{ m m }{\luadirect{
+% _G[__PENLIGHT__].tablex.update(_G[\luastring{#1}], luakeys.parse(\luastring{#2}))
+%}}
+%
+%% todo need a get table function. If blank is passed, the last table referenced is used.
+%\NewDocumentCommand{\tblfrkvII}{ m m m }{\luadirect{
+% _G[\luastring{#1}] = _G[__PENLIGHT__].tablex.update(luakeys.parse(\luastring{#2}), luakeys.parse(\luastring{#3}))
+%}}
+
+
+%\NewDocumentCommand{\tbldo}{m m O{} }{\luadirect{
+% % tex.sprint(tostring(_G[\luastring{#1}][#2]))
+% % todo allow one to use pl tablex function here,
+% % {tbl}{update}[arg1][arg2]
+% _G[__PENLIGHT__].tablex[\luastring[#1]](_G[\luastring{}], _G[\luastring{}])
+%}}
+
+
+\else\fi \ No newline at end of file
diff --git a/Master/texmf-dist/tex/luatex/penlight/penlightextras.lua b/Master/texmf-dist/tex/luatex/penlight/penlightextras.lua
index 7d0a7eb6b50..5f5f76aefbf 100644
--- a/Master/texmf-dist/tex/luatex/penlight/penlightextras.lua
+++ b/Master/texmf-dist/tex/luatex/penlight/penlightextras.lua
@@ -1,5 +1,5 @@
--% Kale Ewasiuk (kalekje@gmail.com)
---% 2022-10-24
+--% 2023-07-18
--% Copyright (C) 2021-2022 Kale Ewasiuk
--%
--% Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -28,14 +28,16 @@ __PL_SKIP_LUAKEYS__ = __PL_SKIP_LUAKEYS__ or false
__PL_GLOBALS__ = __PL_GLOBALS__ or false
__PL_EXTRAS__ = 1
__PL_NO_HYPERREF__ = __PL_NO_HYPERREF__ or false
+-- __PENLIGHT__ = 'penlight' or 'pl'
-- requires penlight
local pl = _G['penlight'] or _G['pl'] -- penlight for this namespace is pl
if not __PL_SKIP_LUAKEYS__ then
- luakeys = require'luakeys'
+ luakeys = require'luakeys'()
end
+
-- some bonus string operations, % text operator, and functional programming
pl.stringx.import()
pl.stringx.format_operator()
@@ -311,7 +313,7 @@ function pl.tex.get_ref_info(l)
t = pl.tablex.map(string.trimfl, t)
end
t[#t+1] = r -- add the og return of label
- pl.help_wrt(t, 'ref info')
+ --pl.help_wrt(t, 'ref info')
return t
end
@@ -511,7 +513,7 @@ pl.array2d.map_slice1 = pl.tablex.map_slice
-- todo option for multiple filters with AND logic, like the filter files??
function pl.tablex.filterstr(t, exp, case)
-- case = case sensitive
- case = hasval(case)
+ case = pl.hasval(case)
-- apply lua patterns to a table to filter iter
-- str or table of str's can be passed, OR logic is used if table is passed
if case then
@@ -699,12 +701,11 @@ __PDFmetadata__ = {}
pl.tex.add_xspace_intext = true
-function pl.tex.updatePDFtable(k, v, o)
+function pl.tex.updatePDFtable(k, v, o) -- key val overwrite
k = k:upfirst()
- if not pl.hasval(o) and __PDFmetadata__[k] ~= nil then
- return
+ if pl.hasval(o) or (__PDFmetadata__[k] == nil) then
+ __PDFmetadata__[k] = v
end
- __PDFmetadata__[k] = v
end
pl.tex.writePDFmetadata = function(t) -- write PDF metadata to xmpdata file