Module:Plain text

From Hârn
Jump to navigation Jump to search

Developed for producing short descriptions from text that may have markup, or other stuff that needs removing from short descriptions.

Usage[edit source]

{{#invoke:Plain text|main|'''[[foo|hah]]''' is '''''[[gah]]'''''}} --> hah is gah


--converts text with wikilinks to plain text, e.g "[[foo|gah]] is [[bar]]" to "gah is bar"
--removes anything enclosed in tags that isn't nested, mediawiki strip markers (references etc), files, italic and bold markup
local p = {}

function p.main(frame)
	local text = frame.args[1]
	return p._main(text)
end

function p._main(text)
	if not text then return end
	text = mw.text.killMarkers(text)
		:gsub('<span class="nowrap">(.+)</span>', '%1') --remove nowrap while keeping text inside
		:gsub('<br ?/?>', ', ') --replace br with commas
		:gsub('<.->.-<.->', '') --strip out tags
		:gsub('%[%[%s*[Ff]ile%s*:.-%]%]', '') --strip out files
		:gsub('%[%[%s*[Ii]mage%s*:.-%]%]', '') --strip out use of image:
		:gsub('%[%[%s*[Cc]ategory%s*:.-%]%]', '') --strip out categories
		:gsub('%[%[[^%]]-|', '') --strip out piped link text
		:gsub('[%[%]]', '') --then strip out remaining [ and ]
		:gsub("'''''", "") --strip out bold italic markup
		:gsub("'''?", "") --not stripping out '''' gives correct output for bolded text in quotes
	return text
end

return p