summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/lualatex/yamlvars/yamlvars.lua
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2023-11-26 21:05:23 +0000
committerKarl Berry <karl@freefriends.org>2023-11-26 21:05:23 +0000
commit54b23b22ef217ce254635d22f917513c09609851 (patch)
tree1c9f8fca960bec4e5c365d8422e55022d0a63bac /Master/texmf-dist/tex/lualatex/yamlvars/yamlvars.lua
parentb9f74458189966b3c057257c4d333ffe69435d57 (diff)
yamlvars (26nov23)
git-svn-id: svn://tug.org/texlive/trunk@68974 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/lualatex/yamlvars/yamlvars.lua')
-rw-r--r--Master/texmf-dist/tex/lualatex/yamlvars/yamlvars.lua27
1 files changed, 21 insertions, 6 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