Module:string/encode entities

< Module:string
Revision as of 10:39, 6 August 2024 by Sware (talk | contribs) (Created page with "local m_str_utils = require("Module:string utilities") local codepoint = m_str_utils.codepoint local decode_entities = m_str_utils.decode_entities local find = string.find local format = string.format local gsub = string.gsub local match = string.match local pattern_escape = m_str_utils.pattern_escape local function encode_entity(ch) return "&#x" .. format("%X", codepoint(ch)) .. ";" end return function(text, charset, raw) if not raw then text = decode_entities(te...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Documentation for this module may be created at Module:string/encode entities/doc

local m_str_utils = require("Module:string utilities")

local codepoint = m_str_utils.codepoint
local decode_entities = m_str_utils.decode_entities
local find = string.find
local format = string.format
local gsub = string.gsub
local match = string.match
local pattern_escape = m_str_utils.pattern_escape

local function encode_entity(ch)
	return "&#x" .. format("%X", codepoint(ch)) .. ";"
end

return function(text, charset, raw)
	if not raw then
		text = decode_entities(text)
	end
	if charset == "" then
		return text
	elseif not charset then
		charset = "\"&'<>\194\160"
	elseif not match(charset, "[\128-\244]") then
		return (gsub(text, "[" .. pattern_escape(charset) .. "]", encode_entity))
	end
	return (gsub(text, "[%z\1-\127\194-\244][\128-\191]*", function(ch)
		return find(charset, ch, 1, true) and encode_entity(ch) or nil
	end))
end