diff options
author | Khaled Hosny <khaledhosny@eglug.org> | 2010-05-21 06:22:29 +0300 |
---|---|---|
committer | Khaled Hosny <khaledhosny@eglug.org> | 2010-05-21 06:22:29 +0300 |
commit | 5f2ef13d20837eb9c0fe84a378e70c5066e6d021 (patch) | |
tree | 8da8eb76198b5015119d88aeb0480dedefa27e1d /lualibs-lpeg.lua | |
parent | 2ede45796e70760267e4928dfff04d3546a8f159 (diff) | |
download | lualibs-5f2ef13d20837eb9c0fe84a378e70c5066e6d021.tar.gz |
Sync with ConTeXt beta (beta 2010.05.20)
Needed to sync luaotfload.
Diffstat (limited to 'lualibs-lpeg.lua')
-rw-r--r-- | lualibs-lpeg.lua | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/lualibs-lpeg.lua b/lualibs-lpeg.lua index f060f3b..b107a8e 100644 --- a/lualibs-lpeg.lua +++ b/lualibs-lpeg.lua @@ -98,6 +98,15 @@ lpeg.splitat = splitat local cache = { } +function lpeg.split(separator,str) + local c = cache[separator] + if not c then + c = Ct(splitat(separator)) + cache[separator] = c + end + return match(c,str) +end + function string:split(separator) local c = cache[separator] if not c then @@ -107,8 +116,21 @@ function string:split(separator) return match(c,self) end +lpeg.splitters = cache + local cache = { } +function lpeg.checkedsplit(separator,str) + local c = cache[separator] + if not c then + separator = P(separator) + local other = C((1 - separator)^0) + c = Ct(separator^0 * other * (separator^1 * other)^0) + cache[separator] = c + end + return match(c,str) +end + function string:checkedsplit(separator) local c = cache[separator] if not c then |