ניתן ליצור תיעוד על היחידה הזאת בדף יחידה:GeoData/תיעוד
local i = {} local function __nospace(s) local newstr = ''; newstr = mw.ustring.gsub(s or '', '%s', ''); --rimuovo gli spazi return newstr; end function i.nospace(frame) return __nospace(frame.args[1]); --rimuovo gli spazi end local function __nozeros(lat, long) local lat = lat or ''; local long = long or ''; --se uno dei due parametri è vuoto restituisco una stringa vuota per evidenziarne l'errore if lat=='' or long=='' then return ""; end --normalizzo eventuali simboli non standard for _,search in ipairs({"'", "‘", "’", "′", "'"}) do lat = string.gsub(lat, search, "'"); long = string.gsub(long, search, "'"); end for _,search in ipairs({'"', "''", "“", "”", """}) do lat = string.gsub(lat, search, '"'); long = string.gsub(long, search, '"'); end --se hanno entrambi i secondi a 0 li sopprimo if string.find(lat, "'%s?0?0\"") and string.find(long, "'%s?0?0\"") then lat = string.gsub(lat, "'%s?0?0\"", "'"); long = string.gsub(long, "'%s?0?0\"", "'"); else return lat.." "..long; end --se hanno entrambi i minuti a 0 li sopprimo if string.find(lat, "°%s?0?0'") and string.find(long, "°%s?0?0'") then lat = string.gsub(lat, "°%s?0?0'", "°"); long = string.gsub(long, "°%s?0?0'", "°"); end return lat.." "..long; end function i.nozeros(frame) return __nozeros(frame.args[1], frame.args[2]) end local function __dd2dms(p1,p2) local coordinate=__nozeros(__nospace(p1), __nospace(p2)); --se minuti e/o secondi hanno una sola cifra gli antepongo uno zero coordinate=string.gsub(coordinate, "(° ?)(.')","%10%2"); coordinate=string.gsub(coordinate, "(' ?)(.\")","%10%2"); return coordinate; end function i.dd2dms(frame) return __dd2dms(frame.args[1], frame.args[2]); end function i.dd2dmsspan(frame) local coordinate = __dd2dms(frame.args[1], frame.args[2]); local lat, long = coordinate:match("(.+) (.+)"); return '<span class="latitude">' .. lat .. '</span> ' .. '<span class="longitude">' .. long .. '</span>'; end return i;