diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2019-04-08 13:06:19 +0100 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2019-04-08 13:06:19 +0100 |
commit | b1ac8fdb8714fe4ae08ebea8fdc37be3c6c2a531 (patch) | |
tree | 3f91414a71ec2c1b94fd683fde63ccf90cb97b00 /lualib | |
parent | 2c5aaa7e85739d513143e825ed98a64c2e69785b (diff) | |
download | rspamd-b1ac8fdb8714fe4ae08ebea8fdc37be3c6c2a531.tar.gz rspamd-b1ac8fdb8714fe4ae08ebea8fdc37be3c6c2a531.zip |
[Minor] Add preliminary ical support library
Diffstat (limited to 'lualib')
-rw-r--r-- | lualib/lua_ical.lua | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/lualib/lua_ical.lua b/lualib/lua_ical.lua new file mode 100644 index 000000000..4f6b61919 --- /dev/null +++ b/lualib/lua_ical.lua @@ -0,0 +1,47 @@ +--[[ +Copyright (c) 2019, Vsevolod Stakhov <vsevolod@highsecure.ru> + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +]]-- + +local l = require 'lpeg' + +local wsp = l.P" " +local crlf = l.P"\r"^-1 * l.P"\n" +local eol = (crlf * #crlf) + (crlf - (crlf^-1 * wsp)) +local name = l.C((l.P(1) - (l.P":"))^1) / function(v) return (v:gsub("[\n\r]+%s","")) end +local value = l.C((l.P(1) - eol)^0) / function(v) return (v:gsub("[\n\r]+%s","")) end +local elt = name * ":" * wsp^0 * value * eol + +local exports = {} + +local function ical_txt_values(input) + local control={n='\n', r='\r'} + local escaper = l.Ct((elt / function(_,b) return (b:gsub("\\(.)", control)) end)^1) + + local values = escaper:match(input) + + if not values then + return nil + end + + return table.concat(values, "\n") +end + +--[[[ +-- @function lua_ical.ical_txt_values(input) +-- Returns all values from ical as a plain text. Names are completely ignored. +--]] +exports.ical_txt_values = ical_txt_values + +return exports
\ No newline at end of file |