mirror of https://github.com/pelias/api.git
Harish Krishna
10 years ago
19 changed files with 649 additions and 202 deletions
@ -0,0 +1,37 @@ |
|||||||
|
|
||||||
|
var schemas = require('./outputSchema.json'); |
||||||
|
|
||||||
|
module.exports = function( record ){ |
||||||
|
|
||||||
|
var adminParts = []; |
||||||
|
|
||||||
|
var schema = schemas.default; |
||||||
|
|
||||||
|
if (record.alpha3 && record.alpha3.length && schemas[record.alpha3]) { |
||||||
|
schema = schemas[record.alpha3]; |
||||||
|
} |
||||||
|
|
||||||
|
var buildOutput = function(parts, schemaArr, record) { |
||||||
|
for (var i=0; i<schemaArr.length; i++) { |
||||||
|
var rec = record[schemaArr[i]]; |
||||||
|
if (rec && rec.length) { |
||||||
|
parts.push( rec ); |
||||||
|
return parts; |
||||||
|
} |
||||||
|
} |
||||||
|
return parts; |
||||||
|
}; |
||||||
|
|
||||||
|
for (var key in schema) { |
||||||
|
adminParts = buildOutput(adminParts, schema[key], record);
|
||||||
|
} |
||||||
|
|
||||||
|
var outputs = [ record.name.default ].concat( adminParts ); |
||||||
|
|
||||||
|
// de-dupe outputs
|
||||||
|
outputs = outputs.filter( function( i, pos ) { |
||||||
|
return outputs.indexOf( i ) == pos; |
||||||
|
}); |
||||||
|
|
||||||
|
return outputs.join(', ').trim(); |
||||||
|
}; |
@ -0,0 +1,14 @@ |
|||||||
|
{ |
||||||
|
"USA": { |
||||||
|
"local": ["local_admin", "locality", "neighborhood", "admin2"], |
||||||
|
"regional": ["admin1_abbr", "admin1", "admin0"] |
||||||
|
}, |
||||||
|
"GBR": { |
||||||
|
"local": ["neighborhood", "admin2", "local_admin", "locality"], |
||||||
|
"regional": ["admin2","admin0","admin1"] |
||||||
|
}, |
||||||
|
"default": { |
||||||
|
"local": ["local_admin", "locality", "neighborhood", "admin2"], |
||||||
|
"regional": ["admin1_abbr", "admin1", "admin0"] |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,55 @@ |
|||||||
|
|
||||||
|
var schemas = require('../../../helper/outputSchema.json'); |
||||||
|
var alpha3 = require('../mock/alpha3.json'); |
||||||
|
|
||||||
|
module.exports.tests = {}; |
||||||
|
|
||||||
|
module.exports.tests.interface = function(test, common) { |
||||||
|
test('interface', function(t) { |
||||||
|
t.equal(typeof schemas, 'object', 'valid object'); |
||||||
|
t.equal(schemas.hasOwnProperty('default'), true, 'has default defined'); |
||||||
|
t.end(); |
||||||
|
}); |
||||||
|
}; |
||||||
|
|
||||||
|
module.exports.tests.valid = function(test, common) { |
||||||
|
var valid_keys = ['local_admin', 'locality', 'neighborhood', 'admin2', 'admin1_abbr', 'admin1', 'admin0']; |
||||||
|
var default_schema = { |
||||||
|
local: ['local_admin', 'locality', 'neighborhood', 'admin2'], |
||||||
|
regional: ['admin1_abbr', 'admin1', 'admin0'] |
||||||
|
}; |
||||||
|
|
||||||
|
var isValid = function(keys, schema) { |
||||||
|
test('valid key/object (' + keys + ')' , function(t) { |
||||||
|
if (keys=="default") {
|
||||||
|
t.deepEqual(schema, default_schema, 'valid default schema'); |
||||||
|
} else { |
||||||
|
t.equal(alpha3.hasOwnProperty(keys), true, 'valid key');
|
||||||
|
} |
||||||
|
t.equal(typeof schema, 'object', 'valid object'); |
||||||
|
t.notEqual(Object.getOwnPropertyNames(schema).length, 0, 'object not empty'); |
||||||
|
for (levels in schema) { |
||||||
|
t.equal(Object.prototype.toString.call(schema[levels]), '[object Array]', levels+' is an array'); |
||||||
|
for (var i=0;i<schema[levels].length;i++) { |
||||||
|
var key = schema[levels][i]; |
||||||
|
t.notEqual(valid_keys.indexOf(key), -1, key + ' is valid'); |
||||||
|
} |
||||||
|
} |
||||||
|
t.end(); |
||||||
|
}); |
||||||
|
} |
||||||
|
for (keys in schemas) {
|
||||||
|
isValid(keys, schemas[keys]); |
||||||
|
} |
||||||
|
}; |
||||||
|
|
||||||
|
module.exports.all = function (tape, common) { |
||||||
|
|
||||||
|
function test(name, testFunction) { |
||||||
|
return tape('schemas: ' + name, testFunction); |
||||||
|
} |
||||||
|
|
||||||
|
for( var testCase in module.exports.tests ){ |
||||||
|
module.exports.tests[testCase](test, common); |
||||||
|
} |
||||||
|
}; |
@ -0,0 +1,251 @@ |
|||||||
|
{ |
||||||
|
"ABW": "Aruba", |
||||||
|
"AFG": "Afghanistan", |
||||||
|
"AGO": "Angola", |
||||||
|
"AIA": "Anguilla", |
||||||
|
"ALA": "Ă…land Islands", |
||||||
|
"ALB": "Albania", |
||||||
|
"AND": "Andorra", |
||||||
|
"ARE": "United Arab Emirates", |
||||||
|
"ARG": "Argentina", |
||||||
|
"ARM": "Armenia", |
||||||
|
"ASM": "American Samoa", |
||||||
|
"ATA": "Antarctica", |
||||||
|
"ATF": "French Southern Territories", |
||||||
|
"ATG": "Antigua and Barbuda", |
||||||
|
"AUS": "Australia", |
||||||
|
"AUT": "Austria", |
||||||
|
"AZE": "Azerbaijan", |
||||||
|
"BDI": "Burundi", |
||||||
|
"BEL": "Belgium", |
||||||
|
"BEN": "Benin", |
||||||
|
"BES": "Bonaire, Sint Eustatius and Saba", |
||||||
|
"BFA": "Burkina Faso", |
||||||
|
"BGD": "Bangladesh", |
||||||
|
"BGR": "Bulgaria", |
||||||
|
"BHR": "Bahrain", |
||||||
|
"BHS": "Bahamas", |
||||||
|
"BIH": "Bosnia and Herzegovina", |
||||||
|
"BLM": "Saint Barthélemy", |
||||||
|
"BLR": "Belarus", |
||||||
|
"BLZ": "Belize", |
||||||
|
"BMU": "Bermuda", |
||||||
|
"BOL": "Bolivia, Plurinational State of", |
||||||
|
"BRA": "Brazil", |
||||||
|
"BRB": "Barbados", |
||||||
|
"BRN": "Brunei Darussalam", |
||||||
|
"BTN": "Bhutan", |
||||||
|
"BVT": "Bouvet Island", |
||||||
|
"BWA": "Botswana", |
||||||
|
"CAF": "Central African Republic", |
||||||
|
"CAN": "Canada", |
||||||
|
"CCK": "Cocos (Keeling) Islands", |
||||||
|
"CHE": "Switzerland", |
||||||
|
"CHL": "Chile", |
||||||
|
"CHN": "China", |
||||||
|
"CIV": "CĂ´te d'Ivoire", |
||||||
|
"CMR": "Cameroon", |
||||||
|
"COD": "Congo, the Democratic Republic of the", |
||||||
|
"COG": "Congo", |
||||||
|
"COK": "Cook Islands", |
||||||
|
"COL": "Colombia", |
||||||
|
"COM": "Comoros", |
||||||
|
"CPV": "Cabo Verde", |
||||||
|
"CRI": "Costa Rica", |
||||||
|
"CUB": "Cuba", |
||||||
|
"CUW": "Curaçao", |
||||||
|
"CXR": "Christmas Island", |
||||||
|
"CYM": "Cayman Islands", |
||||||
|
"CYP": "Cyprus", |
||||||
|
"CZE": "Czech Republic", |
||||||
|
"DEU": "Germany", |
||||||
|
"DJI": "Djibouti", |
||||||
|
"DMA": "Dominica", |
||||||
|
"DNK": "Denmark", |
||||||
|
"DOM": "Dominican Republic", |
||||||
|
"DZA": "Algeria", |
||||||
|
"ECU": "Ecuador", |
||||||
|
"EGY": "Egypt", |
||||||
|
"ERI": "Eritrea", |
||||||
|
"ESH": "Western Sahara", |
||||||
|
"ESP": "Spain", |
||||||
|
"EST": "Estonia", |
||||||
|
"ETH": "Ethiopia", |
||||||
|
"FIN": "Finland", |
||||||
|
"FJI": "Fiji", |
||||||
|
"FLK": "Falkland Islands (Malvinas)", |
||||||
|
"FRA": "France", |
||||||
|
"FRO": "Faroe Islands", |
||||||
|
"FSM": "Micronesia, Federated States of", |
||||||
|
"GAB": "Gabon", |
||||||
|
"GBR": "United Kingdom", |
||||||
|
"GEO": "Georgia", |
||||||
|
"GGY": "Guernsey", |
||||||
|
"GHA": "Ghana", |
||||||
|
"GIB": "Gibraltar", |
||||||
|
"GIN": "Guinea", |
||||||
|
"GLP": "Guadeloupe", |
||||||
|
"GMB": "Gambia", |
||||||
|
"GNB": "Guinea-Bissau", |
||||||
|
"GNQ": "Equatorial Guinea", |
||||||
|
"GRC": "Greece", |
||||||
|
"GRD": "Grenada", |
||||||
|
"GRL": "Greenland", |
||||||
|
"GTM": "Guatemala", |
||||||
|
"GUF": "French Guiana", |
||||||
|
"GUM": "Guam", |
||||||
|
"GUY": "Guyana", |
||||||
|
"HKG": "Hong Kong", |
||||||
|
"HMD": "Heard Island and McDonald Islands", |
||||||
|
"HND": "Honduras", |
||||||
|
"HRV": "Croatia", |
||||||
|
"HTI": "Haiti", |
||||||
|
"HUN": "Hungary", |
||||||
|
"IDN": "Indonesia", |
||||||
|
"IMN": "Isle of Man", |
||||||
|
"IND": "India", |
||||||
|
"IOT": "British Indian Ocean Territory", |
||||||
|
"IRL": "Ireland", |
||||||
|
"IRN": "Iran, Islamic Republic of", |
||||||
|
"IRQ": "Iraq", |
||||||
|
"ISL": "Iceland", |
||||||
|
"ISR": "Israel", |
||||||
|
"ITA": "Italy", |
||||||
|
"JAM": "Jamaica", |
||||||
|
"JEY": "Jersey", |
||||||
|
"JOR": "Jordan", |
||||||
|
"JPN": "Japan", |
||||||
|
"KAZ": "Kazakhstan", |
||||||
|
"KEN": "Kenya", |
||||||
|
"KGZ": "Kyrgyzstan", |
||||||
|
"KHM": "Cambodia", |
||||||
|
"KIR": "Kiribati", |
||||||
|
"KNA": "Saint Kitts and Nevis", |
||||||
|
"KOR": "Korea, Republic of", |
||||||
|
"KWT": "Kuwait", |
||||||
|
"LAO": "Lao People's Democratic Republic", |
||||||
|
"LBN": "Lebanon", |
||||||
|
"LBR": "Liberia", |
||||||
|
"LBY": "Libya", |
||||||
|
"LCA": "Saint Lucia", |
||||||
|
"LIE": "Liechtenstein", |
||||||
|
"LKA": "Sri Lanka", |
||||||
|
"LSO": "Lesotho", |
||||||
|
"LTU": "Lithuania", |
||||||
|
"LUX": "Luxembourg", |
||||||
|
"LVA": "Latvia", |
||||||
|
"MAC": "Macao", |
||||||
|
"MAF": "Saint Martin (French part)", |
||||||
|
"MAR": "Morocco", |
||||||
|
"MCO": "Monaco", |
||||||
|
"MDA": "Moldova, Republic of", |
||||||
|
"MDG": "Madagascar", |
||||||
|
"MDV": "Maldives", |
||||||
|
"MEX": "Mexico", |
||||||
|
"MHL": "Marshall Islands", |
||||||
|
"MKD": "Macedonia, the former Yugoslav Republic of", |
||||||
|
"MLI": "Mali", |
||||||
|
"MLT": "Malta", |
||||||
|
"MMR": "Myanmar", |
||||||
|
"MNE": "Montenegro", |
||||||
|
"MNG": "Mongolia", |
||||||
|
"MNP": "Northern Mariana Islands", |
||||||
|
"MOZ": "Mozambique", |
||||||
|
"MRT": "Mauritania", |
||||||
|
"MSR": "Montserrat", |
||||||
|
"MTQ": "Martinique", |
||||||
|
"MUS": "Mauritius", |
||||||
|
"MWI": "Malawi", |
||||||
|
"MYS": "Malaysia", |
||||||
|
"MYT": "Mayotte", |
||||||
|
"NAM": "Namibia", |
||||||
|
"NCL": "New Caledonia", |
||||||
|
"NER": "Niger", |
||||||
|
"NFK": "Norfolk Island", |
||||||
|
"NGA": "Nigeria", |
||||||
|
"NIC": "Nicaragua", |
||||||
|
"NIU": "Niue", |
||||||
|
"NLD": "Netherlands", |
||||||
|
"NOR": "Norway", |
||||||
|
"NPL": "Nepal", |
||||||
|
"NRU": "Nauru", |
||||||
|
"NZL": "New Zealand", |
||||||
|
"OMN": "Oman", |
||||||
|
"PAK": "Pakistan", |
||||||
|
"PAN": "Panama", |
||||||
|
"PCN": "Pitcairn", |
||||||
|
"PER": "Peru", |
||||||
|
"PHL": "Philippines", |
||||||
|
"PLW": "Palau", |
||||||
|
"PNG": "Papua New Guinea", |
||||||
|
"POL": "Poland", |
||||||
|
"PRI": "Puerto Rico", |
||||||
|
"PRK": "Korea, Democratic People's Republic of", |
||||||
|
"PRT": "Portugal", |
||||||
|
"PRY": "Paraguay", |
||||||
|
"PSE": "Palestine, State of", |
||||||
|
"PYF": "French Polynesia", |
||||||
|
"QAT": "Qatar", |
||||||
|
"REU": "RĂ©union", |
||||||
|
"ROU": "Romania", |
||||||
|
"RUS": "Russian Federation", |
||||||
|
"RWA": "Rwanda", |
||||||
|
"SAU": "Saudi Arabia", |
||||||
|
"SDN": "Sudan", |
||||||
|
"SEN": "Senegal", |
||||||
|
"SGP": "Singapore", |
||||||
|
"SGS": "South Georgia and the South Sandwich Islands", |
||||||
|
"SHN": "Saint Helena, Ascension and Tristan da Cunha", |
||||||
|
"SJM": "Svalbard and Jan Mayen", |
||||||
|
"SLB": "Solomon Islands", |
||||||
|
"SLE": "Sierra Leone", |
||||||
|
"SLV": "El Salvador", |
||||||
|
"SMR": "San Marino", |
||||||
|
"SOM": "Somalia", |
||||||
|
"SPM": "Saint Pierre and Miquelon", |
||||||
|
"SRB": "Serbia", |
||||||
|
"SSD": "South Sudan", |
||||||
|
"STP": "Sao Tome and Principe", |
||||||
|
"SUR": "Suriname", |
||||||
|
"SVK": "Slovakia", |
||||||
|
"SVN": "Slovenia", |
||||||
|
"SWE": "Sweden", |
||||||
|
"SWZ": "Swaziland", |
||||||
|
"SXM": "Sint Maarten (Dutch part)", |
||||||
|
"SYC": "Seychelles", |
||||||
|
"SYR": "Syrian Arab Republic", |
||||||
|
"TCA": "Turks and Caicos Islands", |
||||||
|
"TCD": "Chad", |
||||||
|
"TGO": "Togo", |
||||||
|
"THA": "Thailand", |
||||||
|
"TJK": "Tajikistan", |
||||||
|
"TKL": "Tokelau", |
||||||
|
"TKM": "Turkmenistan", |
||||||
|
"TLS": "Timor-Leste", |
||||||
|
"TON": "Tonga", |
||||||
|
"TTO": "Trinidad and Tobago", |
||||||
|
"TUN": "Tunisia", |
||||||
|
"TUR": "Turkey", |
||||||
|
"TUV": "Tuvalu", |
||||||
|
"TWN": "Taiwan, Province of China", |
||||||
|
"TZA": "Tanzania, United Republic of", |
||||||
|
"UGA": "Uganda", |
||||||
|
"UKR": "Ukraine", |
||||||
|
"UMI": "United States Minor Outlying Islands", |
||||||
|
"URY": "Uruguay", |
||||||
|
"USA": "United States", |
||||||
|
"UZB": "Uzbekistan", |
||||||
|
"VAT": "Holy See (Vatican City State)", |
||||||
|
"VCT": "Saint Vincent and the Grenadines", |
||||||
|
"VEN": "Venezuela, Bolivarian Republic of", |
||||||
|
"VGB": "Virgin Islands, British", |
||||||
|
"VIR": "Virgin Islands, U.S.", |
||||||
|
"VNM": "Viet Nam", |
||||||
|
"VUT": "Vanuatu", |
||||||
|
"WLF": "Wallis and Futuna", |
||||||
|
"WSM": "Samoa", |
||||||
|
"YEM": "Yemen", |
||||||
|
"ZAF": "South Africa", |
||||||
|
"ZMB": "Zambia", |
||||||
|
"ZWE": "Zimbabwe" |
||||||
|
} |
Loading…
Reference in new issue