Module:Char

From Multilingual Bookbinding Dictionary
Revision as of 06:58, 20 August 2020 by Imported>Sarang (expansion)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

This module checks for some critical leading characters in the passed string,
and replaces them by their decimal numeric character references,
to avoid their interpretion as wiki syntax, and returns the (altered) string.

It can be invoked directly by either "Char|substitute" or shorter by "Char|subst"
or by using the Template:Charsubst: {{Charsubst|1= }}

heavily used module, because of "tle/parm" was not recognized as a supported language code."tle/parm" was not recognized as a supported language code. "tle/parm" was not recognized as a supported language code., "igen/sub" was not recognized as a supported language code."igen/sub" was not recognized as a supported language code. "igen/sub" was not recognized as a supported language code. and "igen/top" was not recognized as a supported language code."igen/top" was not recognized as a supported language code. "igen/top" was not recognized as a supported language code..



-- This function can substitute some critical leading characters
-- by their decimal numeric character references
-- to avoid their interpretion as wiki syntax

local ncr = {}

-- function:  removes characters at the start of the string: '#', '*', ':', ';'
function ncr.subst      ( frame )
	local gpar = frame.args
	local char = ''
	if gpar then char = mw.text.trim ( gpar[1] )-- global
		else	 char = mw.text.trim ( frame )	-- local
	end
   if  mw.ustring.sub ( char, 1, 1 ) == '#' then 
         return '#' .. mw.ustring.sub( char, 2, #char );
    elseif mw.ustring.sub ( char, 1, 1 ) == '*' then 
         return '*' .. mw.ustring.sub( char, 2, #char );
    elseif mw.ustring.sub ( char, 1, 1 ) == ':' then 
         return ':' .. mw.ustring.sub( char, 2, #char );
    elseif mw.ustring.sub ( char, 1, 1 ) == ';' then 
         return '&#59;' .. mw.ustring.sub( char, 2, #char );
    else
         return char;
    end
end -- end function subst

-- alias long function name for abbreviation 
function ncr.substitute ( frame )
	local gpar = frame.args
	return ncr.subst ( gpar[1] );
end -- end function substitute


-- function: removes characters: '"', '&', "'", '<', '=', '>', '[', ']', '{', '|', '}'
function ncr.nowiki ( frame )
	local gpar = frame.args
	return mw.text.nowiki( gpar[1] );
end -- end function nowiki

return ncr;