Modul:Link utilities

Aus Wikivoyage
Template-info.png Dokumentation für das Modul Link utilities[Ansicht] [Bearbeiten] [Versionsgeschichte] [Aktualisieren]

Anwendung

Der Modul stellt grundlegende Funktionen für die Module Modul:LinkPhone, Modul:LinkMail, Modul:LinkSkype und Modul:LinkISBN zur Verfügung.

Versionsbezeichnung auf Wikidata: 2021-04-08 Ok!

Verwendung in anderen Modulen

Dieses Modul ist notwendig für die Ausführung folgender Module. Bei Anpassungen sollte die Funktionstüchtigkeit der folgenden Module geprüft werden. Benutze dazu auch diese Tracking-Kategorie um Fehler zu finden, die sich dann auf Artikel auswirken:

Funktionen

function lu.splitItems( s, delimiters, defaultDelimiter )
s: string;
delimiters: array;
defaultDelimiter: string;

Die Funktion spaltet die Zeichenkette s in ihre Einzelbestandteile auf und übergibt das Ergebnis in einem Array. Als Trenner dienen sowohl der defaultDelimiter (bei fehlender Angabe Komma) als auch die zusätzlichen Trenner delimiters. Trenner in Klammerausdrücken werden nicht berücksichtigt.

function lu.extractComment( s )
s: string;

Die Funktion trennt einen in Klammern formulierten Kommentar von der davor stehenden Zeichenkette. Es werden zwei Ergebnisse übergeben: die kommentarlose Zeichenkette und der Kommentar.

function lu.errorInfo( catPrefix, aCat, aClass )
catPrefix: string;
aCat: string;
aClass: string;
Die Funktion gibt die Fehlerausschrift aCat im Haupt- oder Modul-Namenraum aus und legt eine gleichnamige Wartungskategorie an. Die Zeichenkette mit der Fehlerausschrift wird von einem <span>-Tag mit der Klasse aClass umschlossen. Fehlt die Klassenangabe, so wird die Klasse error verwendet. Der Modulparameter demo legt fest, ob die Kategorie angelegt oder nur verlinkt werden soll.
Hinweise
-- documentation
local LinkUtilities = {
	suite  = 'Link utilities',
	serial = '2021-04-08',
	item   = 65228027
}

-- module import
require( 'Module:No globals' )

-- module variable and administration
local lu = {
	moduleInterface = LinkUtilities
}

-- split separate items like numbers
function lu.splitItems( s, delimiters, defaultDelimiter )
	defaultDelimiter = defaultDelimiter or ','

	-- wrap delimiters with zero marks
	s = mw.ustring.gsub( s, defaultDelimiter, '\0%1\0' );

	-- substitude delimiters
	for _, delimiter in ipairs( delimiters ) do
		s = mw.ustring.gsub( s, delimiter, '\0%1\0' );
		-- remove zero marks from inside parentheses ()
		s =	s:gsub( '%b()', function( t ) return t:gsub( '%z', '' ) end )
		-- replace delimeters by the default delimiter
		s = mw.ustring.gsub( s, '\0' .. delimiter .. '\0', '\0' .. defaultDelimiter .. '\0' );
	end

	-- results to an array
	s = mw.text.split( s, '\0' .. defaultDelimiter .. '\0' )
	for i = #s, 1, -1 do
		s[ i ] = mw.text.trim( s[ i ] )
		if s[ i ] == '' then 
			table.remove( s, i )
		end
	end
	return s
end

-- extract comment written in parentheses
-- remove spaces between value like phone numbers and comment
function lu.extractComment( s )
	local comment = ''
	if s:find( '(', 1, true ) then
		local t = s:gsub( '^.*(%b())$', '%1' )
		if t ~= s then
			comment = t
			s = s:gsub( '[%s%c]*%b()$', '' )
		end
	end
	return s, comment
end

return lu