forked from MapComplete/MapComplete
		
	Chore: formatting
This commit is contained in:
		
							parent
							
								
									6a0b77eb99
								
							
						
					
					
						commit
						4fe2df61fe
					
				
					 4 changed files with 359 additions and 231 deletions
				
			
		
							
								
								
									
										16
									
								
								package-lock.json
									
										
									
										generated
									
									
									
								
							
							
						
						
									
										16
									
								
								package-lock.json
									
										
									
										generated
									
									
									
								
							|  | @ -1,12 +1,12 @@ | ||||||
| { | { | ||||||
|   "name": "mapcomplete", |   "name": "mapcomplete", | ||||||
|   "version": "0.44.11", |   "version": "0.44.13", | ||||||
|   "lockfileVersion": 2, |   "lockfileVersion": 2, | ||||||
|   "requires": true, |   "requires": true, | ||||||
|   "packages": { |   "packages": { | ||||||
|     "": { |     "": { | ||||||
|       "name": "mapcomplete", |       "name": "mapcomplete", | ||||||
|       "version": "0.44.11", |       "version": "0.44.13", | ||||||
|       "license": "GPL-3.0-or-later", |       "license": "GPL-3.0-or-later", | ||||||
|       "dependencies": { |       "dependencies": { | ||||||
|         "@comunica/core": "^3.0.1", |         "@comunica/core": "^3.0.1", | ||||||
|  | @ -7893,9 +7893,9 @@ | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "node_modules/caniuse-lite": { |     "node_modules/caniuse-lite": { | ||||||
|       "version": "1.0.30001642", |       "version": "1.0.30001651", | ||||||
|       "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001642.tgz", |       "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001651.tgz", | ||||||
|       "integrity": "sha512-3XQ0DoRgLijXJErLSl+bLnJ+Et4KqV1PY6JJBGAFlsNsz31zeAIncyeZfLCabHK/jtSh+671RM9YMldxjUPZtA==", |       "integrity": "sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "funding": [ |       "funding": [ | ||||||
|         { |         { | ||||||
|  | @ -25250,9 +25250,9 @@ | ||||||
|       "version": "2.0.1" |       "version": "2.0.1" | ||||||
|     }, |     }, | ||||||
|     "caniuse-lite": { |     "caniuse-lite": { | ||||||
|       "version": "1.0.30001642", |       "version": "1.0.30001651", | ||||||
|       "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001642.tgz", |       "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001651.tgz", | ||||||
|       "integrity": "sha512-3XQ0DoRgLijXJErLSl+bLnJ+Et4KqV1PY6JJBGAFlsNsz31zeAIncyeZfLCabHK/jtSh+671RM9YMldxjUPZtA==", |       "integrity": "sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==", | ||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "canonicalize": { |     "canonicalize": { | ||||||
|  |  | ||||||
|  | @ -15,12 +15,10 @@ import { TagUtils } from "../../src/Logic/Tags/TagUtils" | ||||||
| import { BBox } from "../../src/Logic/BBox" | import { BBox } from "../../src/Logic/BBox" | ||||||
| 
 | 
 | ||||||
| export default class CleanRepair extends Script { | export default class CleanRepair extends Script { | ||||||
| 
 |  | ||||||
|     constructor() { |     constructor() { | ||||||
|         super("Cleans 'repair'-tags for mass retagging") |         super("Cleans 'repair'-tags for mass retagging") | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
|     async main(args: string[]) { |     async main(args: string[]) { | ||||||
|         const path = args[0] |         const path = args[0] | ||||||
|         console.log("Loading", path) |         console.log("Loading", path) | ||||||
|  | @ -32,141 +30,244 @@ export default class CleanRepair extends Script { | ||||||
|                 "repair!=brand", |                 "repair!=brand", | ||||||
|                 "repair!=only", |                 "repair!=only", | ||||||
|                 "repair!=only_sold", |                 "repair!=only_sold", | ||||||
|                 "repair!=assisted_self_service" |                 "repair!=assisted_self_service", | ||||||
|             ] |             ], | ||||||
|         }) |         }) | ||||||
|         const overpass = new Overpass(criteria, [], |         const overpass = new Overpass(criteria, [], "https://overpass-api.de/api/interpreter") | ||||||
|             "https://overpass-api.de/api/interpreter" |         const data: Feature<Geometry, Record<string, string>>[] = ( | ||||||
|         ) |             await overpass.queryGeoJson(BBox.global) | ||||||
|         const data: Feature<Geometry, Record<string, string>> [] = (await overpass.queryGeoJson(BBox.global))[0].features |         )[0].features | ||||||
|         console.log("Got", data.length, "features; sample", data[0]) |         console.log("Got", data.length, "features; sample", data[0]) | ||||||
|         const changes = new Changes({ |         const changes = new Changes({ | ||||||
|             dryRun: new ImmutableStore(true), |             dryRun: new ImmutableStore(true), | ||||||
|             osmConnection: new OsmConnection({ |             osmConnection: new OsmConnection({ | ||||||
|                 dryRun: new ImmutableStore(true) |                 dryRun: new ImmutableStore(true), | ||||||
|             }) |             }), | ||||||
|         }) |         }) | ||||||
| 
 | 
 | ||||||
|         const metakeys = ["id", "version", "changeset", "user", "uid", "timestamp"] |         const metakeys = ["id", "version", "changeset", "user", "uid", "timestamp"] | ||||||
| 
 | 
 | ||||||
|         const replace = { |         const replace = { | ||||||
|             "phone": "mobile_phone", |             phone: "mobile_phone", | ||||||
|             "phones": "mobile_phone", |             phones: "mobile_phone", | ||||||
|             "mobile": "mobile_phone", |             mobile: "mobile_phone", | ||||||
|             "cellphone": "mobile_phone", |             cellphone: "mobile_phone", | ||||||
|             "pc": "computers", |             pc: "computers", | ||||||
|             "mobile_phones": "mobile_phone", |             mobile_phones: "mobile_phone", | ||||||
|             "mobilephones": "mobile_phone", |             mobilephones: "mobile_phone", | ||||||
|             "mobilephone": "mobile_phone", |             mobilephone: "mobile_phone", | ||||||
|             "clocks": "clock", |             clocks: "clock", | ||||||
|             "elektronik": "electronics", |             elektronik: "electronics", | ||||||
|             "tires": "tyres", |             tires: "tyres", | ||||||
|             "welcome": "yes", |             welcome: "yes", | ||||||
|             "tyre": "tyres", |             tyre: "tyres", | ||||||
|             "electronic_products": "electronics", |             electronic_products: "electronics", | ||||||
|             "shoe": "shoes", |             shoe: "shoes", | ||||||
|             "pc_repairs": "computer", |             pc_repairs: "computer", | ||||||
|             "computers": "computer", |             computers: "computer", | ||||||
|             "body_construction": "body_work", |             body_construction: "body_work", | ||||||
|             "body": "body_work", |             body: "body_work", | ||||||
| 
 | 
 | ||||||
|             "body_repairer": "body_work", |             body_repairer: "body_work", | ||||||
|             "instruments": "musical_instrument", |             instruments: "musical_instrument", | ||||||
|             "service": "yes", |             service: "yes", | ||||||
|             "punture": "tyres", |             punture: "tyres", | ||||||
|             "electricity": "electronics", |             electricity: "electronics", | ||||||
|             "self_service": "assisted_self_repair", |             self_service: "assisted_self_repair", | ||||||
|             "paint": "bodywork", |             paint: "bodywork", | ||||||
|             "paint shop": "bodywork", |             "paint shop": "bodywork", | ||||||
|             "paint_shop": "bodywork", |             paint_shop: "bodywork", | ||||||
|             "lawnmower": "lawn_mower", |             lawnmower: "lawn_mower", | ||||||
|             "aircon": "air_conditioning", |             aircon: "air_conditioning", | ||||||
|             "*": "yes", |             "*": "yes", | ||||||
|             "ammeublement": "furniture", |             ammeublement: "furniture", | ||||||
|             "all": "yes", |             all: "yes", | ||||||
|             "appliances": "appliance", |             appliances: "appliance", | ||||||
|             "electronic": "electronics", "escooter": "electric_scooter", |             electronic: "electronics", | ||||||
|  |             escooter: "electric_scooter", | ||||||
|             "aviation maintenance, repair, and_overhaul": "airplane", |             "aviation maintenance, repair, and_overhaul": "airplane", | ||||||
|             "aviation_maintenance": "airplanes", |             aviation_maintenance: "airplanes", | ||||||
|             "bags": "bag", |             bags: "bag", | ||||||
|             "boats": "boat", |             boats: "boat", | ||||||
|             "boilers": "boiler", |             boilers: "boiler", | ||||||
|             "breaks": "brakes", |             breaks: "brakes", | ||||||
|             "car": "cars", |             car: "cars", | ||||||
|             "tv": "television", |             tv: "television", | ||||||
|             "clothing": "clothes", |             clothing: "clothes", | ||||||
|             "coat_of_lacquer": "body_work", |             coat_of_lacquer: "body_work", | ||||||
|             "cycle": "bicycle", |             cycle: "bicycle", | ||||||
|             "cars": "car", |             cars: "car", | ||||||
|             "blacharstwo": "tin", "lakiernictwo": "body_work", |             blacharstwo: "tin", | ||||||
|             "tire": "tyres", "powder_coating": "body_work", |             lakiernictwo: "body_work", | ||||||
|             "leather_products": "leather", |             tire: "tyres", | ||||||
|             "motocycle": "motorcycle", |             powder_coating: "body_work", | ||||||
|             "motor": "motorcycle", "motoo": "motorcycle", |             leather_products: "leather", | ||||||
|             "motorbike": "motorcycle", "motorcycle_repair": "motorcycle", "motorsports": "motorcycle", |             motocycle: "motorcycle", | ||||||
|             "printers": "printer", |             motor: "motorcycle", | ||||||
|             "tyres24": "tyres", |             motoo: "motorcycle", | ||||||
|             "paintings": "painting", |             motorbike: "motorcycle", | ||||||
|             "paintwork": "body_work", |             motorcycle_repair: "motorcycle", | ||||||
|             "pumps": "pump", |             motorsports: "motorcycle", | ||||||
|  |             printers: "printer", | ||||||
|  |             tyres24: "tyres", | ||||||
|  |             paintings: "painting", | ||||||
|  |             paintwork: "body_work", | ||||||
|  |             pumps: "pump", | ||||||
|             "shoes:yes": "shoes", |             "shoes:yes": "shoes", | ||||||
|             "wheel": "tyres", |             wheel: "tyres", | ||||||
|             "wheels": "tyres", |             wheels: "tyres", | ||||||
|             "vacuum": "vacuum_cleaner", |             vacuum: "vacuum_cleaner", | ||||||
|             "glass": "car_glassj" |             glass: "car_glassj", | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         const brands = ["garage", "audi", "renault", "apple", "honda", "ducati", "ford", "mazda","garage_renault_aie"] |         const brands = [ | ||||||
|  |             "garage", | ||||||
|  |             "audi", | ||||||
|  |             "renault", | ||||||
|  |             "apple", | ||||||
|  |             "honda", | ||||||
|  |             "ducati", | ||||||
|  |             "ford", | ||||||
|  |             "mazda", | ||||||
|  |             "garage_renault_aie", | ||||||
|  |         ] | ||||||
| 
 | 
 | ||||||
|         const valid = ["train", "tv", "jewelry", "scooter", ...Object.values(replace), "watch", "oldtimer", "car", "bicycle", "boat", "windbreaker", |         const valid = [ | ||||||
|             "agricultural", "alternator", "antiques", "atv", "auto", |             "train", | ||||||
|             "aviation maintenance", "bag", "bags", |             "tv", | ||||||
|             "battery", "bicyle", "borehole", "building", |             "jewelry", | ||||||
|             "camera", "car_glass", "caravan", |             "scooter", | ||||||
|             "carpenter", "coffee_machine", "construction machinery", "cycle", |             ...Object.values(replace), | ||||||
|             "dentures", "ducati", "electric motor", |             "watch", | ||||||
|             "electric_bike", "electric_scooter", "espresso_machines", "exhaust", |             "oldtimer", | ||||||
|             "fire_extinguishers", "fountain_pen", "fridge", |             "car", | ||||||
|             "garden_machinery", "gas appliances", "generator", |             "bicycle", | ||||||
|             "glasses", "golfcart", "guitar", |             "boat", | ||||||
|             "hammock", "hardware", "heating pumps", |             "windbreaker", | ||||||
|             "hifi", "hvac", "installation", "jewellery", "keys", "kick_scooter", |             "agricultural", | ||||||
|             "kitesurfing", "tools", "toys", "tractor", |             "alternator", | ||||||
|             "trailer", "transformer", "truck", |             "antiques", | ||||||
|             "typewriter", "sail", "sewing_machine", "ship", "picture", "pillow", "plastic", |             "atv", | ||||||
|             "cash_register", "cnc", "laptop", |             "auto", | ||||||
|  |             "aviation maintenance", | ||||||
|  |             "bag", | ||||||
|  |             "bags", | ||||||
|  |             "battery", | ||||||
|  |             "bicyle", | ||||||
|  |             "borehole", | ||||||
|  |             "building", | ||||||
|  |             "camera", | ||||||
|  |             "car_glass", | ||||||
|  |             "caravan", | ||||||
|  |             "carpenter", | ||||||
|  |             "coffee_machine", | ||||||
|  |             "construction machinery", | ||||||
|  |             "cycle", | ||||||
|  |             "dentures", | ||||||
|  |             "ducati", | ||||||
|  |             "electric motor", | ||||||
|  |             "electric_bike", | ||||||
|  |             "electric_scooter", | ||||||
|  |             "espresso_machines", | ||||||
|  |             "exhaust", | ||||||
|  |             "fire_extinguishers", | ||||||
|  |             "fountain_pen", | ||||||
|  |             "fridge", | ||||||
|  |             "garden_machinery", | ||||||
|  |             "gas appliances", | ||||||
|  |             "generator", | ||||||
|  |             "glasses", | ||||||
|  |             "golfcart", | ||||||
|  |             "guitar", | ||||||
|  |             "hammock", | ||||||
|  |             "hardware", | ||||||
|  |             "heating pumps", | ||||||
|  |             "hifi", | ||||||
|  |             "hvac", | ||||||
|  |             "installation", | ||||||
|  |             "jewellery", | ||||||
|  |             "keys", | ||||||
|  |             "kick_scooter", | ||||||
|  |             "kitesurfing", | ||||||
|  |             "tools", | ||||||
|  |             "toys", | ||||||
|  |             "tractor", | ||||||
|  |             "trailer", | ||||||
|  |             "transformer", | ||||||
|  |             "truck", | ||||||
|  |             "typewriter", | ||||||
|  |             "sail", | ||||||
|  |             "sewing_machine", | ||||||
|  |             "ship", | ||||||
|  |             "picture", | ||||||
|  |             "pillow", | ||||||
|  |             "plastic", | ||||||
|  |             "cash_register", | ||||||
|  |             "cnc", | ||||||
|  |             "laptop", | ||||||
|             "laundry_machines", |             "laundry_machines", | ||||||
|             "photo_camera", "photocopier", "piano", |             "photo_camera", | ||||||
|             "power_tools", "pressure_gauges", "printer", |             "photocopier", | ||||||
|             , "snowboard", "snowmobile", "starter", "machines", "mainframe", |             "piano", | ||||||
|  |             "power_tools", | ||||||
|  |             "pressure_gauges", | ||||||
|  |             "printer", | ||||||
|  |             , | ||||||
|  |             "snowboard", | ||||||
|  |             "snowmobile", | ||||||
|  |             "starter", | ||||||
|  |             "machines", | ||||||
|  |             "mainframe", | ||||||
|             "outboard_motor", |             "outboard_motor", | ||||||
|             "video", "washing_machine", "ski", "radiator", |             "video", | ||||||
|             "radio", "refrigerator", |             "washing_machine", | ||||||
|             "rv", "ski", "window", "zipper", "weighing_scale", |             "ski", | ||||||
|             "small_electric_vehicle" |             "radiator", | ||||||
| 
 |             "radio", | ||||||
|         ].map(s => s.replace(/ /g, "_")) |             "refrigerator", | ||||||
| 
 |             "rv", | ||||||
|  |             "ski", | ||||||
|  |             "window", | ||||||
|  |             "zipper", | ||||||
|  |             "weighing_scale", | ||||||
|  |             "small_electric_vehicle", | ||||||
|  |         ].map((s) => s.replace(/ /g, "_")) | ||||||
| 
 | 
 | ||||||
|         const skip = ["yes", "no", "only", "brand", "assisted_self_repair", "only_sold"] |         const skip = ["yes", "no", "only", "brand", "assisted_self_repair", "only_sold"] | ||||||
|         const dloader = new OsmObjectDownloader() |         const dloader = new OsmObjectDownloader() | ||||||
|         const rm = ["50243147100015", "81342677200048", "and overhaul", "repair", "unset", "сервисный_центр", "taller_de_michu", "quitandinha_g_&_a", "mechanika"].map(v => v.replace(/ /g, "_")) |         const rm = [ | ||||||
|  |             "50243147100015", | ||||||
|  |             "81342677200048", | ||||||
|  |             "and overhaul", | ||||||
|  |             "repair", | ||||||
|  |             "unset", | ||||||
|  |             "сервисный_центр", | ||||||
|  |             "taller_de_michu", | ||||||
|  |             "quitandinha_g_&_a", | ||||||
|  |             "mechanika", | ||||||
|  |         ].map((v) => v.replace(/ /g, "_")) | ||||||
|         const objects: OsmObject[] = [] |         const objects: OsmObject[] = [] | ||||||
|         const changesToMake: ChangeDescription [] = [] |         const changesToMake: ChangeDescription[] = [] | ||||||
|         const first = GeoOperations.centerpointCoordinates(data[0]) |         const first = GeoOperations.centerpointCoordinates(data[0]) | ||||||
|         for (const f of data) { |         for (const f of data) { | ||||||
|             if (GeoOperations.distanceBetween(first, GeoOperations.centerpointCoordinates(f)) > 2500000) { |             if ( | ||||||
|  |                 GeoOperations.distanceBetween(first, GeoOperations.centerpointCoordinates(f)) > | ||||||
|  |                 2500000 | ||||||
|  |             ) { | ||||||
|                 continue |                 continue | ||||||
|             } |             } | ||||||
|             let keyRaw = f.properties.repair |             let keyRaw = f.properties.repair | ||||||
|             keyRaw = replace[keyRaw] ?? keyRaw |             keyRaw = replace[keyRaw] ?? keyRaw | ||||||
|             if (brands.some(br => keyRaw.toLowerCase().indexOf(br.trim()) >= 0)) { |             if (brands.some((br) => keyRaw.toLowerCase().indexOf(br.trim()) >= 0)) { | ||||||
|                 f.properties.repair = "brand" |                 f.properties.repair = "brand" | ||||||
|             } if(skip.indexOf(keyRaw) >= 0){ |             } | ||||||
|  |             if (skip.indexOf(keyRaw) >= 0) { | ||||||
|                 f.properties.repair = keyRaw |                 f.properties.repair = keyRaw | ||||||
|             } else { |             } else { | ||||||
| 
 |                 const r = keyRaw | ||||||
|                 const r = keyRaw.replace(/\/|,/g, ";").split(";").map(k => k.trim().replace(/ /g, "_").toLowerCase()) |                     .replace(/\/|,/g, ";") | ||||||
|  |                     .split(";") | ||||||
|  |                     .map((k) => k.trim().replace(/ /g, "_").toLowerCase()) | ||||||
|                 for (let key of r) { |                 for (let key of r) { | ||||||
|                     key = replace[key] ?? key |                     key = replace[key] ?? key | ||||||
| 
 | 
 | ||||||
|  | @ -177,9 +278,7 @@ export default class CleanRepair extends Script { | ||||||
| 
 | 
 | ||||||
|                     f.properties[key + ":repair"] = "yes" |                     f.properties[key + ":repair"] = "yes" | ||||||
|                     delete f.properties.repair |                     delete f.properties.repair | ||||||
| 
 |  | ||||||
|                 } |                 } | ||||||
| 
 |  | ||||||
|             } |             } | ||||||
|             if (f.properties.service === "repair") { |             if (f.properties.service === "repair") { | ||||||
|                 delete f.properties.service |                 delete f.properties.service | ||||||
|  | @ -198,34 +297,25 @@ export default class CleanRepair extends Script { | ||||||
|                 const value = f.properties[key] |                 const value = f.properties[key] | ||||||
|                 const ct = await new ChangeTagAction(id, new Tag(key, value), f.properties, { |                 const ct = await new ChangeTagAction(id, new Tag(key, value), f.properties, { | ||||||
|                     changeType: "fix", |                     changeType: "fix", | ||||||
|                     theme: "script" |                     theme: "script", | ||||||
|                 }).CreateChangeDescriptions() |                 }).CreateChangeDescriptions() | ||||||
|                 changesToMake.push(...ct) |                 changesToMake.push(...ct) | ||||||
|                 console.log(ct.map(cd => cd.tags)) |                 console.log(ct.map((cd) => cd.tags)) | ||||||
|                 if (f.properties.repair === undefined) { |                 if (f.properties.repair === undefined) { | ||||||
|                     const ct = await new ChangeTagAction(id, new Tag("repair", ""), f.properties, { |                     const ct = await new ChangeTagAction(id, new Tag("repair", ""), f.properties, { | ||||||
|                         changeType: "fix", |                         changeType: "fix", | ||||||
|                         theme: "script" |                         theme: "script", | ||||||
|                     }).CreateChangeDescriptions() |                     }).CreateChangeDescriptions() | ||||||
|                     changesToMake.push(...ct) |                     changesToMake.push(...ct) | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         const |         const changedObjects = changes.CreateChangesetObjects(changesToMake, objects) | ||||||
|             changedObjects = changes.CreateChangesetObjects(changesToMake, objects) |  | ||||||
| 
 | 
 | ||||||
|         const |         const osc = Changes.createChangesetFor("", changedObjects) | ||||||
|             osc = Changes.createChangesetFor("", changedObjects) |  | ||||||
| 
 |  | ||||||
|         writeFileSync( |  | ||||||
|             "Cleanup.osc" |  | ||||||
|             , |  | ||||||
|             osc |  | ||||||
|             , |  | ||||||
|             "utf8" |  | ||||||
|         ) |  | ||||||
| 
 | 
 | ||||||
|  |         writeFileSync("Cleanup.osc", osc, "utf8") | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -213,7 +213,7 @@ class IdThief { | ||||||
|                 continue |                 continue | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|             if(preset.tags["shop"] === "vacant") { |             if (preset.tags["shop"] === "vacant") { | ||||||
|                 console.log("Skipping 'vacant'") |                 console.log("Skipping 'vacant'") | ||||||
|                 continue |                 continue | ||||||
|             } |             } | ||||||
|  | @ -282,15 +282,15 @@ class IdThief { | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | class ReadIdPresets extends Script { | ||||||
| class ReadIdPresets extends Script{ |  | ||||||
|     constructor() { |     constructor() { | ||||||
|         super("Reads the id-tagging-schema repository and steals the presets; which will be written into 'id_presets.json'\n\nArguments: [path-to-repository] [path-to-target]\n" + |         super( | ||||||
|             "Note that default arguments are used") |             "Reads the id-tagging-schema repository and steals the presets; which will be written into 'id_presets.json'\n\nArguments: [path-to-repository] [path-to-target]\n" + | ||||||
|  |                 "Note that default arguments are used" | ||||||
|  |         ) | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     async main(args: string[]): Promise<void> { |     async main(args: string[]): Promise<void> { | ||||||
| 
 |  | ||||||
|         const targetDir = args[1] ?? "./assets/layers/id_presets/" |         const targetDir = args[1] ?? "./assets/layers/id_presets/" | ||||||
| 
 | 
 | ||||||
|         const makiThief = new MakiThief( |         const makiThief = new MakiThief( | ||||||
|  | @ -345,9 +345,7 @@ class ReadIdPresets extends Script{ | ||||||
|         ] |         ] | ||||||
|         console.log("Writing id presets to", id_presets_path) |         console.log("Writing id presets to", id_presets_path) | ||||||
|         writeFileSync(id_presets_path, JSON.stringify(idPresets, null, "  "), "utf8") |         writeFileSync(id_presets_path, JSON.stringify(idPresets, null, "  "), "utf8") | ||||||
| 
 |  | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| new ReadIdPresets().run() | new ReadIdPresets().run() | ||||||
|  |  | ||||||
|  | @ -31,7 +31,7 @@ describe("Tag optimalization", () => { | ||||||
|             const t = new And([ |             const t = new And([ | ||||||
|                 new Tag("foo", "bar"), |                 new Tag("foo", "bar"), | ||||||
|                 new Or([new Tag("x", "y"), new Tag("a", "b")]), |                 new Or([new Tag("x", "y"), new Tag("a", "b")]), | ||||||
|                 new Or([new Tag("x", "y"), new Tag("c", "d")]) |                 new Or([new Tag("x", "y"), new Tag("c", "d")]), | ||||||
|             ]) |             ]) | ||||||
|             const opt = <TagsFilter>t.optimize() |             const opt = <TagsFilter>t.optimize() | ||||||
|             expect(TagUtils.toString(opt)).toBe("foo=bar& (x=y| (a=b&c=d) )") |             expect(TagUtils.toString(opt)).toBe("foo=bar& (x=y| (a=b&c=d) )") | ||||||
|  | @ -42,7 +42,7 @@ describe("Tag optimalization", () => { | ||||||
|             const t = new And([ |             const t = new And([ | ||||||
|                 new Tag("foo", "bar"), |                 new Tag("foo", "bar"), | ||||||
|                 new Or([new RegexTag("x", "y"), new RegexTag("a", "b")]), |                 new Or([new RegexTag("x", "y"), new RegexTag("a", "b")]), | ||||||
|                 new Or([new RegexTag("x", "y"), new RegexTag("c", "d")]) |                 new Or([new RegexTag("x", "y"), new RegexTag("c", "d")]), | ||||||
|             ]) |             ]) | ||||||
|             const opt = <TagsFilter>t.optimize() |             const opt = <TagsFilter>t.optimize() | ||||||
|             expect(TagUtils.toString(opt)).toBe("foo=bar& ( (a=b&c=d) |x=y)") |             expect(TagUtils.toString(opt)).toBe("foo=bar& ( (a=b&c=d) |x=y)") | ||||||
|  | @ -53,7 +53,7 @@ describe("Tag optimalization", () => { | ||||||
|             const t = new And([ |             const t = new And([ | ||||||
|                 new Tag("foo", "bar"), |                 new Tag("foo", "bar"), | ||||||
|                 new Or([new RegexTag("x", "y"), new RegexTag("a", "b")]), |                 new Or([new RegexTag("x", "y"), new RegexTag("a", "b")]), | ||||||
|                 new Or([new RegexTag("x", "y", true), new RegexTag("c", "d")]) |                 new Or([new RegexTag("x", "y", true), new RegexTag("c", "d")]), | ||||||
|             ]) |             ]) | ||||||
|             const opt = <TagsFilter>t.optimize() |             const opt = <TagsFilter>t.optimize() | ||||||
|             expect(TagUtils.toString(opt)).toBe("foo=bar& (a=b|x=y) & (c=d|x!=y)") |             expect(TagUtils.toString(opt)).toBe("foo=bar& (a=b|x=y) & (c=d|x!=y)") | ||||||
|  | @ -86,12 +86,12 @@ describe("Tag optimalization", () => { | ||||||
|                     { |                     { | ||||||
|                         and: [ |                         and: [ | ||||||
|                             { |                             { | ||||||
|                                 or: ["X=Y", "FOO=BAR"] |                                 or: ["X=Y", "FOO=BAR"], | ||||||
|                             }, |                             }, | ||||||
|                             "bicycle=yes" |                             "bicycle=yes", | ||||||
|                         ] |                         ], | ||||||
|                     } |                     }, | ||||||
|                 ] |                 ], | ||||||
|             }) |             }) | ||||||
|             // (X=Y | FOO=BAR | (bicycle=yes & (X=Y | FOO=BAR)) )
 |             // (X=Y | FOO=BAR | (bicycle=yes & (X=Y | FOO=BAR)) )
 | ||||||
|             // This is equivalent to (X=Y | FOO=BAR)
 |             // This is equivalent to (X=Y | FOO=BAR)
 | ||||||
|  | @ -109,11 +109,11 @@ describe("Tag optimalization", () => { | ||||||
|                                     "amenity=charging_station", |                                     "amenity=charging_station", | ||||||
|                                     "disused:amenity=charging_station", |                                     "disused:amenity=charging_station", | ||||||
|                                     "planned:amenity=charging_station", |                                     "planned:amenity=charging_station", | ||||||
|                                     "construction:amenity=charging_station" |                                     "construction:amenity=charging_station", | ||||||
|                                 ] |                                 ], | ||||||
|                             }, |                             }, | ||||||
|                             "bicycle=yes" |                             "bicycle=yes", | ||||||
|                         ] |                         ], | ||||||
|                     }, |                     }, | ||||||
|                     { |                     { | ||||||
|                         and: [ |                         and: [ | ||||||
|  | @ -122,19 +122,19 @@ describe("Tag optimalization", () => { | ||||||
|                                     "amenity=charging_station", |                                     "amenity=charging_station", | ||||||
|                                     "disused:amenity=charging_station", |                                     "disused:amenity=charging_station", | ||||||
|                                     "planned:amenity=charging_station", |                                     "planned:amenity=charging_station", | ||||||
|                                     "construction:amenity=charging_station" |                                     "construction:amenity=charging_station", | ||||||
|                                 ] |                                 ], | ||||||
|                             } |                             }, | ||||||
|                         ] |                         ], | ||||||
|                     }, |                     }, | ||||||
|                     "amenity=toilets", |                     "amenity=toilets", | ||||||
|                     "amenity=bench", |                     "amenity=bench", | ||||||
|                     "leisure=picnic_table", |                     "leisure=picnic_table", | ||||||
|                     { |                     { | ||||||
|                         and: ["tower:type=observation"] |                         and: ["tower:type=observation"], | ||||||
|                     }, |                     }, | ||||||
|                     { |                     { | ||||||
|                         and: ["amenity=bicycle_repair_station"] |                         and: ["amenity=bicycle_repair_station"], | ||||||
|                     }, |                     }, | ||||||
|                     { |                     { | ||||||
|                         and: [ |                         and: [ | ||||||
|  | @ -143,16 +143,16 @@ describe("Tag optimalization", () => { | ||||||
|                                     "amenity=bicycle_rental", |                                     "amenity=bicycle_rental", | ||||||
|                                     "bicycle_rental~*", |                                     "bicycle_rental~*", | ||||||
|                                     "service:bicycle:rental=yes", |                                     "service:bicycle:rental=yes", | ||||||
|                                     "rental~.*bicycle.*" |                                     "rental~.*bicycle.*", | ||||||
|                                 ] |                                 ], | ||||||
|                             }, |                             }, | ||||||
|                             "bicycle_rental!=docking_station" |                             "bicycle_rental!=docking_station", | ||||||
|                         ] |                         ], | ||||||
|                     }, |                     }, | ||||||
|                     { |                     { | ||||||
|                         and: ["leisure=playground", "playground!=forest"] |                         and: ["leisure=playground", "playground!=forest"], | ||||||
|                     } |                     }, | ||||||
|                 ] |                 ], | ||||||
|             }) |             }) | ||||||
|             const opt = <TagsFilter>filter.optimize() |             const opt = <TagsFilter>filter.optimize() | ||||||
|             const expected = [ |             const expected = [ | ||||||
|  | @ -166,7 +166,7 @@ describe("Tag optimalization", () => { | ||||||
|                 "planned:amenity=charging_station", |                 "planned:amenity=charging_station", | ||||||
|                 "tower:type=observation", |                 "tower:type=observation", | ||||||
|                 "(amenity=bicycle_rental|service:bicycle:rental=yes|bicycle_rental~.+|rental~^(.*bicycle.*)$) &bicycle_rental!=docking_station", |                 "(amenity=bicycle_rental|service:bicycle:rental=yes|bicycle_rental~.+|rental~^(.*bicycle.*)$) &bicycle_rental!=docking_station", | ||||||
|                 "leisure=playground&playground!=forest" |                 "leisure=playground&playground!=forest", | ||||||
|             ] |             ] | ||||||
| 
 | 
 | ||||||
|             expect((<Or>opt).or.map((f) => TagUtils.toString(f))).toEqual(expected) |             expect((<Or>opt).or.map((f) => TagUtils.toString(f))).toEqual(expected) | ||||||
|  | @ -184,22 +184,16 @@ describe("Tag optimalization", () => { | ||||||
| 
 | 
 | ||||||
|         it("should optimize comparing tags", () => { |         it("should optimize comparing tags", () => { | ||||||
|             const spec = TagUtils.Tag({ |             const spec = TagUtils.Tag({ | ||||||
|                 and:[ |                 and: ["x=5", "x>5"], | ||||||
|                     "x=5", |  | ||||||
|                     "x>5" |  | ||||||
|                 ] |  | ||||||
|             }) |             }) | ||||||
|             const opt = spec.optimize() |             const opt = spec.optimize() | ||||||
|             expect(opt).to.eq(false) |             expect(opt).to.eq(false) | ||||||
|         }) |         }) | ||||||
|         it("should optimize regexes in the key", () => { |         it("should optimize regexes in the key", () => { | ||||||
|             const spec = TagUtils.Tag({ |             const spec = TagUtils.Tag({ | ||||||
|                 and: [ |                 and: ["service:bicycle:retail=yes", "service:bicycle:.+~~yes"], | ||||||
|                     "service:bicycle:retail=yes", |  | ||||||
|                     "service:bicycle:.+~~yes" |  | ||||||
|                 ] |  | ||||||
|             }) |             }) | ||||||
|             const tag = <TagsFilter> spec.optimize() |             const tag = <TagsFilter>spec.optimize() | ||||||
|             expect(tag.asJson()).to.eq("service:bicycle:retail=yes") |             expect(tag.asJson()).to.eq("service:bicycle:retail=yes") | ||||||
|         }) |         }) | ||||||
|     }) |     }) | ||||||
|  | @ -208,7 +202,7 @@ describe("Tag optimalization", () => { | ||||||
|         it("with nested And which has a common property should be dropped", () => { |         it("with nested And which has a common property should be dropped", () => { | ||||||
|             const t = new Or([ |             const t = new Or([ | ||||||
|                 new Tag("foo", "bar"), |                 new Tag("foo", "bar"), | ||||||
|                 new And([new Tag("foo", "bar"), new Tag("x", "y")]) |                 new And([new Tag("foo", "bar"), new Tag("x", "y")]), | ||||||
|             ]) |             ]) | ||||||
|             const opt = <TagsFilter>t.optimize() |             const opt = <TagsFilter>t.optimize() | ||||||
|             expect(TagUtils.toString(opt)).toBe("foo=bar") |             expect(TagUtils.toString(opt)).toBe("foo=bar") | ||||||
|  | @ -233,14 +227,14 @@ describe("Tag optimalization", () => { | ||||||
|                     and: [ |                     and: [ | ||||||
|                         "sport=climbing", |                         "sport=climbing", | ||||||
|                         { |                         { | ||||||
|                             or: ["office~*", "club~*"] |                             or: ["office~*", "club~*"], | ||||||
|                         } |                         }, | ||||||
|                     ] |                     ], | ||||||
|                 } |                 }, | ||||||
|             ] |             ], | ||||||
|         }) |         }) | ||||||
|         const gym_tags = TagUtils.Tag({ |         const gym_tags = TagUtils.Tag({ | ||||||
|             and: ["sport=climbing", "leisure=sports_centre"] |             and: ["sport=climbing", "leisure=sports_centre"], | ||||||
|         }) |         }) | ||||||
|         const other_climbing = TagUtils.Tag({ |         const other_climbing = TagUtils.Tag({ | ||||||
|             and: [ |             and: [ | ||||||
|  | @ -248,8 +242,8 @@ describe("Tag optimalization", () => { | ||||||
|                 "climbing!~route", |                 "climbing!~route", | ||||||
|                 "leisure!~sports_centre", |                 "leisure!~sports_centre", | ||||||
|                 "climbing!=route_top", |                 "climbing!=route_top", | ||||||
|                 "climbing!=route_bottom" |                 "climbing!=route_bottom", | ||||||
|             ] |             ], | ||||||
|         }) |         }) | ||||||
|         const together = new Or([club_tags, gym_tags, other_climbing]) |         const together = new Or([club_tags, gym_tags, other_climbing]) | ||||||
|         const opt = together.optimize() |         const opt = together.optimize() | ||||||
|  | @ -291,7 +285,7 @@ describe("Tag optimalization", () => { | ||||||
|                 or: [ |                 or: [ | ||||||
|                     "club=climbing", |                     "club=climbing", | ||||||
|                     { |                     { | ||||||
|                         and: ["sport=climbing", { or: ["club~*", "office~*"] }] |                         and: ["sport=climbing", { or: ["club~*", "office~*"] }], | ||||||
|                     }, |                     }, | ||||||
|                     { |                     { | ||||||
|                         and: [ |                         and: [ | ||||||
|  | @ -304,63 +298,109 @@ describe("Tag optimalization", () => { | ||||||
|                                             "climbing!~route", |                                             "climbing!~route", | ||||||
|                                             "climbing!=route_top", |                                             "climbing!=route_top", | ||||||
|                                             "climbing!=route_bottom", |                                             "climbing!=route_bottom", | ||||||
|                                             "leisure!~sports_centre" |                                             "leisure!~sports_centre", | ||||||
|                                         ] |                                         ], | ||||||
|                                     } |                                     }, | ||||||
|                                 ] |                                 ], | ||||||
|                             } |                             }, | ||||||
|                         ] |                         ], | ||||||
|                     } |                     }, | ||||||
|                 ] |                 ], | ||||||
|             }) |             }) | ||||||
|         ) |         ) | ||||||
|     }) |     }) | ||||||
| 
 | 
 | ||||||
|     it("should optimize a complicated nested case", () => { |     it("should optimize a complicated nested case", () => { | ||||||
|         const spec = { |         const spec = { | ||||||
|             "and": |             and: [ | ||||||
|                 ["service:bicycle:retail=yes", |                 "service:bicycle:retail=yes", | ||||||
|                     { |                 { | ||||||
|                         "or": [ |                     or: [ | ||||||
|                             { |                         { | ||||||
|                                 "and": [ |                             and: [ | ||||||
|                                     { "or": ["shop=outdoor", "shop=sport", "shop=diy", "shop=doityourself"] }, |                                 { | ||||||
|                                     { |                                     or: [ | ||||||
|                                         "or": ["service:bicycle:repair=yes", "shop=bicycle", |                                         "shop=outdoor", | ||||||
|                                             { |                                         "shop=sport", | ||||||
|                                                 "and": ["shop=sports", |                                         "shop=diy", | ||||||
|                                                     { "or": ["sport=bicycle", "sport=cycling", "sport="] }, |                                         "shop=doityourself", | ||||||
|                                                     "service:bicycle:retail!=no", |                                     ], | ||||||
|                                                     "service:bicycle:repair!=no"] |                                 }, | ||||||
|                                             }] |                                 { | ||||||
|                                     }] |                                     or: [ | ||||||
|                             }, { |                                         "service:bicycle:repair=yes", | ||||||
|                                 "and": |                                         "shop=bicycle", | ||||||
|                                     [ |  | ||||||
|                                         { |                                         { | ||||||
|                                             "or": |                                             and: [ | ||||||
|                                                 ["shop=outdoor", "shop=sport", "shop=diy", "shop=doityourself"] |                                                 "shop=sports", | ||||||
|                                         }, |  | ||||||
|                                         { |  | ||||||
|                                             "or": ["service:bicycle:repair=yes", "shop=bicycle", |  | ||||||
|                                                 { |                                                 { | ||||||
|                                                     "and": ["shop=sports", |                                                     or: [ | ||||||
|                                                         { "or": ["sport=bicycle", "sport=cycling", "sport="] }, |                                                         "sport=bicycle", | ||||||
|                                                         "service:bicycle:retail!=no", "service:bicycle:repair!=no"] |                                                         "sport=cycling", | ||||||
|                                                 }] |                                                         "sport=", | ||||||
|                                         }] |                                                     ], | ||||||
|                             }, { |                                                 }, | ||||||
|                                 "and": |                                                 "service:bicycle:retail!=no", | ||||||
|                                     [{ |                                                 "service:bicycle:repair!=no", | ||||||
|                                         "or": |                                             ], | ||||||
|                                             ["craft=shoe_repair", "craft=key_cutter", "shop~.+"] |                                         }, | ||||||
|                                     }, |                                     ], | ||||||
|                                         { "or": ["shop=outdoor", "shop=sport", "shop=diy", "shop=doityourself"] }, |                                 }, | ||||||
|                                         "shop!=mall"] |                             ], | ||||||
|                             }, |                         }, | ||||||
|                             "service:bicycle:retail~.+", |                         { | ||||||
|                             "service:bicycle:retail~.+"] |                             and: [ | ||||||
|                     }] |                                 { | ||||||
|  |                                     or: [ | ||||||
|  |                                         "shop=outdoor", | ||||||
|  |                                         "shop=sport", | ||||||
|  |                                         "shop=diy", | ||||||
|  |                                         "shop=doityourself", | ||||||
|  |                                     ], | ||||||
|  |                                 }, | ||||||
|  |                                 { | ||||||
|  |                                     or: [ | ||||||
|  |                                         "service:bicycle:repair=yes", | ||||||
|  |                                         "shop=bicycle", | ||||||
|  |                                         { | ||||||
|  |                                             and: [ | ||||||
|  |                                                 "shop=sports", | ||||||
|  |                                                 { | ||||||
|  |                                                     or: [ | ||||||
|  |                                                         "sport=bicycle", | ||||||
|  |                                                         "sport=cycling", | ||||||
|  |                                                         "sport=", | ||||||
|  |                                                     ], | ||||||
|  |                                                 }, | ||||||
|  |                                                 "service:bicycle:retail!=no", | ||||||
|  |                                                 "service:bicycle:repair!=no", | ||||||
|  |                                             ], | ||||||
|  |                                         }, | ||||||
|  |                                     ], | ||||||
|  |                                 }, | ||||||
|  |                             ], | ||||||
|  |                         }, | ||||||
|  |                         { | ||||||
|  |                             and: [ | ||||||
|  |                                 { | ||||||
|  |                                     or: ["craft=shoe_repair", "craft=key_cutter", "shop~.+"], | ||||||
|  |                                 }, | ||||||
|  |                                 { | ||||||
|  |                                     or: [ | ||||||
|  |                                         "shop=outdoor", | ||||||
|  |                                         "shop=sport", | ||||||
|  |                                         "shop=diy", | ||||||
|  |                                         "shop=doityourself", | ||||||
|  |                                     ], | ||||||
|  |                                 }, | ||||||
|  |                                 "shop!=mall", | ||||||
|  |                             ], | ||||||
|  |                         }, | ||||||
|  |                         "service:bicycle:retail~.+", | ||||||
|  |                         "service:bicycle:retail~.+", | ||||||
|  |                     ], | ||||||
|  |                 }, | ||||||
|  |             ], | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         const tag = TagUtils.Tag(spec) |         const tag = TagUtils.Tag(spec) | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue