diff options
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/context/lua/mtx-patterns.lua | 54 |
1 files changed, 38 insertions, 16 deletions
diff --git a/scripts/context/lua/mtx-patterns.lua b/scripts/context/lua/mtx-patterns.lua index d76606a6b..fbcb251b1 100644 --- a/scripts/context/lua/mtx-patterns.lua +++ b/scripts/context/lua/mtx-patterns.lua @@ -157,7 +157,7 @@ function scripts.patterns.load(path,name,mnemonic,ignored) local hyphenations, patterns, comment, stripset = "", "", "", "" local splitpatternsnew, splithyphenationsnew = { }, { } local splitpatternsold, splithyphenationsold = { }, { } - local usedpatterncharacters, usedhyphenationcharacters = { }, { } + local usedpatterncharactersnew, usedhyphenationcharactersnew = { }, { } if lfs.isfile(patfile) then report("using txt files %s.[hyp|pat|lic].txt",name) comment, patterns, hyphenations = io.loaddata(licfile) or "", io.loaddata(patfile) or "", io.loaddata(hypfile) or "" @@ -258,7 +258,7 @@ function scripts.patterns.load(path,name,mnemonic,ignored) if not cdb then report("no entry in chardata for character %s (0x%04X)",char(b),b) else - local ct = cd[b].category + local ct = cdb.category if ct == "lu" or ct == "ll" then used[char(b)] = true elseif ct == "nd" then @@ -272,10 +272,10 @@ function scripts.patterns.load(path,name,mnemonic,ignored) end end end - return used + return used end - usedpatterncharacters = check(splitpatternsnew,byte(".")) - usedhyphenationcharacters = check(splithyphenationsnew,byte("-")) + usedpatterncharactersnew = check(splitpatternsnew,byte(".")) + usedhyphenationcharactersnew = check(splithyphenationsnew,byte("-")) for k, v in next, stripped do report("entries that contain character %s (0x%04X) have been omitted",char(k),k) end @@ -350,16 +350,36 @@ function scripts.patterns.load(path,name,mnemonic,ignored) if not okay then report("no valid file %s.*",name) end - return okay, splitpatternsnew, splithyphenationsnew, splitpatternsold, splithyphenationsold, comment, stripset, usedpatterncharacters, usedhyphenationcharacters + + local function getused(t) + local u = { } + for k, v in next, t do + if ignored and ignored[k] then + elseif replaced_whatever[k] then + else + u[k] = v + end + end + return u + end + local usedpatterncharactersold = getused(usedpatterncharactersnew) + local usedhyphenationcharactersold = getused(usedhyphenationcharactersnew) + + return okay, + splitpatternsnew, splithyphenationsnew, splitpatternsold, splithyphenationsold, comment, stripset, + usedpatterncharactersnew, usedhyphenationcharactersnew, usedpatterncharactersold, usedhyphenationcharactersold end -function scripts.patterns.save(destination,mnemonic,name,patternsnew,hyphenationsnew,patternsold,hyphenationsold,comment,stripped,pused,hused,ignored) +function scripts.patterns.save(destination,mnemonic,name,patternsnew,hyphenationsnew,patternsold,hyphenationsold,comment,stripped, + pusednew,husednew,pusedold,husedold,ignored) local nofpatternsnew, nofhyphenationsnew = #patternsnew, #hyphenationsnew local nofpatternsold, nofhyphenationsold = #patternsold, #hyphenationsold report("language %s has %s old and %s new patterns and %s old and %s new exceptions",mnemonic,nofpatternsold,nofpatternsnew,nofhyphenationsold,nofhyphenationsnew) if mnemonic ~= "??" then - local pu = concat(table.sortedkeys(pused), " ") - local hu = concat(table.sortedkeys(hused), " ") + local punew = concat(table.sortedkeys(pusednew), " ") + local hunew = concat(table.sortedkeys(husednew), " ") + local puold = concat(table.sortedkeys(pusedold), " ") + local huold = concat(table.sortedkeys(husedold), " ") local rmefile = file.join(destination,"lang-"..mnemonic..".rme") local patfile = file.join(destination,"lang-"..mnemonic..".pat") @@ -367,7 +387,7 @@ function scripts.patterns.save(destination,mnemonic,name,patternsnew,hyphenation local luafile = file.join(destination,"lang-"..mnemonic..".lua") -- suffix might change to llg local topline = "% generated by mtxrun --script pattern --convert" - local banner = "% for comment and copyright, see " .. rmefile + local banner = "% for comment and copyright, see " .. file.basename(rmefile) report("saving language data for %s",mnemonic) if not comment or comment == "" then comment = "% no comment" end if not type(destination) == "string" then destination = "." end @@ -391,7 +411,7 @@ function scripts.patterns.save(destination,mnemonic,name,patternsnew,hyphenation patterndata = { n = nofpatternsnew, data = concat(patternsnew," ") or nil, - characters = concat(table.sortedkeys(pused),""), + characters = concat(table.sortedkeys(pusednew),""), minhyphenmin = 1, -- determined by pattern author minhyphenmax = 1, -- determined by pattern author } @@ -404,7 +424,7 @@ function scripts.patterns.save(destination,mnemonic,name,patternsnew,hyphenation hyphenationdata = { n = nofhyphenationsnew, data = concat(hyphenationsnew," "), - characters = concat(table.sortedkeys(hused),""), + characters = concat(table.sortedkeys(husednew),""), } else hyphenationdata = { @@ -427,8 +447,8 @@ function scripts.patterns.save(destination,mnemonic,name,patternsnew,hyphenation os.remove(luafile) io.savedata(rmefile,format("%s\n\n%s",topline,comment)) - io.savedata(patfile,format("%s\n\n%s\n\n%% used: %s\n\n\\patterns{\n%s}",topline,banner,pu,concat(patternsold,"\n"))) - io.savedata(hypfile,format("%s\n\n%s\n\n%% used: %s\n\n\\hyphenation{\n%s}",topline,banner,hu,concat(hyphenationsold,"\n"))) + io.savedata(patfile,format("%s\n\n%s\n\n%% used: %s\n\n\\patterns{\n%s}",topline,banner,puold,concat(patternsold,"\n"))) + io.savedata(hypfile,format("%s\n\n%s\n\n%% used: %s\n\n\\hyphenation{\n%s}",topline,banner,huold,concat(hyphenationsold,"\n"))) io.savedata(luafile,table.serialize(data,true)) end end @@ -475,9 +495,11 @@ function scripts.patterns.convert() local mnemonic, name, ignored = v[1], v[2], v[4] if not only or only[mnemonic] then report("converting language %s, file %s", mnemonic, name) - local okay, patternsnew, hyphenationsnew, patternsold, hyphenationsold, comment, stripped, pused, hused = scripts.patterns.load(path,name,mnemonic,ignored) + local okay, patternsnew, hyphenationsnew, patternsold, hyphenationsold, comment, stripped, + pusednew, husednew, pusedold, husedold = scripts.patterns.load(path,name,mnemonic,ignored) if okay then - scripts.patterns.save(destination,mnemonic,name,patternsnew,hyphenationsnew,patternsold,hyphenationsold,comment,stripped,pused,hused,ignored) + scripts.patterns.save(destination,mnemonic,name,patternsnew,hyphenationsnew,patternsold,hyphenationsold,comment,stripped, + pusednew,husednew,pusedold,husedold,ignored) else report("convertion aborted due to error(s)") end |