Make valid language tag regex case sensitive (#1117)

pull/1121/head
Michael Barry 2024-11-30 11:36:31 -05:00 zatwierdzone przez GitHub
rodzic 3d14afdd6b
commit c2c8cbe6ef
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: B5690EEEBB952194
2 zmienionych plików z 39 dodań i 23 usunięć

Wyświetl plik

@ -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.

Wyświetl plik

@ -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 {
@ -26,28 +29,41 @@ class LanguageUtilsTest {
}
@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));
}
}