diff options
Diffstat (limited to 'Master/texmf-dist/tex/context/base/mult-ini.lua')
-rw-r--r-- | Master/texmf-dist/tex/context/base/mult-ini.lua | 50 |
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 |