From c3b3a47789025be820f68ad79fd73dfe88ec8b0c Mon Sep 17 00:00:00 2001 From: Norbert Kwizera Date: Wed, 3 May 2023 11:23:00 +0200 Subject: [PATCH] Support hyphen in locations name as one word --- flows/environment.go | 3 ++- flows/routers/cases/tests_test.go | 7 +++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/flows/environment.go b/flows/environment.go index 6a10cc85a..b431c3931 100644 --- a/flows/environment.go +++ b/flows/environment.go @@ -58,7 +58,8 @@ func (r *assetLocationResolver) FindLocationsFuzzy(text string, level envs.Locat } // try on each tokenized word - words := regexp.MustCompile(`[\s\p{P}]+`).Split(text, -1) + re := regexp.MustCompile(`[\p{L}\d]+(-[\p{L}\d]+)*`) + words := re.FindAllString(text, -1) for _, word := range words { if locations := r.FindLocations(word, level, parent); len(locations) > 0 { return locations diff --git a/flows/routers/cases/tests_test.go b/flows/routers/cases/tests_test.go index d072f735a..b2101695e 100644 --- a/flows/routers/cases/tests_test.go +++ b/flows/routers/cases/tests_test.go @@ -61,6 +61,11 @@ var locationHierarchyJSON = `{ "aliases": ["Q.C", "Le Québec", "Quebec", "Que,", "Que", "Qc", "Québec"], "children": [] }, + { + "name": "Île-de-France", + "aliases": [], + "children": [] + }, { "name": "Paktika", "aliases": ["Janikhel", "Terwa", "Yahyakhel", "Yusufkhel", "\u067e\u06a9\u062a\u06cc\u06a9\u0627", "\u062a\u0631\u0648\u0648", "\u06cc\u062d\u06cc\u06cc \u062e\u06cc\u0644", "\u06cc\u0648\u0633\u0641 \u062e\u06cc\u0644"], @@ -300,6 +305,8 @@ var testTests = []struct { {"has_state", []types.XValue{xs("Québec")}, result(xs("Rwanda > Québec"))}, {"has_state", []types.XValue{xs("Je suis dans la province du Québec")}, result(xs("Rwanda > Québec"))}, + {"has_state", []types.XValue{xs("Je suis dans la province de l'Île-de-France")}, result(xs("Rwanda > Île-de-France"))}, + {"has_state", []types.XValue{xs("kigali city")}, result(xs("Rwanda > Kigali City"))}, {"has_state", []types.XValue{xs("¡Kigali!")}, result(xs("Rwanda > Kigali City"))},