summaryrefslogtreecommitdiff
path: root/tex/context/base/lang-ini.lua
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/lang-ini.lua')
-rw-r--r--tex/context/base/lang-ini.lua91
1 files changed, 49 insertions, 42 deletions
diff --git a/tex/context/base/lang-ini.lua b/tex/context/base/lang-ini.lua
index 97528097f..eaedcd69a 100644
--- a/tex/context/base/lang-ini.lua
+++ b/tex/context/base/lang-ini.lua
@@ -29,12 +29,14 @@ local trace_patterns = false trackers.register("languages.patterns", function(v
local report_initialization = logs.reporter("languages","initialization")
-local prehyphenchar = lang.prehyphenchar -- global per language
+local prehyphenchar = lang.prehyphenchar -- global per language
local posthyphenchar = lang.posthyphenchar -- global per language
local lefthyphenmin = lang.lefthyphenmin
local righthyphenmin = lang.righthyphenmin
+local lang = lang
lang.exceptions = lang.hyphenation
+local new_langage = lang.new
languages = languages or {}
local languages = languages
@@ -65,7 +67,7 @@ local function resolve(tag)
if data then
instance = data.instance
if not instance then
- instance = lang.new(data.number)
+ instance = new_langage(data.number)
data.instance = instance
end
end
@@ -78,7 +80,7 @@ local function tolang(what) -- returns lang object
if data then
local instance = data.lang
if not instance then
- instance = lang.new(data.number)
+ instance = new_langage(data.number)
data.instance = instance
end
return instance
@@ -100,34 +102,34 @@ local function loaddefinitions(tag,specification)
local dataused, ok = data.used, false
for i=1,#definitions do
local definition = definitions[i]
- if definition ~= "" then
- if definition == "reset" then -- interfaces.variables.reset
+ if definition == "" then
+ -- error
+ elseif definition == "reset" then -- interfaces.variables.reset
+ if trace_patterns then
+ report_initialization("clearing patterns for language '%s'",tag)
+ end
+ instance:clear_patterns()
+ elseif not dataused[definition] then
+ dataused[definition] = definition
+ local filename = "lang-" .. definition .. ".lua"
+ local fullname = resolvers.findfile(filename) or ""
+ if fullname ~= "" then
if trace_patterns then
- report_initialization("clearing patterns for language '%s'",tag)
+ report_initialization("loading definition '%s' for language '%s' from '%s'",definition,tag,fullname)
end
- instance:clear_patterns()
- elseif not dataused[definition] then
- dataused[definition] = definition
- local filename = "lang-" .. definition .. ".lua"
- local fullname = resolvers.findfile(filename) or ""
- if fullname ~= "" then
- if trace_patterns then
- report_initialization("loading definition '%s' for language '%s' from '%s'",definition,tag,fullname)
- end
- local defs = dofile(fullname) -- use regular loader instead
- if defs then -- todo: version test
- ok, nofloaded = true, nofloaded + 1
- instance:patterns (defs.patterns and defs.patterns.data or "")
- instance:hyphenation(defs.exceptions and defs.exceptions.data or "")
- else
- report_initialization("invalid definition '%s' for language '%s' in '%s'",definition,tag,filename)
- end
- elseif trace_patterns then
+ local defs = dofile(fullname) -- use regular loader instead
+ if defs then -- todo: version test
+ ok, nofloaded = true, nofloaded + 1
+ instance:patterns (defs.patterns and defs.patterns .data or "")
+ instance:hyphenation(defs.exceptions and defs.exceptions.data or "")
+ else
report_initialization("invalid definition '%s' for language '%s' in '%s'",definition,tag,filename)
end
elseif trace_patterns then
- report_initialization("definition '%s' for language '%s' already loaded",definition,tag)
+ report_initialization("invalid definition '%s' for language '%s' in '%s'",definition,tag,filename)
end
+ elseif trace_patterns then
+ report_initialization("definition '%s' for language '%s' already loaded",definition,tag)
end
end
return ok
@@ -161,7 +163,7 @@ function languages.define(tag,parent)
storage.shared.noflanguages = noflanguages
end
-function languages.synonym(synonym,tag) -- convenience function
+function languages.setsynonym(synonym,tag) -- convenience function
local l = registered[tag]
if l then
l.synonyms[synonym] = true -- maybe some day more info
@@ -169,7 +171,7 @@ function languages.synonym(synonym,tag) -- convenience function
end
function languages.installed(separator)
- context(concat(sortedkeys(registered),separator or ","))
+ return concat(sortedkeys(registered),separator or ",")
end
function languages.current(n)
@@ -187,8 +189,6 @@ function languages.association(tag) -- not yet used
local lat = tag and associated[tag]
if lat then
return lat[1], lat[2]
- else
- return nil, nil
end
end
@@ -204,7 +204,7 @@ end
-- a bit messy, we will do all language setting in lua as we can now assign
-- and 'patterns' will go away here.
-function languages.setdirty(tag)
+function languages.unload(tag)
local l = registered[tag]
if l then
l.dirty = true
@@ -217,13 +217,9 @@ if environment.initex then
return 0
end
- function commands.languagenumber()
- context(0)
- end
-
else
- local function getnumber(tag,default,patterns)
+ function languages.getnumber(tag,default,patterns)
local l = registered[tag]
if l then
if l.dirty then
@@ -264,12 +260,6 @@ else
end
end
- languages.getnumber = getnumber
-
- function commands.languagenumber(tag,default,patterns)
- context(getnumber(tag,default,patterns))
- end
-
end
-- not that usefull, global values
@@ -294,7 +284,7 @@ function languages.loadwords(tag,filename)
end
end
-function languages.exceptions(tag,str)
+function languages.setexceptions(tag,str)
local data, instance = resolve(tag)
if data then
instance:hyphenation(string.strip(str)) -- we need to strip leading spaces
@@ -404,3 +394,20 @@ end)
--~ function hyphenation.loadexceptions(tag, exceptions)
--~ return loadthem(tag, exceptions, filterexceptions, "exceptions")
--~ end
+
+-- interface
+
+local getnumber = languages.getnumber
+
+function commands.languagenumber(tag,default,patterns)
+ context(getnumber(tag,default,patterns))
+end
+
+function commands.installedlanguages(separator)
+ context(languages.installed(separator))
+end
+
+commands.definelanguage = languages.define
+commands.setlanguagesynonym = languages.setsynonym
+commands.unloadlanguage = languages.unload
+commands.setlanguageexceptions = languages.setexceptions