Modul:Gebäude

Aus FürthWiki
local p = {} --p stands for package
local c = require("Module:Common")
local str = require("Modul:String")

function p.Faktenbox(frame)
	local args = c.shallowcopy(frame:getParent().args)
	args["PLZ"] = p.getPLZ(frame, args)

	local tpl_bild = p.bild(frame, args)
	local tab_bild=''
	if tpl_bild:gsub("%s+", "") ~= '' then
		tab_bild = '<tab name=Bild>' .. 
		tpl_bild .. '</tab>'
	end
	
	local tpl_karte = p.karte(frame, args)
	local tab_karte=''
	if tpl_karte:gsub("%s+", "") ~= '' then
		tab_karte = '<tab name=Karte>' .. 
		tpl_karte .. '</tab>'
	end
	
	-- The tab "Daten" is visible everytime
	local tpl_daten = p.daten(frame, args)
	local tab_daten = '<tab name=Daten>' .. 
	tpl_daten .. '</tab>'
	
	local tpl_pages = p.pages(frame, args)
	local tab_pages=''
	if tpl_pages:gsub("%s+", "") ~= '' then
		tab_pages = '<tab name=Artikel>' .. 
		tpl_pages .. '</tab>'
	end

	local t ='<div class=factbox><tabs>' .. 
	   tab_bild .. 
	   tab_karte ..
	   tab_daten .. 
	   tab_pages .. 
	   '</tabs></div>'

	-- Use preprocess to render the factbox and all contens at once
	return frame:preprocess(t)
end

function p.bild(frame, args)
    return frame:expandTemplate{title='Bildertab', args=args}
end

function p.daten(frame, args)
    return frame:expandTemplate{title='Gebäude/Daten', args=args}
end

function p.karte(frame, args)
	return frame:expandTemplate{title='Kartentab', args=args}
end

function p.pages(frame, args)
	return frame:expandTemplate{title='Gebäude/Artikel', args=args}
end

function p.FormatHausnummer(frame)
	-- #invoke wrapper
	return formatHausnummer(frame.args[1])
end

function p.formatHausnummer(hausnummer)
	-- Hausnummer ohne Buchstaben extrahieren, um damit PLZ zu ermitteln
	local hausnr = ""
	
	if not c.isEmpty(hausnummer) then 
		hausnr = tonumber(string.match("0" .. hausnummer, "%d+"))
	end
	return hausnr
end

function p.GetPLZ(frame)
	-- #invoke wrapper
	return p.getPLZ(frame, {
		['Straße'] = frame.args[1],
		['Hausnummer'] = frame.args[2],
	})
end

function p.getPLZ(frame, args)
	local hausnr = p.formatHausnummer(args["Hausnummer"])
	local streets = str.split(args['Straße'], ";") or {}
	
	-- Ned schön, funktioniert aber. Iterative Multistraßen-Lösung wäre fein!
	return frame:expandTemplate{title = 'StraßeHausnummer2PLZ', args={
		['Straße'] = str.strip(streets[1]),
		['HausnummerOhneBuchstaben'] = hausnr}
	}
end

return p