diff options
author | Karl Berry <karl@freefriends.org> | 2023-11-26 21:05:23 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2023-11-26 21:05:23 +0000 |
commit | 54b23b22ef217ce254635d22f917513c09609851 (patch) | |
tree | 1c9f8fca960bec4e5c365d8422e55022d0a63bac /Master/texmf-dist/tex | |
parent | b9f74458189966b3c057257c4d333ffe69435d57 (diff) |
yamlvars (26nov23)
git-svn-id: svn://tug.org/texlive/trunk@68974 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex')
-rw-r--r-- | Master/texmf-dist/tex/lualatex/yamlvars/yamlvars.lua | 27 | ||||
-rw-r--r-- | Master/texmf-dist/tex/lualatex/yamlvars/yamlvars.sty | 15 |
2 files changed, 30 insertions, 12 deletions
diff --git a/Master/texmf-dist/tex/lualatex/yamlvars/yamlvars.lua b/Master/texmf-dist/tex/lualatex/yamlvars/yamlvars.lua index 479880a3e82..d6d2f7ca4f3 100644 --- a/Master/texmf-dist/tex/lualatex/yamlvars/yamlvars.lua +++ b/Master/texmf-dist/tex/lualatex/yamlvars/yamlvars.lua @@ -1,5 +1,5 @@ --% Kale Ewasiuk (kalekje@gmail.com) ---% 2023-07-22 +--% 2023-11-25 --% Copyright (C) 2021-2023 Kale Ewasiuk --% --% Permission is hereby granted, free of charge, to any person obtaining a copy @@ -48,11 +48,15 @@ YAMLvars.varTemp = '' YAMLvars.debug = false + YAMLvars.setts = {} +YAMLvars.setts.parseopts = {timestamps=false} +YAMLvars.setts.decstr = 'xfm' -- if in declaration key, value is a string, how should it be treated YAMLvars.setts.undeclared = false YAMLvars.setts.overwrite = false YAMLvars.setts.lowercase = false YAMLvars.setts.tabmidrule = 'midrule' +YAMLvars.setts.prcstring = true YAMLvars.setts.xfm = {} YAMLvars.setts.prc = 'gdef' YAMLvars.setts.dft = '' @@ -325,7 +329,7 @@ local function default_stuff() end function YAMLvars.declareYAMLvarsStr(y) - local t = YAMLvars.yaml.parse(y) + local t = YAMLvars.yaml.parse(y, YAMLvars.setts.parseopts) for var, specs in pairs(t) do if pl.hasval(specs['lowcasevar']) or YAMLvars.setts.lowercase then var = var:lower() @@ -333,9 +337,11 @@ function YAMLvars.declareYAMLvarsStr(y) end YAMLvars.varspecs[var] = default_stuff() if type(specs) == 'string' then - specs = {xfm={specs}} + if YAMLvars.setts.decstr == 'xfm' then specs = {xfm={specs}} end + if YAMLvars.setts.decstr == 'dft' then specs = {dft=specs} end + if YAMLvars.setts.decstr == 'prc' then specs = {prc=specs} end end - if specs['xfm'] == nil then specs['xfm'] = {} end + if specs['xfm'] == nil then specs['xfm'] = YAMLvars.setts.xfm end for s, p in pairs(specs) do if s == 'xfm' and type(p) ~= 'table' then p = {p} end YAMLvars.varspecs[var][s] = p -- set property of var @@ -402,6 +408,8 @@ local function transform_and_prc(var, val) val = val2 end else + YAMLvars.debugtalk('function: '..func..'\nvariable: '.. var .. '\n' .. + 'value: '.. tostring(val) .. '\nval type: ' ..type(val), "Applying transforming (xfm) function") val = f(var, val) end end @@ -409,13 +417,20 @@ local function transform_and_prc(var, val) if f == nil then YAMLvars.pkgerr('prc function "'..YAMLvars.varspecs[var]['prc']..'" on var "'..var..'" not defined') end + YAMLvars.debugtalk('function: '..YAMLvars.varspecs[var]['prc']..'\nvariable: '.. var .. '\n' .. + 'value: '.. tostring(val) .. '\nval type: ' ..type(val), "Applying processing (prc) function") + + if YAMLvars.setts.prcstring then + val = tostring(val) + end f(var, val) -- prc the value of the variable end function YAMLvars.parseYAMLvarsStr(y) - YAMLvars.varsvals = YAMLvars.yaml.parse(y) + YAMLvars.debugtalk(YAMLvars.varsvals, 'Parsing YAML vars with table') + YAMLvars.varsvals = YAMLvars.yaml.parse(y, YAMLvars.setts.parseopts) for var, val in pairs(YAMLvars.varsvals) do if YAMLvars.varslowcase:contains(var:lower()) then var = var:lower() @@ -477,7 +492,7 @@ function YAMLvars.getYAMLcli() YAMLvars.yaml2PDFmetadata = function(ytext) -- parse a YAML file and update the pdfmetadata table __PDFmetadata__ = __PDFmetadata__ or {} -- existing metadata if ytext ~= nil then - local pdfmetadata_yaml = YAMLvars.yaml.parse(ytext) -- new metadata + local pdfmetadata_yaml = YAMLvars.yaml.parse(ytext, {timestamps = false}) -- new metadata local t = {} for k,v in pairs(pdfmetadata_yaml) do -- ensure first character is capital letter t[k:upfirst()] = v diff --git a/Master/texmf-dist/tex/lualatex/yamlvars/yamlvars.sty b/Master/texmf-dist/tex/lualatex/yamlvars/yamlvars.sty index 733ee80b69d..bd0643ec573 100644 --- a/Master/texmf-dist/tex/lualatex/yamlvars/yamlvars.sty +++ b/Master/texmf-dist/tex/lualatex/yamlvars/yamlvars.sty @@ -1,5 +1,5 @@ % Kale Ewasiuk (kalekje@gmail.com) -% 2023-07-22 +% 2023-11-25 % Copyright (C) 2021-2023 Kale Ewasiuk % % Permission is hereby granted, free of charge, to any person obtaining a copy @@ -25,7 +25,7 @@ \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{yamlvars}[2023-07-22] +\ProvidesPackage{yamlvars}[2023-11-25] \RequirePackage{luacode} \RequirePackage{etoolbox} @@ -38,7 +38,9 @@ \luadirect{YAMLvars = require('YAMLvars')} \DeclareOption{useyv}{ - \gdef\yv#1{\csname yv--#1\endcsname} + \newcommand\yv{} + \gdef\yv#1{\csname yv--#1\endcsname} % todo not working... why?? +% \NewDocumentCommand{\yv}{m}{\luadirect{tex.sprint(tostring(token.get_macro('yv--'..\luastring{#1})))}} \luadirect{YAMLvars.setts.prc = 'yvdef'} \luadirect{YAMLvars.settsdefault.prc = 'yvdef'} } @@ -58,7 +60,8 @@ -%% todo delete below +\newcommand{\yamlvarsdebugon}{\luadirect{YAMLvars.debug = true}} +\newcommand{\yamlvarsdebugoff}{\luadirect{YAMLvars.debug = false}} \newcommand{\lowercasevarYVon}{\luadirect{YAMLvars.lowvasevarall = true}} \newcommand{\lowercasevarYVoff}{\luadirect{YAMLvars.lowvasevarall = false}} \newcommand{\AllowUndeclaredYV}{\luadirect{YAMLvars.setts.undeclared = true}} @@ -130,8 +133,8 @@ YAMLvars.xfmDefault = {'lb2nl','addxspace'} }} \NewDocumentCommand{\setdefYAMLvars}{ m }{\luadirect{ - YAMLvars.updatesettskv(pl.tex._xFalse, \luastring{#1}, true) -}} + YAMLvars.updatesettskv(\luastring{#1}, pl.tex._xFalse, true) +}} % set the default settings % \IfBooleanTF{#1}{\luadirect{YAMLvars.setts = pl.tablex.deepcopy(YAMLvars.settsdefault)}}{} % if * return to default first % \luadirect{pl.tablex.update(YAMLvars.setts, luakeys.parse(\luastring{#2}))} |