Skip to content

Commit

Permalink
Make valid language tag regex case sensitive (#1117)
Browse files Browse the repository at this point in the history
  • Loading branch information
msbarry authored Nov 30, 2024
1 parent 3d14afd commit c2c8cbe
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 23 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ public class LanguageUtils {
// See https://wiki.openstreetmap.org/wiki/Multilingual_names
public static final Predicate<String> VALID_NAME_TAGS =
Pattern
.compile("^name:[a-z]{2,3}(-[a-z]{4})?([-_](x-)?[a-z]{2,})?(-([a-z]{2}|\\d{3}))?$", Pattern.CASE_INSENSITIVE)
.compile("^name:[a-z]{2,3}(-[A-Z][a-z]{3})?([-_](x-)?[a-z]{2,})?(-([A-Z]{2}|\\d{3}))?$")
.asMatchPredicate();
// See https://github.com/onthegomap/planetiler/issues/86
// Match strings that only contain latin characters.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
package com.onthegomap.planetiler.util;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;

import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;
import org.junit.jupiter.params.provider.ValueSource;

class LanguageUtilsTest {

Expand All @@ -26,28 +29,41 @@ void testRemoveNonLatin(String in, String out) {
}

@ParameterizedTest
@CsvSource(value = {
"name:es, true",
"name:en-US, true",
"name:fr-x-gallo, true",
"name:ko-Latn, true",
"name:be-tarask, true",
"name:ja_rm, true",
"name:ja_kana, true",
"name:vls, true",
"name:zh-hant-CN, true",
"name:zh_pinyin, true",
"name:zh_zhuyin, true",
"name:zh-Latn-tongyong, true",
"name:zh-Latn-pinyin, true",
"name:zh-Latn-wadegiles, true",
"name:yue-Latn-jyutping, true",
"nombre, false",
"name:, false",
"name:xxxxx, false",
}, nullValues = "null")
void testIsValidOsmNameTag(String in, boolean out) {
assertEquals(out, LanguageUtils.isValidOsmNameTag(in));
@ValueSource(strings = {
"name:es",
"name:en-US",
"name:en-001",
"name:fr-x-gallo",
"name:ko-Latn",
"name:be-tarask",
"name:ja_rm",
"name:ja_kana",
"name:vls",
"name:zh-hant-CN",
"name:zh_pinyin",
"name:zh_zhuyin",
"name:zh-Latn-tongyong",
"name:zh-Latn-pinyin",
"name:zh-Latn-wadegiles",
"name:yue-Latn-jyutping",
"name:tec",
"name:be-tarask",
"name:nan-Latn-pehoeji",
"name:zh-Latn-pinyin",
})
void testIsValidOsmNameTag(String in) {
assertTrue(LanguageUtils.isValidOsmNameTag(in));
}

@ParameterizedTest
@ValueSource(strings = {
"nombre",
"name:",
"name:xxxxx",
"name:TEC",
})
void testIsNotValidOsmNameTag(String in) {
assertFalse(LanguageUtils.isValidOsmNameTag(in));
}

}

0 comments on commit c2c8cbe

Please sign in to comment.