Better handling of image detection when running from ts-node; add some tests
This commit is contained in:
parent
eb1dfe84da
commit
3e75921754
4 changed files with 42 additions and 12 deletions
|
@ -214,16 +214,9 @@ Park icon via http://www.onlinewebfonts.com/icon/425974, CC BY 3.0 (@sterankofra
|
|||
|
||||
Forest icon via https://www.onlinewebfonts.com/icon/498112, CC BY
|
||||
|
||||
Statistics icon via https://www.onlinewebfonts.com/icon/197818
|
||||
|
||||
Shower icon (used in 'bike_cleaning.svg'):
|
||||
https://commons.wikimedia.org/wiki/File:Shower_symbol.svg
|
||||
|
||||
Bench icons from StreetComplete: https://github.com/westnordost/StreetComplete/tree/v25.0-beta1/res/graphics/quest%20icons, GPLv3.0
|
||||
|
||||
|
||||
Urinal icon: https://thenounproject.com/term/urinal/1307984/
|
||||
|
||||
24/7 icon: https://www.vecteezy.com/vector-art/1394992-24-7-service-and-support-icon-set
|
||||
|
||||
Translation-icon: https://commons.wikimedia.org/wiki/File:OOjs_UI_icon_language-ltr.svg
|
|
@ -131,6 +131,16 @@ export class Translation extends UIElement {
|
|||
htmlElement.innerHTML = render
|
||||
const images = Array.from(htmlElement.getElementsByTagName("img")).map(img => img.src)
|
||||
allIcons.push(...images)
|
||||
} else {
|
||||
// We are running this in ts-node (~= nodejs), and can not access document
|
||||
// So, we fallback to simple regex
|
||||
const matches = render.match(/<img[^>]+>/g)
|
||||
if (matches != null) {
|
||||
const sources = matches.map(img => img.match(/src=("[^"]+"|'[^']+'|[^/ ]+)/))
|
||||
.filter(match => match != null)
|
||||
.map(match => match[1].trim().replace(/^['"]/, '').replace(/['"]$/, ''));
|
||||
allIcons.push(...sources)
|
||||
}
|
||||
}
|
||||
}
|
||||
return allIcons.filter(icon => icon != undefined)
|
||||
|
|
|
@ -18,17 +18,39 @@ import {And} from "../Logic/Tags/And";
|
|||
import {ImageSearcher} from "../Logic/Actors/ImageSearcher";
|
||||
import {AllKnownLayouts} from "../Customizations/AllKnownLayouts";
|
||||
import AllKnownLayers from "../Customizations/AllKnownLayers";
|
||||
import LayerConfig from "../Customizations/JSON/LayerConfig";
|
||||
|
||||
|
||||
new T("ImageAttribution Tests", [
|
||||
[
|
||||
"Should find all the images",
|
||||
() => {
|
||||
const pumps = AllKnownLayers.sharedLayers["bike_repair_station"]
|
||||
const expected = "./assets/layers/bike_repair_station/pump_example_manual.jpg"
|
||||
const pumps: LayerConfig = AllKnownLayers.sharedLayers["bike_repair_station"]
|
||||
const images = pumps.ExtractImages();
|
||||
const expectedValues = ['./assets/layers/bike_repair_station/repair_station.svg',
|
||||
'./assets/layers/bike_repair_station/repair_station_pump.svg',
|
||||
'./assets/layers/bike_repair_station/broken_pump_2.svg',
|
||||
'./assets/layers/bike_repair_station/pump.svg',
|
||||
'./assets/themes/cyclofix/fietsambassade_gent_logo_small.svg',
|
||||
'./assets/layers/bike_repair_station/pump_example_manual.jpg',
|
||||
'./assets/layers/bike_repair_station/pump_example.png',
|
||||
'./assets/layers/bike_repair_station/pump_example_round.jpg',
|
||||
'./assets/layers/bike_repair_station/repair_station_example.jpg']
|
||||
for (const expected of expectedValues) {
|
||||
T.isTrue(images.has(expected), expected + " not found")
|
||||
}
|
||||
}
|
||||
],
|
||||
[
|
||||
"Test image discovery regex",
|
||||
() => {
|
||||
const tr = new Translation({en: "XYZ <img src='a.svg'/> XYZ <img src=\"some image.svg\"></img> XYZ <img src=b.svg/>"})
|
||||
const images = new Set<string>(tr.ExtractImages(false));
|
||||
equal(3, images.size)
|
||||
T.isTrue(images.has("a.svg"), "a.svg not found")
|
||||
T.isTrue(images.has("b.svg"), "b.svg not found")
|
||||
T.isTrue(images.has("some image.svg"), "some image.svg not found")
|
||||
|
||||
equal(images.length, 5, "The pump example was not found")
|
||||
}
|
||||
]
|
||||
|
||||
|
|
|
@ -25,4 +25,9 @@ export default class T {
|
|||
}
|
||||
}
|
||||
|
||||
static isTrue(b: boolean, msg: string) {
|
||||
if(!b){
|
||||
throw "Expected true, but got false: "+msg
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue