]> source.dussan.org Git - rspamd.git/commitdiff
[Minor] Add default split pattern (on spaces)
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Wed, 25 Jul 2018 15:46:12 +0000 (16:46 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Wed, 25 Jul 2018 15:46:56 +0000 (16:46 +0100)
lualib/lua_util.lua

index 5bf8dc026ad9e3573e188024fd81ab436a9f5cb0..520318fe650f52054a00cdccdabc118f0540195c 100644 (file)
@@ -25,15 +25,33 @@ local rspamd_util = require "rspamd_util"
 local fun = require "fun"
 
 local split_grammar = {}
+local spaces_split_grammar
+local space = lpeg.S' \t\n\v\f\r'
+local nospace = 1 - space
+local ptrim = space^0 * lpeg.C((space^0 * nospace^1)^0)
+local match = lpeg.match
+
 local function rspamd_str_split(s, sep)
-  local gr = split_grammar[sep]
-
-  if not gr then
-    local _sep = lpeg.P(sep)
-    local elem = lpeg.C((1 - _sep)^0)
-    local p = lpeg.Ct(elem * (_sep * elem)^0)
-    gr = p
-    split_grammar[sep] = gr
+  local gr
+  if not sep then
+    if not spaces_split_grammar then
+      local _sep = space
+      local elem = lpeg.C((1 - _sep)^0)
+      local p = lpeg.Ct(elem * (_sep * elem)^0)
+      spaces_split_grammar = p
+    end
+
+    gr = spaces_split_grammar
+  else
+    gr = split_grammar[sep]
+
+    if not gr then
+      local _sep = lpeg.P(sep)
+      local elem = lpeg.C((1 - _sep)^0)
+      local p = lpeg.Ct(elem * (_sep * elem)^0)
+      gr = p
+      split_grammar[sep] = gr
+    end
   end
 
   return gr:match(s)
@@ -50,10 +68,6 @@ end
 exports.rspamd_str_split = rspamd_str_split
 exports.str_split = rspamd_str_split
 
-local space = lpeg.S' \t\n\v\f\r'
-local nospace = 1 - space
-local ptrim = space^0 * lpeg.C((space^0 * nospace^1)^0)
-local match = lpeg.match
 exports.rspamd_str_trim = function(s)
   return match(ptrim, s)
 end