Fix: fix sauna theme

This commit is contained in:
Pieter Vander Vennet 2025-07-03 01:47:22 +02:00
parent 01ac1d0944
commit ccbbba5628
3 changed files with 115 additions and 88 deletions

View file

@ -30,90 +30,79 @@
"images",
"reviews",
{
"builtin": "toilet_at_amenity.toilet-access",
"override": {
"condition": "leisure!=water_park",
"question": {
"en": "Is this sauna publicly accessible?",
"de": "Ist die Sauna öffentlich zugänglich?"
},
"render": {
"en": "Access is {sauna:access}",
"de": "Zugang ist {sauna:access}",
"fr": "{sauna:access}",
"nl": "{sauna:access}",
"it": "{sauna:access}",
"es": "{sauna:access}",
"da": "{sauna:access}",
"ca": "{sauna:access}",
"cs": "{sauna:access}",
"sl": "{sauna:access}",
"uk": "{sauna:access}"
},
"freeform": {
"key": "sauna:access"
},
"mappings": [
{
"if": "sauna:access=yes",
"then": {
"en": "Public access",
"de": "Der Zugang ist öffentlich",
"fr": "Accès publique",
"nl": "Publiek toegankelijk",
"it": "Accesso pubblico",
"ru": "Свободный доступ",
"es": "Acceso público",
"da": "Offentlig adgang",
"ca": "Accés públic",
"cs": "Veřejný přístup",
"sl": "Javno dostopno"
}
},
{
"if": "sauna:access=customers",
"then": {
"en": "Only access to customers of the amenity",
"de": "Nur Zugang für Kunden der Einrichtung",
"nl": "Enkel toegankelijk voor klanten van de voorziening",
"fr": "Accessibles uniquement au clients du lieu",
"ca": "Només accessible a clients de l'instal·lació",
"cs": "Přístup pouze zákazníkům zařízení občanské vybavenosti",
"sl": "Samo za stranke lokala",
"es": "Solo acceso para clientes del servicio"
}
},
{
"if": "sauna:access=no",
"then": {
"en": "Not accessible, even for customers of the amenity",
"de": "Nicht zugänglich, auch nicht für Kunden der Einrichtung",
"nl": "Niet toegankelijk, ook niet voor klanten van de voorziening",
"fr": "Non accessibles, même pour les clients du lieu",
"ca": "No accessible, inclús per als clients de la instal·lació",
"cs": "Není přístupný, a to ani pro zákazníky občanské vybavenosti",
"sl": "Ni dostopno niti za stranke lokala",
"es": "Inaccesible, incluso para clientes del servicio"
}
},
{
"if": "sauna:access=public",
"then": {
"en": "Public access",
"de": "Öffentlicher Zugang",
"fr": "Accès publique",
"nl": "Publiek toegankelijk",
"it": "Accesso pubblico",
"ru": "Свободный доступ",
"es": "Acceso público",
"da": "Offentlig adgang",
"ca": "Accés públic",
"cs": "Veřejný přístup"
},
"hideInAnswer": true
"id": "sauna_access",
"condition": "leisure!=water_park",
"question": {
"en": "Is this sauna publicly accessible?",
"de": "Ist die Sauna öffentlich zugänglich?"
},
"render": {
"en": "Access is {sauna:access}",
"de": "Zugang ist {sauna:access}"
},
"freeform": {
"key": "sauna:access"
},
"mappings": [
{
"if": "sauna:access=yes",
"then": {
"en": "Public access",
"de": "Der Zugang ist öffentlich",
"fr": "Accès publique",
"nl": "Publiek toegankelijk",
"it": "Accesso pubblico",
"ru": "Свободный доступ",
"es": "Acceso público",
"da": "Offentlig adgang",
"ca": "Accés públic",
"cs": "Veřejný přístup",
"sl": "Javno dostopno"
}
]
}
},
{
"if": "sauna:access=customers",
"then": {
"en": "Only access to customers of the amenity",
"de": "Nur Zugang für Kunden der Einrichtung",
"nl": "Enkel toegankelijk voor klanten van de voorziening",
"fr": "Accessibles uniquement au clients du lieu",
"ca": "Només accessible a clients de l'instal·lació",
"cs": "Přístup pouze zákazníkům zařízení občanské vybavenosti",
"sl": "Samo za stranke lokala",
"es": "Solo acceso para clientes del servicio"
}
},
{
"if": "sauna:access=no",
"then": {
"en": "Not accessible, even for customers of the amenity",
"de": "Nicht zugänglich, auch nicht für Kunden der Einrichtung",
"nl": "Niet toegankelijk, ook niet voor klanten van de voorziening",
"fr": "Non accessibles, même pour les clients du lieu",
"ca": "No accessible, inclús per als clients de la instal·lació",
"cs": "Není přístupný, a to ani pro zákazníky občanské vybavenosti",
"sl": "Ni dostopno niti za stranke lokala",
"es": "Inaccesible, incluso para clientes del servicio"
}
},
{
"if": "sauna:access=public",
"then": {
"en": "Public access",
"de": "Öffentlicher Zugang",
"fr": "Accès publique",
"nl": "Publiek toegankelijk",
"it": "Accesso pubblico",
"ru": "Свободный доступ",
"es": "Acceso público",
"da": "Offentlig adgang",
"ca": "Accés públic",
"cs": "Veřejný přístup"
},
"hideInAnswer": true
}
]
},
"contact",
"fixme"

View file

@ -6,8 +6,8 @@
"en": "Sauna"
},
"layers": [
"./assets/layers/sauna/sauna.json",
"./assets/layers/sauna/sauna_at_leisure.json"
"sauna",
"sauna_at_leisure"
],
"description": {
"en": "Sauna"

View file

@ -6,6 +6,7 @@ import {
MappingConfigJson,
QuestionableTagRenderingConfigJson,
} from "../Json/QuestionableTagRenderingConfigJson"
import { Utils } from "../../../Utils"
export default class AddPrefixToTagRenderingConfig extends DesugaringStep<QuestionableTagRenderingConfigJson> {
private readonly _prefix: string
@ -18,6 +19,40 @@ export default class AddPrefixToTagRenderingConfig extends DesugaringStep<Questi
this._prefix = prefix
}
/**
*
* new AddPrefixToTagRenderingConfig("PREFIX").rewriteArguments("Some argument with a {key}") // => "Some argument with a {PREFIX:key}"
*
* // Don't rewrite metatags
* new AddPrefixToTagRenderingConfig("PREFIX").rewriteArguments("Some argument with a {_calculated_key}") // => "Some argument with a {_calculated_key}"
*
*/
private rewriteArguments(txt: string) {
const regex = /(.*?){([^}]*)}(.*)/s
let match = txt.match(regex)
if (!match) {
return txt
}
let result = ""
while (match) {
const [_, normal, key, leftover] = match
if (key.startsWith("_")) {
result += normal + "{" + key + "}"
} else {
result += normal + "{" + this._prefix + ":" + key + "}"
}
match = leftover.match(regex)
if (!match) {
result += leftover
}
}
if(txt !== result){
console.log(">>> Rewritten", txt, "into", result)
}
return result
}
/**
*
* const edit = new AddPrefixToTagRenderingConfig("PREFIX")
@ -29,6 +64,9 @@ export default class AddPrefixToTagRenderingConfig extends DesugaringStep<Questi
*
* // Should prefix the default key in a special visualisation
* new AddPrefixToTagRenderingConfig("PREFIX").updateString("{opening_hours_table()}") // => "{opening_hours_table(PREFIX:opening_hours,,)}"
*
* // Should prefix links, e.g. for 'phone'
* new AddPrefixToTagRenderingConfig("PREFIX").updateString("{link({phone},tel:{phone},,,,)}") // => "{link({PREFIX:phone},tel:{PREFIX:phone},,,,)}"
*/
private updateString(str: string): string {
const parsed = SpecialVisualizations.constructSpecification(str)
@ -45,7 +83,7 @@ export default class AddPrefixToTagRenderingConfig extends DesugaringStep<Questi
if (argDoc.type === "key") {
newArgs.push(this._prefix + ":" + (argV ?? argDoc.defaultValue ?? ""))
} else {
newArgs.push(argV ?? "")
newArgs.push(this.rewriteArguments(argV ?? ""))
}
}
fixedSpec.push("{" + spec.func.funcName + "(" + newArgs.join(",") + ")}")