algeria-wilayas
Version:
A comprehensive package for handling Algerian administrative divisions
65 lines (50 loc) • 1.76 kB
text/typescript
import fs from 'fs'
import path from 'path'
interface Commune {
id: number;
commune_name_ascii: string;
commune_name: string;
daira_name_ascii: string;
daira_name: string;
wilaya_code: string;
wilaya_name_ascii: string;
wilaya_name: string;
}
interface Daira {
id: string;
name: {
arabic: string;
ascii: string;
};
wilaya_code: string;
}
const extractDairas = () => {
const rawData = JSON.parse(
fs.readFileSync(path.join(__dirname, '../data/communes.json'), 'utf-8')
) as Commune[];
const dairasMap = new Map<string, Daira>();
rawData.forEach(commune => {
const dairaKey = `${commune.wilaya_code}-${commune.daira_name_ascii}`;
if(!dairasMap.has(dairaKey)) {
dairasMap.set(dairaKey,{
id : dairaKey,
name : {
arabic : commune.daira_name,
ascii : commune.daira_name_ascii
},
wilaya_code : commune.wilaya_code
})
}})
const dairas = Array.from(dairasMap.values()).sort((a,b) => {
if(a.wilaya_code !== b.wilaya_code) {
return Number(a.wilaya_code) - Number(b.wilaya_code)
}
return a.name.ascii.localeCompare(b.name.ascii)
})
fs.writeFileSync(
path.join(__dirname, '../data/dairas.json'),
JSON.stringify(dairas, null, 2)
);
console.log(`Successfully extracted ${dairas.length} dairas`);
}
extractDairas();