Esempi
[modifica]Funzione nospace
[modifica]Esempio | Input | Risultato |
---|---|---|
{{#invoke:GeoData|nospace|}} | ||
{{#invoke:GeoData|nospace|5° N}} | 5° N | 5°N |
{{#invoke:GeoData|nospace|5° 10' N}} | 5° 10' N | 5°10'N |
{{#invoke:GeoData|nospace|5° 01' 20" N}} | 5° 01' 20" N | 5°01'20"N |
{{#invoke:GeoData|nospace|{{#dd2dms: 14.58|precision=0}}}} | 15° | 15° |
{{#invoke:GeoData|nospace|{{#dd2dms: 14.58|precision=2}}}} | 14° 35' | 14°35' |
{{#invoke:GeoData|nospace|{{#dd2dms: 14.58|precision=4}}}} | 14° 34' 48" | 14°34'48" |
{{#invoke:GeoData|nospace|{{#dd2dms: 14.58}}}} | 14° 34' 48" | 14°34'48" |
{{#invoke:GeoData|nospace|{{#dd2dms: 14.58N}}}} | 14° 34' 48" N | 14°34'48"N |
{{#invoke:GeoData|nospace|{{#dd2dms: 14.58X}}}} | Input non corretto | Inputnoncorretto |
{{#invoke:GeoData|nospace|{{#dd2dms:}}}} | Input non corretto | Inputnoncorretto |
Funzione nozeros
[modifica]Esempio | Input | Risultato |
---|---|---|
{{#invoke:GeoData|nozeros|}} | no lat, no long | |
{{#invoke:GeoData|nozeros|5° N}} | 5° N, no long | |
{{#invoke:GeoData|nozeros||10° E}} | no lat, 10° E | |
{{#invoke:GeoData|nozeros|5° 10' 00" N|10° 20' 40" E}} | 5° 10' 00" N, 10° 20' 40" E | 5° 10' 00" N 10° 20' 40" E |
{{#invoke:GeoData|nozeros|5° 01' 20" N|10° 20' 00" E}} | 5° 01' 20" N, 10° 20' 00" E | 5° 01' 20" N 10° 20' 00" E |
{{#invoke:GeoData|nozeros|5° 00' 20" N|10° 00' 00" E}} | 5° 00' 20" N, 10° 00' 00" E | 5° 00' 20" N 10° 00' 00" E |
{{#invoke:GeoData|nozeros|5° 10' 00" N|10° 20' 00" E}} | 5° 10' 00" N, 10° 20' 00" E | 5° 10' N 10° 20' E |
{{#invoke:GeoData|nozeros|5° 00' 00" N|10° 00' 00" E}} | 5° 00' 00" N, 10° 00' 00" E | 5° N 10° E |
{{#invoke:GeoData|nozeros|5° 0' 0" N|10° 0' 0" E}} | 5° 0' 0" N, 10° 0' 0" E | 5° N 10° E |
{{#invoke:GeoData|nozeros|{{#dd2dms: {{Dms2dec|5.005555N|4}} N|precision=4}}|{{#dd2dms: {{Dms2dec|10.333333E|4}}|precision=4}} E}} | 5° 0' 20" N, 10° 20' 0" E | 5° 0' 20" N 10° 20' 0" E |
{{#invoke:GeoData|nozeros|{{#dd2dms: {{Dms2dec|5.033333N|4}}|precision=4}} N|{{#dd2dms: {{Dms2dec|10.333333E|4}}|precision=4}} E}} | 5° 2' 0" N, 10° 20' 0" E | 5° 2' N 10° 20' E |
{{#invoke:GeoData|nozeros|{{#dd2dms: 15N|precision=4}}|{{#dd2dms: 16E|precision=4}}}} | 15° 0' 0" N, 16° 0' 0" E | 15° N 16° E |
Funzione dd2dms
[modifica]Esempio | Input | Risultato |
---|---|---|
{{#invoke:GeoData|dd2dms||10° E}} | no lat, 10° E | |
{{#invoke:GeoData|dd2dms|xyz|10° E}} | xyz, 10° E | xyz 10°E |
{{#invoke:GeoData|dd2dms|{{#dd2dms: {{Dms2dec|5.000555N|4}} N|precision=4}}|{{#dd2dms: {{Dms2dec|10.333333E|4}}|precision=4}} E}} | 5° 0' 2" N, 10° 20' 0" E | 5°00'02"N 10°20'00"E |
{{#invoke:GeoData|dd2dms|{{#dd2dms: {{Dms2dec|5.033333N|4}}|precision=4|plus=N|minus=S}}|{{#dd2dms: {{Dms2dec|10.333333E|4}}|precision=4|plus=E|minus=W}}}} | 5° 2' 0" N, 10° 20' 0" E | 5°02'N 10°20'E |
{{#invoke:GeoData|dd2dms|{{#dd2dms: 15N|precision=4}}|{{#dd2dms: 16E|precision=4}}}} | 15° 0' 0" N, 16° 0' 0" E | 15°N 16°E |
Per forzare il controllo sulla correttezza delle coordinare e ritornare una stringa vuota se errate, utilizzare la seguente sintassi:
{{#ifeq:{{#dd2dms:LAT}}|Input non corretto||{{#ifeq:{{#dd2dms:LONG}}|Input non corretto||{{#invoke:GeoData|dd2dms|LAT|LONG}}}}}}
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;