Modul:TerminText

Aus Hist. Verein Herne / Wanne-Eickel e. V.

Die Dokumentation für dieses Modul kann unter Modul:TerminText/Doku erstellt werden

local p = {}

-- Macht aus dem HTML der iCagenda-Feed-Beschreibung einen kurzen Klartext.
-- Aufruf: {{#invoke:TerminText|kurz|<html>|laenge=220}}
function p.kurz( frame )
	local text   = frame.args[1] or ''
	local laenge = tonumber( frame.args.laenge ) or 220

	-- 1. Alles vor dem ersten <p> abschneiden (Datumszeile + Vorschaubild)
	local start = text:find( '<p' )
	if start then
		text = text:sub( start )
	end

	-- 2. HTML-Tags entfernen
	text = text:gsub( '<[^>]*>', ' ' )

	-- 3. HTML-Entities dekodieren (&nbsp; &amp; usw.)
	text = mw.text.decode( text, true )

	-- 4. Whitespace zusammenfassen
	text = text:gsub( '%s+', ' ' )
	text = mw.text.trim( text )

	-- 5. Auf Wortgrenze kürzen
	if mw.ustring.len( text ) > laenge then
		text = mw.ustring.sub( text, 1, laenge )
		text = text:gsub( '%s+%S*$', '' ) .. ' …'
	end

	return text
end
-- Holt aus der iCagenda-Ortsangabe ("Veranstaltungsname - geokodierte Adresse")
-- nur den Veranstaltungsnamen.
-- Aufruf: {{#invoke:TerminText|ort|<text>}}
function p.ort( frame )
	local text = frame.args[1] or ''
	text = text:gsub( '%s+', ' ' )
	text = mw.text.trim( text )
	local name = text:match( '^(.-) %- ' )
	return name or text
end
return p