diff options
author | Karl Berry <karl@freefriends.org> | 2023-07-19 20:48:38 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2023-07-19 20:48:38 +0000 |
commit | 5e4a00666cc9b79bfdab9a1077053159000a35ec (patch) | |
tree | e92b0519850b9c83e1e2becf5332690258b4d5de /Master/texmf-dist/tex/luatex/penlight | |
parent | a35702bb9de1169a9f02b42e6c98d60cb9955ee8 (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.sty | 70 | ||||
-rw-r--r-- | Master/texmf-dist/tex/luatex/penlight/penlightextras.lua | 17 |
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 |