From fbd63dafcc1d82ed76bb45e2c235e001e1e844e5 Mon Sep 17 00:00:00 2001 From: Jo-Philipp Wich Date: Sun, 25 Jan 2009 13:14:29 +0000 Subject: [PATCH] Merge r4115 r4118 --- libs/core/luasrc/util.lua | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/libs/core/luasrc/util.lua b/libs/core/luasrc/util.lua index 10606e825c..79f01a6269 100644 --- a/libs/core/luasrc/util.lua +++ b/libs/core/luasrc/util.lua @@ -193,16 +193,25 @@ end --- Create valid XML PCDATA from given string. -- @param value String value containing the data to escape -- @return String value containing the escaped data -local _pcdata_repl = { - ["&"] = "&", - ['"'] = """, - ["'"] = "'", - ["<"] = "<", - [">"] = ">" -} +local function _pcdata_repl(c) + local i = string.byte(c) + + if ( i >= 0x00 and i <= 0x08 ) or ( i >= 0x0B and i <= 0x0C ) or + ( i >= 0x0E and i <= 0x1F ) or ( i == 0x7F ) + then + return "" + + elseif ( i == 0x26 ) or ( i == 0x27 ) or ( i == 0x22 ) or + ( i == 0x3C ) or ( i == 0x3E ) + then + return string.format("&#%i;", i) + end + + return c +end function pcdata(value) - return value and tostring(value):gsub("[&\"'<>]", _pcdata_repl) + return value and tostring(value):gsub("[&\"'<>%c]", _pcdata_repl) end --- Strip HTML tags from given string. -- 2.30.2