From b4b58bbfe882406b09b2548e7aa55d238987f894 Mon Sep 17 00:00:00 2001
From: Marius <mariausol@gmail.com>
Date: Sat, 20 Nov 2010 00:20:11 +0200
Subject: beta 2010.11.19 22:50

---
 tex/generic/context/luatex-fonts-merged.lua | 99 +++++++++--------------------
 1 file changed, 31 insertions(+), 68 deletions(-)

(limited to 'tex/generic')

diff --git a/tex/generic/context/luatex-fonts-merged.lua b/tex/generic/context/luatex-fonts-merged.lua
index a7056a39d..83a11409e 100644
--- a/tex/generic/context/luatex-fonts-merged.lua
+++ b/tex/generic/context/luatex-fonts-merged.lua
@@ -1,6 +1,6 @@
 -- merged file : luatex-fonts-merged.lua
 -- parent file : luatex-fonts.lua
--- merge date  : 11/18/10 19:47:18
+-- merge date  : 11/19/10 22:50:14
 
 do -- begin closure to overcome local limits and interference
 
@@ -122,52 +122,6 @@ function string.topattern(str,lowercase,strict)
     end
 end
 
---~ local t = {
---~     "1234567123456712345671234567",
---~     "a\tb\tc",
---~     "aa\tbb\tcc",
---~     "aaa\tbbb\tccc",
---~     "aaaa\tbbbb\tcccc",
---~     "aaaaa\tbbbbb\tccccc",
---~     "aaaaaa\tbbbbbb\tcccccc",
---~ }
---~ for k,v do
---~     print(string.tabtospace(t[k]))
---~ end
-
--- The following functions might end up in another namespace.
-
-function string.tabtospace(str,tab)
-    -- we don't handle embedded newlines
-    while true do
-        local s = find(str,"\t")
-        if s then
-            if not tab then tab = 7 end -- only when found
-            local d = tab-(s-1) % tab
-            if d > 0 then
-                str = gsub(str,"\t",rep(" ",d),1)
-            else
-                str = gsub(str,"\t","",1)
-            end
-        else
-            break
-        end
-    end
-    return str
-end
-
---~ local template = string.striplong([[
---~   aaaa
---~   bb
---~   cccccc
---~ ]])
-
-function string.striplong(str) -- strips all leading spaces
-    str = gsub(str,"^%s*","")
-    str = gsub(str,"[\n\r]+ *","\n")
-    return str
-end
-
 -- obsolete names:
 
 string.quote   = string.quoted
@@ -187,6 +141,8 @@ if not modules then modules = { } end modules ['l-lpeg'] = {
 
 local lpeg = require("lpeg")
 
+local type = type
+
 lpeg.patterns  = lpeg.patterns or { } -- so that we can share
 local patterns = lpeg.patterns
 
@@ -196,10 +152,16 @@ local Ct, C, Cs, Cc, Cf, Cg = lpeg.Ct, lpeg.C, lpeg.Cs, lpeg.Cc, lpeg.Cf, lpeg.C
 local utfcharacters    = string.utfcharacters
 local utfgmatch        = unicode and unicode.utf8.gmatch
 
+local anything         = P(1)
+local endofstring      = P(-1)
+
+patterns.anything      = anything
+patterns.endofstring   = endofstring
+
 local digit, sign      = R('09'), S('+-')
 local cr, lf, crlf     = P("\r"), P("\n"), P("\r\n")
 local utf8next         = R("\128\191")
-local escaped          = P("\\") * P(1)
+local escaped          = P("\\") * anything
 local squote           = P("'")
 local dquote           = P('"')
 
@@ -210,7 +172,7 @@ patterns.utf8four      = R("\240\244") * utf8next * utf8next * utf8next
 patterns.utfbom        = P('\000\000\254\255') + P('\255\254\000\000') + P('\255\254') + P('\254\255') + P('\239\187\191')
 
 local utf8char         = patterns.utf8one + patterns.utf8two + patterns.utf8three + patterns.utf8four
-local validutf8char    = utf8char^0 * P(-1) * Cc(true) + Cc(false)
+local validutf8char    = utf8char^0 * endofstring * Cc(true) + Cc(false)
 
 patterns.utf8          = utf8char
 patterns.utf8char      = utf8char
@@ -235,6 +197,7 @@ patterns.uppercase     = R("AZ")
 patterns.letter        = patterns.lowercase + patterns.uppercase
 patterns.space         = P(" ")
 patterns.tab           = P("\t")
+patterns.spaceortab    = patterns.space + patterns.tab
 patterns.eol           = S("\n\r")
 patterns.spacer        = S(" \t\f\v")  -- + string.char(0xc2, 0xa0) if we want utf (cf mail roberto)
 patterns.newline       = crlf + cr + lf
@@ -253,7 +216,7 @@ patterns.unsingle      = (squote/"") * ((escaped + (1-squote))^0) * (squote/"")
 patterns.unquoted      = patterns.undouble + patterns.unsingle -- more often undouble
 patterns.unspacer      = ((patterns.spacer^1)/"")^0
 
-local unquoted = Cs(patterns.unquoted * P(-1)) -- not C
+local unquoted = Cs(patterns.unquoted * endofstring) -- not C
 
 function string.unquoted(str)
     return match(unquoted,str) or str
@@ -293,7 +256,7 @@ local function splitat(separator,single)
         separator = P(separator)
         local other = C((1 - separator)^0)
         if single then
-            local any = P(1)
+            local any = anything
             splitter = other * (separator * C(any^0) + "") -- ?
             splitters_s[separator] = splitter
         else
@@ -357,18 +320,6 @@ function string.checkedsplit(str,separator)
     return match(c,str)
 end
 
---~ function lpeg.append(list,pp)
---~     local p = pp
---~     for l=1,#list do
---~         if p then
---~             p = p + P(list[l])
---~         else
---~             p = P(list[l])
---~         end
---~     end
---~     return p
---~ end
-
 --~ from roberto's site:
 
 local f1 = string.byte
@@ -453,7 +404,7 @@ function lpeg.secondofsplit(separator) -- nil if not split
     local splitter = splitters_s[separator]
     if not splitter then
         separator = P(separator)
-        splitter = (1 - separator)^0 * separator * C(P(1)^0)
+        splitter = (1 - separator)^0 * separator * C(anything^0)
         splitters_s[separator] = splitter
     end
     return splitter
@@ -476,7 +427,7 @@ end
 --~ -- slower:
 --~
 --~ function lpeg.counter(pattern)
---~     local n, pattern = 0, (lpeg.P(pattern)/function() n = n + 1 end  + lpeg.P(1))^0
+--~     local n, pattern = 0, (lpeg.P(pattern)/function() n = n + 1 end  + lpeg.anything)^0
 --~     return function(str) n = 0 ; lpegmatch(pattern,str) ; return n end
 --~ end
 
@@ -539,8 +490,8 @@ local simple_escapes = { -- also defines in l-string
     ["*"] = ".*",
 }
 
-local p = Cs((S("-.+*%()[]") / patterns_escapes + P(1))^0)
-local s = Cs((S("-.+*%()[]") / simple_escapes   + P(1))^0)
+local p = Cs((S("-.+*%()[]") / patterns_escapes + anything)^0)
+local s = Cs((S("-.+*%()[]") / simple_escapes   + anything)^0)
 
 function string.escapedpattern(str,simple)
     if simple then
@@ -646,6 +597,18 @@ end
 --~ print(lpeg.count("äáàa",lpeg.UR("àá")))
 --~ print(lpeg.count("äáàa",lpeg.UR(0x0000,0xFFFF)))
 
+function lpeg.oneof(list,...) -- lpeg.oneof("elseif","else","if","then")
+    if type(list) ~= "table" then
+        list = { list, ... }
+    end
+ -- sort(list) -- longest match first
+    local p = P(list[1])
+    for l=2,#list do
+        p = p + P(list[l])
+    end
+    return p
+end
+
 end -- closure
 
 do -- begin closure to overcome local limits and interference
@@ -3813,7 +3776,7 @@ function tfm.scale(tfmtable, scaledpoints, relativeid)
             end
         end
     --  if trace_scaling then
-    --      report_define("t=%s, u=%s, i=%s, n=%s c=%s",k,chr.tounicode or k,description.index,description.name or '-',description.class or '-')
+    --    report_define("t=%s, u=%s, i=%s, n=%s c=%s",k,chr.tounicode or "",index or 0,description.name or '-',description.class or '-')
     --  end
         if tounicode then
             local tu = tounicode[index] -- nb: index!
-- 
cgit v1.2.3