Modul:Parts

Fra Wikipedia, den frie encyklopedi
Hopp til navigering Hopp til søk
Dokumentasjonsikon Moduldokumentasjon [vis] [rediger] [historikk] [oppdater]

Parts er et bibliotek for å formatere en liste av signaturer for refererte elementer. Oppførselen som konstrueres består av etiketten og beskrivelsen, med en eventuell nettstedlenke som går til aktuell artikkel. En tilsvarende modul på nnwiki konstruerer i tillegg en lenke til spesialsiden «AboutTopic» for elementet.

Modulen er antatt å være spesifikk for de enkelte elementene som brukes, og vil derfor ikke ta ekstra parametre.

Bruk[rediger kilde]

Kallet er uten ekstra parametre

{{#invoke:Parts|list}}

Dette er eneste form som så langt gir mening.

local parts = {}
local data,_ = require 'Module:SignatureList'('P527')

function parts.list( frame )
	local html = mw.html.create( 'div' ) -- this is the outer containing node
	local ul = true
	local last = ''
	for i,item in ipairs( data ) do
		local id = item[1]
		local label = item[2] or item[4] or item[1] or "?" -- should never reach "?"
		local description = item[3]
		local sitelink = item[4]
		local codePoint = mw.ustring.upper( mw.ustring.sub( label, 1, 1 ) )

		if last ~= codePoint then -- the char is different from the last one
			-- create a dd-element and use the code point as header
			local dd = mw.html.create( 'dd' )
			html:node ( mw.html.create( 'dl' )
				:node( mw.html.create( 'dt' ):node( mw.html.create( 'span' ):attr( 'id', codePoint ) ):wikitext( codePoint ) )
				:node( dd ) )
			-- create a new ul-element as container for new signatures
			ul = mw.html.create( 'ul' ) -- this is the list node that has to be recreated for each char in the alphabet
			dd:node( ul )
			last = codePoint
		end

		-- add the signature to the containing ul-element
		ul:node( mw.html.create( 'li' )
			:node( mw.html.create( 'span' ):attr( 'id', label ) )
			:wikitext( sitelink
				-- use the sitelink
				and ( string.format( "''[[%s|%s]]''[[File:Blue pencil.svg|11px|link=d:%s]]", sitelink, label, id ) .. ( description and string.format( ' – %s', description ) or '' ) )
				-- do not use the sitelink
				or ( string.format( "''%s''[[File:Blue pencil.svg|11px|link=d:%s]]", label, id ) .. ( description and string.format( ' – %s', description ) or '' ) )))
	end
	return html
end
	
return parts