From 2ec369f259db20ba8441748d21c17ea575a0c584 Mon Sep 17 00:00:00 2001 From: Pieter Vander Vennet Date: Fri, 31 Jan 2025 15:16:42 +0100 Subject: [PATCH] Themes: fix generation of automatic filters with multiAnswer, add test --- src/Models/ThemeConfig/Conversion/ExpandFilter.ts | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/Models/ThemeConfig/Conversion/ExpandFilter.ts b/src/Models/ThemeConfig/Conversion/ExpandFilter.ts index 9542ea9b0f..43bc4735c0 100644 --- a/src/Models/ThemeConfig/Conversion/ExpandFilter.ts +++ b/src/Models/ThemeConfig/Conversion/ExpandFilter.ts @@ -132,6 +132,16 @@ export class ExpandFilter extends DesugaringStep { return filters } + /** + * + * import FilterConfig from "../FilterConfig" + * + * // A multi-answer tagRendering should match any subkey + * const tr = {id: "test", multiAnswer: true, mappings:[{if: "x=a", then: "A"}, {if: "x=b", then:"B"}]} + * const filter = ExpandFilter.buildFilterFromTagRendering(tr, ConversionContext.test("ExpandFilter")) + * const f = new FilterConfig(filter, "test") + * f.options[1].osmTags.matchesProperties({x:"a;b"}) // => true + */ public static buildFilterFromTagRendering( tr: TagRenderingConfigJson, context: ConversionContext @@ -153,7 +163,7 @@ export class ExpandFilter extends DesugaringStep { if (qtr.multiAnswer && osmTags instanceof Tag) { osmTags = new RegexTag( osmTags.key, - new RegExp("^(.+;)?" + osmTags.value + "(;.+)$", "is") + new RegExp("^(.+;)?" + osmTags.value + "(;.+)?$", "is") ) } if (mapping.alsoShowIf) {