Geo module: add Ox.splitGeoname method

This commit is contained in:
rolux 2013-08-18 12:01:20 +02:00
parent 6937155dfc
commit 3c0e7e7bf5

View file

@ -172,12 +172,8 @@ Ox.load.Geo = function(options, callback) {
Ox.getCountryByGeoname = function(geoname) { Ox.getCountryByGeoname = function(geoname) {
// fixme: UAE correction doesn't belong here, fix in map // fixme: UAE correction doesn't belong here, fix in map
geoname = (geoname || '').replace(' - United Arab Emirates', ', United Arab Emirates') geoname = (geoname || '').replace(' - United Arab Emirates', ', United Arab Emirates')
return Ox.getCountryByName( return Ox.getCountryByName(Ox.splitGeoname(geoname).pop());
geoname.split(', ').pop() };
.replace('Sint Eustatius and Saba', 'Bonaire, Sint Eustatius and Saba')
.replace('Ascension and Tristan da Cunha', 'Saint Helena, Ascension and Tristan da Cunha')
);
}
/*@ /*@
Ox.getCountryByName <f> Returns a country object for a given country name Ox.getCountryByName <f> Returns a country object for a given country name
@ -257,6 +253,31 @@ Ox.load.Geo = function(options, callback) {
return Ox.GEO_COLORS[str] || [128, 128, 128]; return Ox.GEO_COLORS[str] || [128, 128, 128];
}; };
/*@
Ox.splitGeoname <f> Splits a geoname into its component parts
(geoname) -> <[s]> Components
geoname <s> Geoname
@*/
Ox.splitGeoname = function(geoname) {
var countries = [
'Bonaire, Sint Eustatius and Saba',
'Saint Helena, Ascension and Tristan da Cunha'
],
split;
countries.forEach(function(country) {
if (Ox.endsWith(geoname, country)) {
geoname = geoname.replace(country, country.replace(', ', '; '));
}
});
split = geoname.split(', ');
countries.forEach(function(country) {
if (Ox.endsWith(Ox.last(split), country.replace(', ', '; '))) {
Ox.last(split, country);
}
});
return split;
};
callback(true); callback(true);
}); });