Edge Rewrite
// HTMLRewriter · presentation

This page was redesigned at the edge.

Cloudflare fetched the original article and streamed it through HTMLRewriter to apply an entirely new visual system without rebuilding the source page.

Jump to content

Module:German coord convert

Permanently protected module
From Wikipedia, the free encyclopedia
-- This module converts German Wikipedia-style coordinates to a formatted 
-- invocation of the [[template:coord]] template
local p = {}

function p.main(frame)
	local latstr = frame.args[1] or ''
	local lonstr = frame.args[2] or ''
	local tstr   = frame.args[3] or ''
	local fstr   = frame.args['format'] or ''
	local dstr   = frame.args['display'] or ''
	local nmstr  = frame.args['name'] or ''
	local ntstr  = frame.args['notes'] or ''
	local issubst= frame.args['subst'] or ''

	latstr = mw.ustring.gsub(latstr, '[%s]', '')
	lonstr = mw.ustring.gsub(lonstr, '[%s]', '')
	latstr = mw.ustring.gsub(latstr, ',', '.')
	lonstr = mw.ustring.gsub(lonstr, ',', '.')
	lonstr = mw.ustring.gsub(lonstr, '[Oo]', 'E')
	
	while mw.ustring.match(tstr, 'region:[^_/:%s]*/') do
		tstr = mw.ustring.gsub(tstr, '(region:[^_/:%s]*)%s*/', '%1_region:')
	end
	tstr = mw.ustring.gsub(tstr, '%s', '_')
	tstr = mw.ustring.gsub(tstr, '___*', '_')
	
	if (issubst ~= '') then
		local res = ''
		if (tstr ~= '' ) then
			res = '|' .. tstr
		end
		if (fstr ~= '' ) then
			res = res .. '|format=' .. fstr
		end
		if (dstr ~= '' ) then
			res = res .. '|display=' .. dstr
		end
		if (nmstr ~= '' ) then
			res = res .. '|name=' .. nmstr
		end
		if (ntstr ~= '' ) then
			res = res .. '|notes=' .. ntstr
		end
   		latstr = mw.ustring.gsub(latstr, '/[/]*', '|')
   		lonstr = mw.ustring.gsub(lonstr, '/[/]*', '|')
   		return '{{coord|' .. latstr .. '|' .. lonstr .. res .. '}}'
   	else
   		local targs = mw.text.split( latstr .. '/' .. lonstr .. '/' .. tstr, '%s*/[%s/]*')
	   	if fstr ~= '' then
	   		targs['format'] = fstr
	   	end
	   	if dstr ~= '' then
	   		targs['display'] = dstr
	   	end
	   	if nmstr ~= '' then
	   		targs['name'] = nmstr
	   	end
	   	if ntstr ~= '' then
	   		targs['notes'] = ntstr
	   	end
   		return frame:expandTemplate{ title = 'coord', args = targs }
	end
end

return p