From a0a27b8744fe9767105841925785f8d54781bc19 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Sat, 23 Nov 2019 14:20:21 +0000 Subject: [Rework] Start lua_content library --- lualib/lua_content/ical.lua | 47 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 lualib/lua_content/ical.lua (limited to 'lualib/lua_content/ical.lua') diff --git a/lualib/lua_content/ical.lua b/lualib/lua_content/ical.lua new file mode 100644 index 000000000..4f6b61919 --- /dev/null +++ b/lualib/lua_content/ical.lua @@ -0,0 +1,47 @@ +--[[ +Copyright (c) 2019, Vsevolod Stakhov + +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 -- cgit v1.2.3