Module:Plain text

From escforumwiki
Revision as of 07:32, 14 April 2018 by en>Galobtter (+comment)
Jump to navigation Jump to search

Documentation for this module may be created at Module:Plain text/doc

--converts text with wikilinks to plain text, e.g "[[foo|gah]] is [[bar]]" to "gah is bar"
--removes anything enclosed in tags and files, and italic and bold markup
local p = {}

--this function is copied from Module:Citation/CS1/COinS
function p.strip_apostrophe_markup (argument)
	if argument:find ( "''", 1, true ) == nil then								-- Is there at least one double apostrophe?  If not, exit.
		return argument
	end

	while true do
		if argument:find ( "'''''", 1, true ) then								-- bold italic (5)
			argument=argument:gsub("%'%'%'%'%'", "");							-- remove all instances of it
		elseif argument:find ( "''''", 1, true ) then							-- italic start and end without content (4)
			argument=argument:gsub("%'%'%'%'", "");
		elseif argument:find ( "'''", 1, true ) then							-- bold (3)
			argument=argument:gsub("%'%'%'", "");
		elseif argument:find ( "''", 1, true ) then								-- italic (2)
			argument=argument:gsub("%'%'", "");
		else
			break;
		end
	end
	return argument;															-- done
end

function p.main(frame)
	text = frame.args[1]
	text = mw.ustring.gsub (text, '<.->.-<.->', '') --strip out flags, plus any other tags, e.g footnotes
	text = mw.ustring.gsub (text, '%[%[File:.-%]%]', '') --strip out files
	text = mw.ustring.gsub (text, '%[%[.-|', '') --strip out piped link text
	text = mw.ustring.gsub (text, '%[', '') --then strip out remaining [ and ]
	text = mw.ustring.gsub (text, '%]', '')
	text = p.strip_apostrophe_markup(text)
	return text
end

return p