com.ibm.icu.message2.TextSelectorFactory Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of icu4j Show documentation
Show all versions of icu4j Show documentation
International Component for Unicode for Java (ICU4J) is a mature, widely used Java library
providing Unicode and Globalization support
The newest version!
// © 2022 and later: Unicode, Inc. and others.
// License & terms of use: https://www.unicode.org/copyright.html
package com.ibm.icu.message2;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Objects;
/**
* Creates a {@link Selector} doing literal selection, similar to {exp, select}
* in {@link com.ibm.icu.text.MessageFormat}.
*/
class TextSelectorFactory implements SelectorFactory {
/**
* {@inheritDoc}
*/
@Override
public Selector createSelector(Locale locale, Map fixedOptions) {
return new TextSelector();
}
private static class TextSelector implements Selector {
/**
* {@inheritDoc}
*/
@Override
public List matches(
Object value, List keys, Map variableOptions) {
List result = new ArrayList<>();
if (value == null) {
return result;
}
for (String key : keys) {
if (matches(value, key)) {
result.add(key);
}
}
result.sort(String::compareTo);
return result;
}
@SuppressWarnings("static-method")
private boolean matches(Object value, String key) {
if ("*".equals(key)) {
return true;
}
return key.equals(Objects.toString(value));
}
}
}