1if not modules then modules = { } end modules ['luatex-languages'] = {
2 version = 1.001,
3 comment = "companion to luatex-languages.tex",
4 author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
5 copyright = "PRAGMA ADE / ConTeXt Development Team",
6 license = "see context related readme files"
7}
8
9if context then
10 os.exit()
11end
12
13
14
15languages = languages or { }
16
17local loaded = { }
18
19function languages.loadpatterns(tag)
20 if not loaded[tag] then
21 loaded[tag] = 0
22 local filename = kpse.find_file("lang-" .. tag .. ".lua")
23 if not filename or filename == "" then
24 logs.report("languages","unknown language file for '%s'",tag)
25 else
26 local whatever = loadfile(filename)
27 if type(whatever) == "function" then
28 whatever = whatever()
29 if type(whatever) == "table" then
30 logs.report("languages","loading language file for '%s'",tag)
31 local characters = whatever.patterns.characters or ""
32 local patterns = whatever.patterns.data or ""
33 local exceptions = whatever.exceptions.data or ""
34 for b in string.utfvalues(characters) do
35
36 tex.setlccode(b,b)
37 end
38 local language = lang.new()
39 lang.patterns(language, patterns)
40 lang.hyphenation(language, exceptions)
41 loaded[tag] = lang.id(language)
42 else
43 logs.report("languages","invalid language table for '%s'",tag)
44 os.exit()
45 end
46 else
47 logs.report("languages","invalid language file for '%s'",tag)
48 os.exit()
49 end
50 end
51 end
52 return loaded[tag]
53end
54 |