Modul:Quickbar Position

Aus Wikivoyage
Zur Navigation springen Zur Suche springen
Template-info.png Dokumentation für das Modul Quickbar Position[Ansicht] [Bearbeiten] [Versionsgeschichte] [Aktualisieren]

Der Modul wird von der Vorlage {{Quickbar position}} benutzt. Die Parameter sind dort beschrieben.

Benötigte weitere Module

Dieses Modul benötigt folgende weitere Module: Coordinates • Quickbar Position/i18n • Quickbar Position/Params • Quickbar2 • Wikidata2 • Yesno
Hinweise
-- module import
local cd       = require( 'Module:Coordinates' )
local qi       = mw.loadData( 'Module:Quickbar Position/i18n' )
local qp       = require( 'Module:Quickbar Position/Params' )
local quickbar = require( 'Module:Quickbar2' )
local wd       = require( 'Module:Wikidata2' )
local yn       = require( 'Module:Yesno' )

local qbPosition = {}

local function checkParams( args )
	local titleObj = mw.title.getCurrentTitle()
	local mismatch = {}, key, value
	for key, value in pairs( args ) do
		if qp[ key ] then
			if ( value or '' ) ~= '' then
				qp[ key ] = value
				if key == 'name' and ( args.label or '' ) == '' then
					qp.label = value
				end
			end
		else
			table.insert( mismatch, key )
		end
	end
	if qp.name == '' then
		qp.name = titleObj.text
	end
	if qp.label == '' then
		qp.label = titleObj.subpageText
	end
	qp.noCoordError = yn( qp.noCoordError, false )
	if #mismatch == 0 then
		return ''
	else
		return mw.ustring.format( qi.unknownParams, table.concat( mismatch, ', ' ) )
	end
end

function qbPosition.position( frame )
	local errors = checkParams( frame:getParent().args ), result
	if errors ~= '' then
		return errors
	end

	local function toDec( coord, dir )
		result = cd.toDec( coord, dir, 6 )
		if result.error == 0 then
			return result.dec
		else
			return ''
		end
	end

	if qp[ 1 ] ~= '' then
		return quickbar.theader( qp.colSpan, qp.header, qp.rowClass ) ..
			quickbar.trImage( qp.rowClass, qp[ 1 ], qp.colSpan )
	else
		if qp.map == '' then
			return qi.unknownMap
		end
		if qp.lat ~= '' and qp.long ~= '' then
			qp.lat = toDec( qp.lat, 'lat' )
			qp.long = toDec( qp.long, 'long' )
		end
		if qp.lat == '' or qp.long == '' then
			result = wd.getCoordinates()
			if result.errCode == 1 then
				qp.lat = result.lat
				qp.long = result.long
			end
		end
		if qp.lat == '' or qp.long == '' then
			if qp.noCoordError then
				return ''
			else
				return qi.unknownCoord
			end
		end
		return quickbar.theader( qp.colSpan, qp.header, qp.rowClass ) ..
			quickbar.locmap( qp.colSpan, { args = qp }, qp.rowClass )
	end
end

return qbPosition