org.antlr.v4.tool.templates.unicodedata.st Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of virtdata-lib-realer Show documentation
Show all versions of virtdata-lib-realer Show documentation
With inspiration from other libraries
unicodedata(propertyCodePointRanges, propertyAliases) ::= <<
package org.antlr.v4.unicode;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import org.antlr.v4.runtime.misc.IntervalSet;
import org.antlr.v4.runtime.misc.Interval;
/**
* Code-generated utility class mapping Unicode properties to Unicode code point ranges.
*/
public abstract class UnicodeData {
private static final Map\ propertyCodePointRanges = new HashMap\<\>();
private static final Map\ propertyAliases = new HashMap\<\>();
// Work around Java 64k bytecode method limit by splitting up static
// initialization into one method per Unicode property
"
static private void addProperty() {
List\ intervals = Arrays.asList(
, )}; separator=",\n">
);
IntervalSet codePointRanges = new IntervalSet(intervals);
codePointRanges.setReadonly(true);
propertyCodePointRanges.put("".toLowerCase(Locale.US), codePointRanges);
\}}; separator="\n\n">
// Property aliases
static private void addPropertyAliases() {
".toLowerCase(Locale.US), "".toLowerCase(Locale.US)); }; separator="\n">
}
// Put it all together
static {
(); }; separator="\n">
addPropertyAliases();
}
private static String normalize(String propertyCodeOrAlias) {
return propertyCodeOrAlias.toLowerCase(Locale.US).replace('-', '_');
}
/**
* Given a Unicode property (general category code, binary property name, or script name),
* returns the {@link IntervalSet} of Unicode code point ranges which have that property.
*/
public static IntervalSet getPropertyCodePoints(String propertyCodeOrAlias) {
String normalizedPropertyCodeOrAlias = normalize(propertyCodeOrAlias);
IntervalSet result = propertyCodePointRanges.get(normalizedPropertyCodeOrAlias);
if (result == null) {
String propertyCode = propertyAliases.get(normalizedPropertyCodeOrAlias);
result = propertyCodePointRanges.get(propertyCode);
}
return result;
}
}
>>
© 2015 - 2025 Weber Informatics LLC | Privacy Policy