-
-
Save joepie91/6adc1ee7faed4be9d1da0ca8fcc79d9f to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[ { input: 'Brandevej 10', | |
addressItems: | |
[ { input: 'Brandevej 10', | |
street: 'Brandevej', | |
numberItems: [ { type: 'single', number: '10' } ] } ] }, | |
{ input: 'Borgmester Jørgensens Vej 3-7', | |
addressItems: | |
[ { input: 'Borgmester Jørgensens Vej 3-7', | |
street: 'Borgmester Jørgensens Vej', | |
numberItems: [ { type: 'range', from: '3', to: '7' } ] } ] }, | |
{ input: 'Blegkilde Alle 2-4', | |
addressItems: | |
[ { input: 'Blegkilde Alle 2-4', | |
street: 'Blegkilde Alle', | |
numberItems: [ { type: 'range', from: '2', to: '4' } ] } ] }, | |
{ input: 'Boulevarden 27', | |
addressItems: | |
[ { input: 'Boulevarden 27', | |
street: 'Boulevarden', | |
numberItems: [ { type: 'single', number: '27' } ] } ] }, | |
{ input: 'Herningvej 1-21', | |
addressItems: | |
[ { input: 'Herningvej 1-21', | |
street: 'Herningvej', | |
numberItems: [ { type: 'range', from: '1', to: '21' } ] } ] }, | |
{ input: 'Christiansgade 23', | |
addressItems: | |
[ { input: 'Christiansgade 23', | |
street: 'Christiansgade', | |
numberItems: [ { type: 'single', number: '23' } ] } ] }, | |
{ input: 'Danmarksgade 55', | |
addressItems: | |
[ { input: 'Danmarksgade 55', | |
street: 'Danmarksgade', | |
numberItems: [ { type: 'single', number: '55' } ] } ] }, | |
{ input: 'Helgolandsgade 35', | |
addressItems: | |
[ { input: 'Helgolandsgade 35', | |
street: 'Helgolandsgade', | |
numberItems: [ { type: 'single', number: '35' } ] } ] }, | |
{ input: 'Scoresbysundvej 3', | |
addressItems: | |
[ { input: 'Scoresbysundvej 3', | |
street: 'Scoresbysundvej', | |
numberItems: [ { type: 'single', number: '3' } ] } ] }, | |
{ input: 'Stolpedalsvej 61A', | |
addressItems: | |
[ { input: 'Stolpedalsvej 61A', | |
street: 'Stolpedalsvej', | |
numberItems: [ { type: 'single', number: '61A' } ] } ] }, | |
{ input: 'Sigrid Undsets Vej 78-276', | |
addressItems: | |
[ { input: 'Sigrid Undsets Vej 78-276', | |
street: 'Sigrid Undsets Vej', | |
numberItems: [ { type: 'range', from: '78', to: '276' } ] } ] }, | |
{ input: 'Kollegievej 4-6', | |
addressItems: | |
[ { input: 'Kollegievej 4-6', | |
street: 'Kollegievej', | |
numberItems: [ { type: 'range', from: '4', to: '6' } ] } ] }, | |
{ input: 'Boulevarden 31', | |
addressItems: | |
[ { input: 'Boulevarden 31', | |
street: 'Boulevarden', | |
numberItems: [ { type: 'single', number: '31' } ] } ] }, | |
{ input: 'Blegkilde Allé 6-8', | |
addressItems: | |
[ { input: 'Blegkilde Allé 6-8', | |
street: 'Blegkilde Allé', | |
numberItems: [ { type: 'range', from: '6', to: '8' } ] } ] }, | |
{ input: 'Gundorfslund 1-4', | |
addressItems: | |
[ { input: 'Gundorfslund 1-4', | |
street: 'Gundorfslund', | |
numberItems: [ { type: 'range', from: '1', to: '4' } ] } ] }, | |
{ input: 'Jernbanegade 12A+B', | |
addressItems: | |
[ { input: 'Jernbanegade 12A+B', | |
street: 'Jernbanegade', | |
numberItems: | |
[ { type: 'single', number: '12A' }, | |
{ type: 'single', number: '12B' } ] } ] }, | |
{ input: 'Sonjavej 31A - F', | |
addressItems: | |
[ { input: 'Sonjavej 31A - F', | |
street: 'Sonjavej', | |
numberItems: [ { type: 'range', from: '31A', to: '31F' } ] } ] }, | |
{ input: 'Dronningens Tværgade 13A', | |
addressItems: | |
[ { input: 'Dronningens Tværgade 13A', | |
street: 'Dronningens Tværgade', | |
numberItems: [ { type: 'single', number: '13A' } ] } ] }, | |
{ input: 'Kancelligården 1-55', | |
addressItems: | |
[ { input: 'Kancelligården 1-55', | |
street: 'Kancelligården', | |
numberItems: [ { type: 'range', from: '1', to: '55' } ] } ] }, | |
{ input: 'Tinghusgade 2 / Smedegade 1 + 5', | |
addressItems: | |
[ { input: 'Tinghusgade 2', | |
street: 'Tinghusgade', | |
numberItems: [ { type: 'single', number: '2' } ] }, | |
{ input: 'Smedegade 1 + 5', | |
street: 'Smedegade', | |
numberItems: | |
[ { type: 'single', number: '1' }, | |
{ type: 'single', number: '5' } ] } ] }, | |
{ input: 'Eriksholmsparken 178', | |
addressItems: | |
[ { input: 'Eriksholmsparken 178', | |
street: 'Eriksholmsparken', | |
numberItems: [ { type: 'single', number: '178' } ] } ] }, | |
{ input: 'Rosenfeldtparken', | |
addressItems: | |
[ { input: 'Rosenfeldtparken', | |
street: 'Rosenfeldtparken', | |
numberItems: [] } ] }, | |
{ input: 'Stegenborgparken', | |
addressItems: | |
[ { input: 'Stegenborgparken', | |
street: 'Stegenborgparken', | |
numberItems: [] } ] }, | |
{ input: 'Vendelparken', | |
addressItems: | |
[ { input: 'Vendelparken', | |
street: 'Vendelparken', | |
numberItems: [] } ] }, | |
{ input: 'Lemvigvej 62-66', | |
addressItems: | |
[ { input: 'Lemvigvej 62-66', | |
street: 'Lemvigvej', | |
numberItems: [ { type: 'range', from: '62', to: '66' } ] } ] }, | |
{ input: 'Bakkegårdsvej 28', | |
addressItems: | |
[ { input: 'Bakkegårdsvej 28', | |
street: 'Bakkegårdsvej', | |
numberItems: [ { type: 'single', number: '28' } ] } ] }, | |
{ input: 'Bygaden 71-117', | |
addressItems: | |
[ { input: 'Bygaden 71-117', | |
street: 'Bygaden', | |
numberItems: [ { type: 'range', from: '71', to: '117' } ] } ] }, | |
{ input: 'Niels Ebbesens Gade 16', | |
addressItems: | |
[ { input: 'Niels Ebbesens Gade 16', | |
street: 'Niels Ebbesens Gade', | |
numberItems: [ { type: 'single', number: '16' } ] } ] }, | |
{ input: 'Follingsvej 2-153', | |
addressItems: | |
[ { input: 'Follingsvej 2-153', | |
street: 'Follingsvej', | |
numberItems: [ { type: 'range', from: '2', to: '153' } ] } ] }, | |
{ input: 'Hammelmosevej 40-116', | |
addressItems: | |
[ { input: 'Hammelmosevej 40-116', | |
street: 'Hammelmosevej', | |
numberItems: [ { type: 'range', from: '40', to: '116' } ] } ] }, | |
{ input: 'Dannebrogsgade 34', | |
addressItems: | |
[ { input: 'Dannebrogsgade 34', | |
street: 'Dannebrogsgade', | |
numberItems: [ { type: 'single', number: '34' } ] } ] }, | |
{ input: 'Hadsundvej 363F - P', | |
addressItems: | |
[ { input: 'Hadsundvej 363F - P', | |
street: 'Hadsundvej', | |
numberItems: [ { type: 'range', from: '363F', to: '363P' } ] } ] }, | |
{ input: 'Fegge-/Agger-/Sebbersundvej', | |
addressItems: | |
[ { input: 'Fegge-/Agger-/Sebbersundvej', | |
street: 'Fegge-/Agger-/Sebbersundvej', | |
numberItems: [] } ] }, | |
{ input: 'Knuden 1-82 og 84-98', | |
addressItems: | |
[ { input: 'Knuden 1-82 og 84-98', | |
street: 'Knuden', | |
numberItems: | |
[ { type: 'range', from: '1', to: '82' }, | |
{ type: 'range', from: '84', to: '98' } ] } ] }, | |
{ input: 'Øster Uttrupvej 3', | |
addressItems: | |
[ { input: 'Øster Uttrupvej 3', | |
street: 'Øster Uttrupvej', | |
numberItems: [ { type: 'single', number: '3' } ] } ] }, | |
{ input: 'Hellekisten 15-239', | |
addressItems: | |
[ { input: 'Hellekisten 15-239', | |
street: 'Hellekisten', | |
numberItems: [ { type: 'range', from: '15', to: '239' } ] } ] }, | |
{ input: 'Danagaarden 2-139', | |
addressItems: | |
[ { input: 'Danagaarden 2-139', | |
street: 'Danagaarden', | |
numberItems: [ { type: 'range', from: '2', to: '139' } ] } ] }, | |
{ input: 'Hvalpsundvej', | |
addressItems: | |
[ { input: 'Hvalpsundvej', | |
street: 'Hvalpsundvej', | |
numberItems: [] } ] }, | |
{ input: 'Næssundvej', | |
addressItems: | |
[ { input: 'Næssundvej', street: 'Næssundvej', numberItems: [] } ] }, | |
{ input: 'Vilsundvej 1-146', | |
addressItems: | |
[ { input: 'Vilsundvej 1-146', | |
street: 'Vilsundvej', | |
numberItems: [ { type: 'range', from: '1', to: '146' } ] } ] }, | |
{ input: 'Oddesundvej 33-193', | |
addressItems: | |
[ { input: 'Oddesundvej 33-193', | |
street: 'Oddesundvej', | |
numberItems: [ { type: 'range', from: '33', to: '193' } ] } ] }, | |
{ input: 'Peder Barkesgade 17 / Danmarksgade 35', | |
addressItems: | |
[ { input: 'Peder Barkesgade 17', | |
street: 'Peder Barkesgade', | |
numberItems: [ { type: 'single', number: '17' } ] }, | |
{ input: 'Danmarksgade 35', | |
street: 'Danmarksgade', | |
numberItems: [ { type: 'single', number: '35' } ] } ] }, | |
{ input: 'Valdemarsgade 2 / Svendsgade 13', | |
addressItems: | |
[ { input: 'Valdemarsgade 2', | |
street: 'Valdemarsgade', | |
numberItems: [ { type: 'single', number: '2' } ] }, | |
{ input: 'Svendsgade 13', | |
street: 'Svendsgade', | |
numberItems: [ { type: 'single', number: '13' } ] } ] }, | |
{ input: 'Damstræde 50-159', | |
addressItems: | |
[ { input: 'Damstræde 50-159', | |
street: 'Damstræde', | |
numberItems: [ { type: 'range', from: '50', to: '159' } ] } ] }, | |
{ input: 'Pontoppidanstræde 70A - 99E', | |
addressItems: | |
[ { input: 'Pontoppidanstræde 70A - 99E', | |
street: 'Pontoppidanstræde', | |
numberItems: [ { type: 'range', from: '70A', to: '99E' } ] } ] }, | |
{ input: 'Sigrid Undsets Vej 280A - 346B', | |
addressItems: | |
[ { input: 'Sigrid Undsets Vej 280A - 346B', | |
street: 'Sigrid Undsets Vej', | |
numberItems: [ { type: 'range', from: '280A', to: '346B' } ] } ] }, | |
{ input: 'Runddyssen 1-285', | |
addressItems: | |
[ { input: 'Runddyssen 1-285', | |
street: 'Runddyssen', | |
numberItems: [ { type: 'range', from: '1', to: '285' } ] } ] }, | |
{ input: 'Runddyssen 2-354', | |
addressItems: | |
[ { input: 'Runddyssen 2-354', | |
street: 'Runddyssen', | |
numberItems: [ { type: 'range', from: '2', to: '354' } ] } ] }, | |
{ input: 'Løvstikkevej / Ananasvej', | |
addressItems: | |
[ { input: 'Løvstikkevej', | |
street: 'Løvstikkevej', | |
numberItems: [] }, | |
{ input: 'Ananasvej', street: 'Ananasvej', numberItems: [] } ] }, | |
{ input: 'Sonjavej 4-86', | |
addressItems: | |
[ { input: 'Sonjavej 4-86', | |
street: 'Sonjavej', | |
numberItems: [ { type: 'range', from: '4', to: '86' } ] } ] }, | |
{ input: 'Kappavej / Deltavej', | |
addressItems: | |
[ { input: 'Kappavej', street: 'Kappavej', numberItems: [] }, | |
{ input: 'Deltavej', street: 'Deltavej', numberItems: [] } ] }, | |
{ input: 'Løkkegade 4', | |
addressItems: | |
[ { input: 'Løkkegade 4', | |
street: 'Løkkegade', | |
numberItems: [ { type: 'single', number: '4' } ] } ] }, | |
{ input: 'Brohusgade / Vestre Havnepromenade', | |
addressItems: | |
[ { input: 'Brohusgade', street: 'Brohusgade', numberItems: [] }, | |
{ input: 'Vestre Havnepromenade', | |
street: 'Vestre Havnepromenade', | |
numberItems: [] } ] }, | |
{ input: 'Metisvej / Dionevej', | |
addressItems: | |
[ { input: 'Metisvej', street: 'Metisvej', numberItems: [] }, | |
{ input: 'Dionevej', street: 'Dionevej', numberItems: [] } ] }, | |
{ input: 'Korevej 18', | |
addressItems: | |
[ { input: 'Korevej 18', | |
street: 'Korevej', | |
numberItems: [ { type: 'single', number: '18' } ] } ] }, | |
{ input: 'Hellasvej 14 - 48', | |
addressItems: | |
[ { input: 'Hellasvej 14 - 48', | |
street: 'Hellasvej', | |
numberItems: [ { type: 'range', from: '14', to: '48' } ] } ] }, | |
{ input: 'Jens Bangs Gade 5 - 11', | |
addressItems: | |
[ { input: 'Jens Bangs Gade 5 - 11', | |
street: 'Jens Bangs Gade', | |
numberItems: [ { type: 'range', from: '5', to: '11' } ] } ] }, | |
{ input: 'Dannerhøj 11-40', | |
addressItems: | |
[ { input: 'Dannerhøj 11-40', | |
street: 'Dannerhøj', | |
numberItems: [ { type: 'range', from: '11', to: '40' } ] } ] }, | |
{ input: 'Thomas Boss Gade 21', | |
addressItems: | |
[ { input: 'Thomas Boss Gade 21', | |
street: 'Thomas Boss Gade', | |
numberItems: [ { type: 'single', number: '21' } ] } ] }, | |
{ input: 'Vestergade 23, 25, 27', | |
addressItems: | |
[ { input: 'Vestergade 23, 25, 27', | |
street: 'Vestergade', | |
numberItems: | |
[ { type: 'single', number: '23' }, | |
{ type: 'single', number: '25' }, | |
{ type: 'single', number: '27' } ] } ] }, | |
{ input: 'Brandevej 8 B-G', | |
addressItems: | |
[ { input: 'Brandevej 8 B-G', | |
street: 'Brandevej', | |
numberItems: [ { type: 'range', from: '8 B', to: '8 G' } ] } ] }, | |
{ input: 'Lindholm Nærbanevej 3', | |
addressItems: | |
[ { input: 'Lindholm Nærbanevej 3', | |
street: 'Lindholm Nærbanevej', | |
numberItems: [ { type: 'single', number: '3' } ] } ] }, | |
{ input: 'Sankt Jørgens Gade 12', | |
addressItems: | |
[ { input: 'Sankt Jørgens Gade 12', | |
street: 'Sankt Jørgens Gade', | |
numberItems: [ { type: 'single', number: '12' } ] } ] }, | |
{ input: 'Vendelbogade 13', | |
addressItems: | |
[ { input: 'Vendelbogade 13', | |
street: 'Vendelbogade', | |
numberItems: [ { type: 'single', number: '13' } ] } ] }, | |
{ input: 'Toldstrupsgade 18', | |
addressItems: | |
[ { input: 'Toldstrupsgade 18', | |
street: 'Toldstrupsgade', | |
numberItems: [ { type: 'single', number: '18' } ] } ] }, | |
{ input: 'Absalonsgade 2', | |
addressItems: | |
[ { input: 'Absalonsgade 2', | |
street: 'Absalonsgade', | |
numberItems: [ { type: 'single', number: '2' } ] } ] }, | |
{ input: 'Smedegårdsvej 28-124', | |
addressItems: | |
[ { input: 'Smedegårdsvej 28-124', | |
street: 'Smedegårdsvej', | |
numberItems: [ { type: 'range', from: '28', to: '124' } ] } ] }, | |
{ input: 'Scoresbysundvej 6-10', | |
addressItems: | |
[ { input: 'Scoresbysundvej 6-10', | |
street: 'Scoresbysundvej', | |
numberItems: [ { type: 'range', from: '6', to: '10' } ] } ] }, | |
{ input: 'Brandevej 2', | |
addressItems: | |
[ { input: 'Brandevej 2', | |
street: 'Brandevej', | |
numberItems: [ { type: 'single', number: '2' } ] } ] }, | |
{ input: 'Lindholm Brygge 1', | |
addressItems: | |
[ { input: 'Lindholm Brygge 1', | |
street: 'Lindholm Brygge', | |
numberItems: [ { type: 'single', number: '1' } ] } ] }, | |
{ input: 'Dannebrogsgade 45', | |
addressItems: | |
[ { input: 'Dannebrogsgade 45', | |
street: 'Dannebrogsgade', | |
numberItems: [ { type: 'single', number: '45' } ] } ] }, | |
{ input: 'Myrdalstræde 8A - 26E', | |
addressItems: | |
[ { input: 'Myrdalstræde 8A - 26E', | |
street: 'Myrdalstræde', | |
numberItems: [ { type: 'range', from: '8A', to: '26E' } ] } ] }, | |
{ input: 'Myrdalstræde 1A - 45E', | |
addressItems: | |
[ { input: 'Myrdalstræde 1A - 45E', | |
street: 'Myrdalstræde', | |
numberItems: [ { type: 'range', from: '1A', to: '45E' } ] } ] }, | |
{ input: 'Bag Hækken 29 - 31', | |
addressItems: | |
[ { input: 'Bag Hækken 29 - 31', | |
street: 'Bag Hækken', | |
numberItems: [ { type: 'range', from: '29', to: '31' } ] } ] }, | |
{ input: 'Mellemvang 2 - 4', | |
addressItems: | |
[ { input: 'Mellemvang 2 - 4', | |
street: 'Mellemvang', | |
numberItems: [ { type: 'range', from: '2', to: '4' } ] } ] }, | |
{ input: 'Frejavej 6 - 56', | |
addressItems: | |
[ { input: 'Frejavej 6 - 56', | |
street: 'Frejavej', | |
numberItems: [ { type: 'range', from: '6', to: '56' } ] } ] }, | |
{ input: 'Snebærvej 6-34 og 21-31', | |
addressItems: | |
[ { input: 'Snebærvej 6-34 og 21-31', | |
street: 'Snebærvej', | |
numberItems: | |
[ { type: 'range', from: '6', to: '34' }, | |
{ type: 'range', from: '21', to: '31' } ] } ] }, | |
{ input: 'Buchwaldshave 14 - 32', | |
addressItems: | |
[ { input: 'Buchwaldshave 14 - 32', | |
street: 'Buchwaldshave', | |
numberItems: [ { type: 'range', from: '14', to: '32' } ] } ] }, | |
{ input: 'Junoparken 30 - 52', | |
addressItems: | |
[ { input: 'Junoparken 30 - 52', | |
street: 'Junoparken', | |
numberItems: [ { type: 'range', from: '30', to: '52' } ] } ] }, | |
{ input: 'Spiesgade 10 - 60', | |
addressItems: | |
[ { input: 'Spiesgade 10 - 60', | |
street: 'Spiesgade', | |
numberItems: [ { type: 'range', from: '10', to: '60' } ] } ] }, | |
{ input: 'Langagervej 4', | |
addressItems: | |
[ { input: 'Langagervej 4', | |
street: 'Langagervej', | |
numberItems: [ { type: 'single', number: '4' } ] } ] }, | |
{ input: 'Hadsundvej 180-182', | |
addressItems: | |
[ { input: 'Hadsundvej 180-182', | |
street: 'Hadsundvej', | |
numberItems: [ { type: 'range', from: '180', to: '182' } ] } ] }, | |
{ input: 'Odinsgade 17-29, 109', | |
addressItems: | |
[ { input: 'Odinsgade 17-29, 109', | |
street: 'Odinsgade', | |
numberItems: | |
[ { type: 'range', from: '17', to: '29' }, | |
{ type: 'single', number: '109' } ] } ] }, | |
{ input: 'Niels Bohrs Vej 36-40', | |
addressItems: | |
[ { input: 'Niels Bohrs Vej 36-40', | |
street: 'Niels Bohrs Vej', | |
numberItems: [ { type: 'range', from: '36', to: '40' } ] } ] }, | |
{ input: 'Ribevej 3', | |
addressItems: | |
[ { input: 'Ribevej 3', | |
street: 'Ribevej', | |
numberItems: [ { type: 'single', number: '3' } ] } ] }, | |
{ input: 'Rendsburggade 20+28', | |
addressItems: | |
[ { input: 'Rendsburggade 20+28', | |
street: 'Rendsburggade', | |
numberItems: | |
[ { type: 'single', number: '20' }, | |
{ type: 'single', number: '28' } ] } ] }, | |
{ input: 'Ditlev Bergs Vej 5-121', | |
addressItems: | |
[ { input: 'Ditlev Bergs Vej 5-121', | |
street: 'Ditlev Bergs Vej', | |
numberItems: [ { type: 'range', from: '5', to: '121' } ] } ] }, | |
{ input: 'Søndergade 62', | |
addressItems: | |
[ { input: 'Søndergade 62', | |
street: 'Søndergade', | |
numberItems: [ { type: 'single', number: '62' } ] } ] }, | |
{ input: 'Ryesgade 50E, 2. sal', | |
addressItems: | |
[ { input: 'Ryesgade 50E, 2. sal', | |
street: 'Ryesgade', | |
numberItems: [ { type: 'single', number: '50E, 2. sal' } ] } ] }, | |
{ input: 'Ryesgade 33', | |
addressItems: | |
[ { input: 'Ryesgade 33', | |
street: 'Ryesgade', | |
numberItems: [ { type: 'single', number: '33' } ] } ] }, | |
{ input: 'Rendsburggade 7-11', | |
addressItems: | |
[ { input: 'Rendsburggade 7-11', | |
street: 'Rendsburggade', | |
numberItems: [ { type: 'range', from: '7', to: '11' } ] } ] }, | |
{ input: 'Østerbro 31 A', | |
addressItems: | |
[ { input: 'Østerbro 31 A', | |
street: 'Østerbro', | |
numberItems: [ { type: 'single', number: '31 A' } ] } ] }, | |
{ input: 'Ny Kastetvej 24', | |
addressItems: | |
[ { input: 'Ny Kastetvej 24', | |
street: 'Ny Kastetvej', | |
numberItems: [ { type: 'single', number: '24' } ] } ] }, | |
{ input: 'Stormgade 9', | |
addressItems: | |
[ { input: 'Stormgade 9', | |
street: 'Stormgade', | |
numberItems: [ { type: 'single', number: '9' } ] } ] }, | |
{ input: 'Golfbakken 20-22', | |
addressItems: | |
[ { input: 'Golfbakken 20-22', | |
street: 'Golfbakken', | |
numberItems: [ { type: 'range', from: '20', to: '22' } ] } ] }, | |
{ input: 'Korsgade 3 og Kattesundet 27', | |
addressItems: | |
[ { input: 'Korsgade 3', | |
street: 'Korsgade', | |
numberItems: [ { type: 'single', number: '3' } ] }, | |
{ input: 'Kattesundet 27', | |
street: 'Kattesundet', | |
numberItems: [ { type: 'single', number: '27' } ] } ] }, | |
{ input: 'Toldstrupsgade 14-16', | |
addressItems: | |
[ { input: 'Toldstrupsgade 14-16', | |
street: 'Toldstrupsgade', | |
numberItems: [ { type: 'range', from: '14', to: '16' } ] } ] }, | |
{ input: 'Signalvej 4', | |
addressItems: | |
[ { input: 'Signalvej 4', | |
street: 'Signalvej', | |
numberItems: [ { type: 'single', number: '4' } ] } ] }, | |
{ input: 'Beddingen 9', | |
addressItems: | |
[ { input: 'Beddingen 9', | |
street: 'Beddingen', | |
numberItems: [ { type: 'single', number: '9' } ] } ] }, | |
{ input: 'Sankelmarksgade 3 / Danmarksgade 11', | |
addressItems: | |
[ { input: 'Sankelmarksgade 3', | |
street: 'Sankelmarksgade', | |
numberItems: [ { type: 'single', number: '3' } ] }, | |
{ input: 'Danmarksgade 11', | |
street: 'Danmarksgade', | |
numberItems: [ { type: 'single', number: '11' } ] } ] }, | |
... 27 more items ] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
"use strict"; | |
const fs = require("fs"); | |
const execall = require("execall"); | |
let data = fs.readFileSync("./data.csv", "utf8"); | |
function splitAtPositions(text, separators) { | |
let index = 0; | |
let items = []; | |
separators.forEach((separator) => { | |
items.push(text.slice(index, separator.index)); | |
index = separator.index + separator.separatorLength; | |
}); | |
items.push(text.slice(index)); | |
return items; | |
} | |
function processRelatedNumbers(numberItems) { | |
let newItems = []; | |
numberItems.forEach((item) => { | |
if (newItems.length === 0 || item.match(/^[0-9]+\s?[a-z]{0,2}(?:\s?-\s?[0-9]+\s?[a-z]{0,2})?$/i)) { | |
newItems.push(item); | |
} else { | |
let lastIndex = newItems.length - 1; | |
if (item.match(/^[a-z]{1,2}$/i)) { | |
/* eg. '12A+B', where we are currently handling the 'B' */ | |
newItems.push(mergeExtensions(newItems[lastIndex], item)); | |
} else { | |
/* eg. '50E, 2. sal', where '2. sal' is a refinement of '50E' */ | |
newItems[lastIndex] += `, ${item}`; | |
} | |
} | |
}); | |
return newItems; | |
} | |
function mergeExtensions(base, extension) { | |
let baseNumber = base.match(/^[0-9]+\s?/)[0]; | |
return baseNumber + extension; | |
} | |
let addresses = data.split("\n").map((line) => { | |
if (line.includes(";")) { | |
return line.split(";")[0]; | |
} | |
}).filter((item) => { | |
return (item != null); | |
}).map((item) => { | |
let separatorSlashes = execall(/[^-]\/\s?[a-z]{2}/gi, item).map((match) => { | |
return { | |
index: match.index + 1, | |
separatorLength: 1 | |
}; | |
}); | |
let separatorAnds = execall(/\sog\s[a-z]{2}/gi, item).map((match) => { | |
return { | |
index: match.index + 1, | |
separatorLength: 2 | |
}; | |
}); | |
let separators = separatorSlashes.concat(separatorAnds); | |
let addressItems = splitAtPositions(item, separators); | |
return { | |
input: item, | |
addressItems: addressItems.map((item) => { | |
let trimmedItem = item.trim(); | |
/* First number preceded by a space */ | |
let numbering = / [0-9]+/.exec(trimmedItem); | |
let street = (numbering != null) | |
? trimmedItem.slice(0, numbering.index).trim() | |
: trimmedItem; | |
let numberItems = (numbering != null) | |
? trimmedItem.slice(numbering.index).trim().split(/,|\/|\+|og/g).map((match) => match.trim()) | |
: []; | |
return { | |
input: trimmedItem, | |
street: street, | |
numberItems: processRelatedNumbers(numberItems).map((item) => { | |
if (item.includes("-")) { | |
let [from, to] = item.split("-"); | |
from = from.trim(); | |
to = to.trim(); | |
if (from[0].match(/[0-9]/) && to[0].match(/[a-z]/i)) { | |
/* Special case: number has extensions, and the `to` only specifies the extension, without repeating the number. */ | |
to = mergeExtensions(from, to); | |
} | |
return { | |
type: "range", | |
from: from, | |
to: to | |
}; | |
} else { | |
return { | |
type: "single", | |
number: item | |
} | |
} | |
}) | |
}; | |
}) | |
}; | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment