diff options
Diffstat (limited to 'scripts')
| -rw-r--r-- | scripts/context/lua/mtxrun.lua | 57 | ||||
| -rw-r--r-- | scripts/context/stubs/mswin/mtxrun.lua | 57 | ||||
| -rwxr-xr-x | scripts/context/stubs/unix/mtxrun | 57 | 
3 files changed, 168 insertions, 3 deletions
| diff --git a/scripts/context/lua/mtxrun.lua b/scripts/context/lua/mtxrun.lua index 995e5e814..2932f92a6 100644 --- a/scripts/context/lua/mtxrun.lua +++ b/scripts/context/lua/mtxrun.lua @@ -1130,7 +1130,7 @@ local report = texio and texio.write_nl or print  local type = type -local byte, char = string.byte, string.char +local byte, char, gmatch = string.byte, string.char, string.gmatch  -- Beware, we predefine a bunch of patterns here and one reason for doing so  -- is that we get consistent behaviour in some of the visualizers. @@ -1698,6 +1698,61 @@ end  --     end  -- end +-- experiment: + +local function make(t) +    local p +--     for k, v in next, t do +    for k, v in table.sortedhash(t) do +        if not p then +            if next(v) then +                p = P(k) * make(v) +            else +                p = P(k) +            end +        else +            if next(v) then +                p = p + P(k) * make(v) +            else +                p = p + P(k) +            end +        end +    end +    return p +end + +function lpeg.utfchartabletopattern(list) +    local tree = { } +    for i=1,#list do +        local t = tree +        for c in gmatch(list[i],".") do +            if not t[c] then +                t[c] = { } +            end +            t = t[c] +        end +    end +    return make(tree) +end + +-- inspect ( lpeg.utfchartabletopattern { +--     utfchar(0x00A0), -- nbsp +--     utfchar(0x2000), -- enquad +--     utfchar(0x2001), -- emquad +--     utfchar(0x2002), -- enspace +--     utfchar(0x2003), -- emspace +--     utfchar(0x2004), -- threeperemspace +--     utfchar(0x2005), -- fourperemspace +--     utfchar(0x2006), -- sixperemspace +--     utfchar(0x2007), -- figurespace +--     utfchar(0x2008), -- punctuationspace +--     utfchar(0x2009), -- breakablethinspace +--     utfchar(0x200A), -- hairspace +--     utfchar(0x200B), -- zerowidthspace +--     utfchar(0x202F), -- narrownobreakspace +--     utfchar(0x205F), -- math thinspace +-- } ) +  end -- of closure diff --git a/scripts/context/stubs/mswin/mtxrun.lua b/scripts/context/stubs/mswin/mtxrun.lua index 995e5e814..2932f92a6 100644 --- a/scripts/context/stubs/mswin/mtxrun.lua +++ b/scripts/context/stubs/mswin/mtxrun.lua @@ -1130,7 +1130,7 @@ local report = texio and texio.write_nl or print  local type = type -local byte, char = string.byte, string.char +local byte, char, gmatch = string.byte, string.char, string.gmatch  -- Beware, we predefine a bunch of patterns here and one reason for doing so  -- is that we get consistent behaviour in some of the visualizers. @@ -1698,6 +1698,61 @@ end  --     end  -- end +-- experiment: + +local function make(t) +    local p +--     for k, v in next, t do +    for k, v in table.sortedhash(t) do +        if not p then +            if next(v) then +                p = P(k) * make(v) +            else +                p = P(k) +            end +        else +            if next(v) then +                p = p + P(k) * make(v) +            else +                p = p + P(k) +            end +        end +    end +    return p +end + +function lpeg.utfchartabletopattern(list) +    local tree = { } +    for i=1,#list do +        local t = tree +        for c in gmatch(list[i],".") do +            if not t[c] then +                t[c] = { } +            end +            t = t[c] +        end +    end +    return make(tree) +end + +-- inspect ( lpeg.utfchartabletopattern { +--     utfchar(0x00A0), -- nbsp +--     utfchar(0x2000), -- enquad +--     utfchar(0x2001), -- emquad +--     utfchar(0x2002), -- enspace +--     utfchar(0x2003), -- emspace +--     utfchar(0x2004), -- threeperemspace +--     utfchar(0x2005), -- fourperemspace +--     utfchar(0x2006), -- sixperemspace +--     utfchar(0x2007), -- figurespace +--     utfchar(0x2008), -- punctuationspace +--     utfchar(0x2009), -- breakablethinspace +--     utfchar(0x200A), -- hairspace +--     utfchar(0x200B), -- zerowidthspace +--     utfchar(0x202F), -- narrownobreakspace +--     utfchar(0x205F), -- math thinspace +-- } ) +  end -- of closure diff --git a/scripts/context/stubs/unix/mtxrun b/scripts/context/stubs/unix/mtxrun index 995e5e814..2932f92a6 100755 --- a/scripts/context/stubs/unix/mtxrun +++ b/scripts/context/stubs/unix/mtxrun @@ -1130,7 +1130,7 @@ local report = texio and texio.write_nl or print  local type = type -local byte, char = string.byte, string.char +local byte, char, gmatch = string.byte, string.char, string.gmatch  -- Beware, we predefine a bunch of patterns here and one reason for doing so  -- is that we get consistent behaviour in some of the visualizers. @@ -1698,6 +1698,61 @@ end  --     end  -- end +-- experiment: + +local function make(t) +    local p +--     for k, v in next, t do +    for k, v in table.sortedhash(t) do +        if not p then +            if next(v) then +                p = P(k) * make(v) +            else +                p = P(k) +            end +        else +            if next(v) then +                p = p + P(k) * make(v) +            else +                p = p + P(k) +            end +        end +    end +    return p +end + +function lpeg.utfchartabletopattern(list) +    local tree = { } +    for i=1,#list do +        local t = tree +        for c in gmatch(list[i],".") do +            if not t[c] then +                t[c] = { } +            end +            t = t[c] +        end +    end +    return make(tree) +end + +-- inspect ( lpeg.utfchartabletopattern { +--     utfchar(0x00A0), -- nbsp +--     utfchar(0x2000), -- enquad +--     utfchar(0x2001), -- emquad +--     utfchar(0x2002), -- enspace +--     utfchar(0x2003), -- emspace +--     utfchar(0x2004), -- threeperemspace +--     utfchar(0x2005), -- fourperemspace +--     utfchar(0x2006), -- sixperemspace +--     utfchar(0x2007), -- figurespace +--     utfchar(0x2008), -- punctuationspace +--     utfchar(0x2009), -- breakablethinspace +--     utfchar(0x200A), -- hairspace +--     utfchar(0x200B), -- zerowidthspace +--     utfchar(0x202F), -- narrownobreakspace +--     utfchar(0x205F), -- math thinspace +-- } ) +  end -- of closure | 
