summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/context/base/mult-ini.lua
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/context/base/mult-ini.lua')
-rw-r--r--Master/texmf-dist/tex/context/base/mult-ini.lua50
1 files changed, 32 insertions, 18 deletions
diff --git a/Master/texmf-dist/tex/context/base/mult-ini.lua b/Master/texmf-dist/tex/context/base/mult-ini.lua
index a92561b09b7..06707adf87a 100644
--- a/Master/texmf-dist/tex/context/base/mult-ini.lua
+++ b/Master/texmf-dist/tex/context/base/mult-ini.lua
@@ -6,51 +6,65 @@ if not modules then modules = { } end modules ['mult-ini'] = {
license = "see context related readme files"
}
+local format, gmatch, gsub = string.format, string.gmatch, string.gsub
+
interfaces = interfaces or { }
interfaces.messages = interfaces.messages or { }
interfaces.constants = interfaces.constants or { }
interfaces.variables = interfaces.variables or { }
-input.storage.register(false,"interfaces/messages", interfaces.messages, "interfaces.messages" )
-input.storage.register(false,"interfaces/constants", interfaces.constants, "interfaces.constants")
-input.storage.register(false,"interfaces/variables", interfaces.variables, "interfaces.variables")
+storage.register("interfaces/messages", interfaces.messages, "interfaces.messages" )
+storage.register("interfaces/constants", interfaces.constants, "interfaces.constants")
+storage.register("interfaces/variables", interfaces.variables, "interfaces.variables")
+
+local messages, constants, variables = interfaces.messages, interfaces.constants, interfaces.variables
-function interfaces.setmessage(category,str)
- local m = interfaces.messages[category] or { }
- for k, v in str:gmatch("(%S+) *: *(.-) *[\n\r]") do
- m[k] = v:gsub("%-%-","%%s")
+function interfaces.setmessages(category,str)
+ local m = messages[category] or { }
+ for k, v in gmatch(str,"(%S+) *: *(.-) *[\n\r]") do
+ m[k] = gsub(v,"%-%-","%%s")
end
- interfaces.messages[category] = m
+ messages[category] = m
+end
+
+function interfaces.setmessage(category,tag,message)
+ local m = messages[category]
+ if not m then
+ m = { }
+ messages[category] = m
+ end
+ m[tag] = message:gsub("%-%-","%%s")
end
function interfaces.getmessage(category,tag)
- local m = interfaces.messages[category]
+ local m = messages[category]
return (m and m[tag]) or "unknown message"
end
+local messagesplitter = lpeg.splitat(",")
+
function interfaces.makemessage(category,tag,arguments)
- local m = interfaces.messages[category]
- m = (m and m[tag] ) or "unknown message"
+ local m = messages[category]
+ m = (m and m[tag] ) or format("unknown message, category '%s', tag '%s'",category,tag)
if not m then
return m .. " " .. tag
elseif not arguments then
return m
- elseif arguments:find(",") then
- return string.format(m,unpack(arguments:split(",")))
else
- return string.format(m,arguments)
+ return format(m,messagesplitter:match(arguments))
end
end
function interfaces.showmessage(category,tag,arguments)
- local m = interfaces.messages[category]
- ctx.writestatus((m and m.title) or "unknown title",interfaces.makemessage(category,tag,arguments))
+ local m = messages[category]
+ commands.writestatus((m and m.title) or "unknown title",interfaces.makemessage(category,tag,arguments))
end
function interfaces.setvariable(variable,given)
- interfaces.variables[given] = variable
+--~ variables[given] = variable
+ variables[variable] = given
end
function interfaces.setconstant(constant,given)
- interfaces.constants[given] = constant
+ constants[given] = constant
end