Module:German coord convert

-- 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