summaryrefslogtreecommitdiff
path: root/tex/context/base/lang-lab.lua
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/lang-lab.lua')
-rw-r--r--tex/context/base/lang-lab.lua67
1 files changed, 19 insertions, 48 deletions
diff --git a/tex/context/base/lang-lab.lua b/tex/context/base/lang-lab.lua
index 8d48a4988..360f2aa11 100644
--- a/tex/context/base/lang-lab.lua
+++ b/tex/context/base/lang-lab.lua
@@ -61,20 +61,15 @@ if not modules then modules = { } end modules ['lang-lab'] = {
local format, find = string.format, string.find
local next, rawget, type = next, rawget, type
+local prtcatcodes = tex.prtcatcodes
local lpegmatch = lpeg.match
-local prtcatcodes = catcodes.numbers.prtcatcodes -- todo: use different method
+languages.labels = languages.labels or { }
local trace_labels = false trackers.register("languages.labels", function(v) trace_labels = v end)
local report_labels = logs.reporter("languages","labels")
--- trace_labels = true
-
-languages.labels = languages.labels or { }
-local labels = languages.labels
-
-local variables = interfaces.variables
-local settings_to_array = utilities.parsers.settings_to_array
+local variables = interfaces.variables
local splitter = lpeg.splitat(":")
@@ -82,21 +77,19 @@ local function split(tag)
return lpegmatch(splitter,tag)
end
-labels.split = split
-
-local contextsprint = context.sprint
+languages.labels.split = split
-local function definelanguagelabels(data,class,tag,rawtag)
+local function definelanguagelabels(data,command,tag,rawtag)
for language, text in next, data.labels do
if text == "" then
-- skip
elseif type(text) == "table" then
- contextsprint(prtcatcodes,"\\setlabeltextpair{",class,"}{",language,"}{",tag,"}{",text[1],"}{",text[2],"}")
+ context("\\%s[%s][%s={{%s},{%s}}]",command,language,tag,text[1],text[2])
if trace_labels then
report_labels("language '%s', defining label '%s' as '%s' and '%s'",language,rawtag,text[1],text[2])
end
else
- contextsprint(prtcatcodes,"\\setlabeltextpair{",class,"}{",language,"}{",tag,"}{",text,"}{}")
+ context("\\%s[%s][%s={{%s},}]",command,language,tag,text)
if trace_labels then
report_labels("language '%s', defining label '%s' as '%s'",language,rawtag,text)
end
@@ -104,10 +97,11 @@ local function definelanguagelabels(data,class,tag,rawtag)
end
end
-function labels.define(class,name,prefixed)
+function languages.labels.define(command,name,prefixed)
local list = languages.data.labels[name]
if list then
report_labels("defining label set '%s'",name)
+ context.pushcatcodes(prtcatcodes) -- context.unprotect
for tag, data in next, list do
if data.hidden then
-- skip
@@ -116,30 +110,31 @@ function labels.define(class,name,prefixed)
if second then
if rawget(variables,first) then
if rawget(variables,second) then
- definelanguagelabels(data,class,format("\\v!%s:\\v!%s",first,second),tag)
+ definelanguagelabels(data,command,format("\\v!%s:\\v!%s",first,second),tag)
else
- definelanguagelabels(data,class,format("\\v!%s:%s",first,second),tag)
+ definelanguagelabels(data,command,format("\\v!%s:%s",first,second),tag)
end
elseif rawget(variables,second) then
- definelanguagelabels(data,class,format("%s:\\v!%s",first,second),tag)
+ definelanguagelabels(data,command,format("%s:\\v!%s",first,second),tag)
else
- definelanguagelabels(data,class,format("%s:%s",first,second),tag)
+ definelanguagelabels(data,command,format("%s:%s",first,second),tag)
end
elseif rawget(variables,rawtag) then
- definelanguagelabels(data,class,format("\\v!%s",tag),tag)
+ definelanguagelabels(data,command,format("\\v!%s",tag),tag)
else
- definelanguagelabels(data,class,tag,tag)
+ definelanguagelabels(data,command,tag,tag)
end
else
- definelanguagelabels(data,class,tag,tag)
+ definelanguagelabels(data,command,tag,tag)
end
end
+ context.popcatcodes() -- context.protect
else
report_labels("unknown label set '%s'",name)
end
end
---~ function labels.check()
+--~ function languages.labels.check()
--~ for category, list in next, languages.data.labels do
--~ for tag, specification in next, list do
--~ for language, text in next, specification.labels do
@@ -152,32 +147,8 @@ end
--~ end
--~ end
--~
---~ labels.check()
-
-
--- interface
-
-commands.definelabels = labels.define
+--~ languages.labels.check()
-- function commands.setstrippedtextprefix(str)
-- context(string.strip(str))
-- end
-
-function commands.concatcommalist(settings) -- it's too easy to forget that this one is there
- local list = settings_to_array(settings.text or "")
- local size = #list
- if size > 1 then
- local set = settings_to_array(settings.separators or "")
- local one = set[1] or settings.first or " "
- local two = set[2] or settings.second or " "
- context(list[1])
- for i=2,size-1 do
- context(one)
- context(list[i])
- end
- context(two)
- end
- if size > 0 then
- context(list[size])
- end
-end