/** * @param string The output of the toString() method. * @return either a new or possibly a cached (immutable) instance. */ @NotNull public static LdLocale fromString(@NotNull String string) { if (string==null || string.isEmpty()) throw new IllegalArgumentException("At least a language is required!"); String language = null; Optional<String> script = null; Optional<String> region = null; List<String> strings = Splitter.on('-').splitToList(string); for (int i=0; i<strings.size(); i++) { String chunk = strings.get(i); if (i==0) { language = assignLang(chunk); } else { if (script == null && region == null && looksLikeScriptCode(chunk)) { script = Optional.of(chunk); } else if (region==null && (looksLikeGeoCode3166_1(chunk) || looksLikeGeoCodeNumeric(chunk))) { region = Optional.of(chunk); } else { throw new IllegalArgumentException("Unknown part: >>>"+chunk+"<<<!"); } } } assert language != null; if (script==null) script = Optional.absent(); if (region==null) region = Optional.absent(); return new LdLocale(language, script, region); }
/** * @param string The output of the toString() method. * @return either a new or possibly a cached (immutable) instance. */ @NotNull public static LdLocale fromString(@NotNull String string) { if (string==null || string.isEmpty()) throw new IllegalArgumentException("At least a language is required!"); String language = null; Optional<String> script = null; Optional<String> region = null; List<String> strings = splitToList('-', string); for (int i=0; i<strings.size(); i++) { String chunk = strings.get(i); if (i==0) { language = assignLang(chunk); } else { if (script == null && region == null && looksLikeScriptCode(chunk)) { script = Optional.of(chunk); } else if (region==null && (looksLikeGeoCode3166_1(chunk) || looksLikeGeoCodeNumeric(chunk))) { region = Optional.of(chunk); } else { throw new IllegalArgumentException("Unknown part: >>>"+chunk+"<<<!"); } } } assert language != null; if (script==null) script = Optional.absent(); if (region==null) region = Optional.absent(); return new LdLocale(language, script, region); }