diff options
Diffstat (limited to 'test/lua/pat2pcre.lua')
-rw-r--r-- | test/lua/pat2pcre.lua | 87 |
1 files changed, 0 insertions, 87 deletions
diff --git a/test/lua/pat2pcre.lua b/test/lua/pat2pcre.lua deleted file mode 100644 index 2d60a443b2..0000000000 --- a/test/lua/pat2pcre.lua +++ /dev/null @@ -1,87 +0,0 @@ --- See Copyright Notice in the file lrexlib.h - --- Convert Lua regex pattern to its PCRE equivalent. - -local t_esc = { - a = "[:alpha:]", - A = "[:^alpha:]", - c = "[:cntrl:]", - C = "[:^cntrl:]", - d = "[:digit:]", - D = "[:^digit:]", - l = "[:lower:]", - L = "[:^lower:]", - p = "[:punct:]", - P = "[:^punct:]", - s = "[:space:]", - S = "[:^space:]", - u = "[:upper:]", - U = "[:^upper:]", - w = "[:alnum:]", - W = "[:^alnum:]", - x = "[:xdigit:]", - X = "[:^xdigit:]", - z = "\\x00", - Z = "\\x01-\\xFF", -} - -local function rep_normal (ch) - assert (ch ~= "b", "\"%b\" subpattern is not supported") - assert (ch ~= "0", "invalid capture index") - local v = t_esc[ch] - return v and ("[" .. v .. "]") or ("\\" .. ch) -end - -local function rep_charclass (ch) - return t_esc[ch] or ("\\" .. ch) -end - -function pat2pcre (s) - local ind = 0 - - local function getc () - ind = ind + 1 - return string.sub (s, ind, ind) - end - - local function getnum () - local num = string.match (s, "^\\(%d%d?%d?)", ind) - if num then - ind = ind + #num - return string.format ("\\x%02X", num) - end - end - - local out, state = "", "normal" - while ind < #s do - local ch = getc () - if state == "normal" then - if ch == "%" then - out = out .. rep_normal (getc ()) - elseif ch == "-" then - out = out .. "*?" - elseif ch == "." then - out = out .. "\\C" - elseif ch == "[" then - out = out .. ch - state = "charclass" - else - local num = getnum () - out = num and (out .. num) or (out .. ch) - end - elseif state == "charclass" then - if ch == "%" then - out = out .. rep_charclass (getc ()) - elseif ch == "]" then - out = out .. ch - state = "normal" - else - local num = getnum () - out = num and (out .. num) or (out .. ch) - end - end - end - return out -end - -return pat2pcre |