in java/de/jflex/ucd_generator/ucd/UnicodeData.java [137:190]
private ImmutableSortedMap<String, String> computeUsedPropertyValueAliases() {
ImmutableSortedMap.Builder<String, String> usedPropertyValueAliases =
ImmutableSortedMap.naturalOrder();
for (String binaryProperty : usedBinaryProperties()) {
for (String nameAlias : getPropertyAliases(binaryProperty)) {
if (!Objects.equals(nameAlias, binaryProperty)) {
usedPropertyValueAliases.put(nameAlias, binaryProperty);
}
}
}
ImmutableMultimap<String, String> usedEnumProperties =
ImmutableMultimap.<String, String>builder()
.putAll(usedEnumeratedProperties())
.put(NORMALIZED_GENERAL_CATEGORY, "lc")
.build();
for (String propName : usedEnumProperties.keySet()) {
for (String propValue : usedEnumProperties.get(propName)) {
String canonicalValue = propName + '=' + propValue;
Collection<String> propertyValueAliases = getPropertyValueAliases(propName, propValue);
// Add value-only aliases for General Category and Script properties.
if (Objects.equals(propName, NORMALIZED_SCRIPT)
|| Objects.equals(propName, NORMALIZED_GENERAL_CATEGORY)) {
canonicalValue = propValue;
for (String valueAlias : propertyValueAliases) {
if (!Objects.equals(valueAlias, propValue)) {
usedPropertyValueAliases.put(valueAlias, propValue);
}
}
}
for (String nameAlias : getPropertyAliases(propName)) {
if (nameAlias.equals("blk") && version.equals(Versions.VERSION_3_2)) {
// TODO(regisd) Can we remove this hack?
// Ugly hack https://github.com/jflex-de/jflex/pull/828#issuecomment-749690037
continue;
}
for (String valueAlias : propertyValueAliases) {
// Both property names and values have self-aliases; when generating
// all possible alias combinations, exclude the one that is the same
// as the full property name + full property value, unless the
// property is General Category or Script.
if (Objects.equals(propName, NORMALIZED_SCRIPT)
|| Objects.equals(propName, NORMALIZED_GENERAL_CATEGORY)
|| !(Objects.equals(nameAlias, propName)
&& Objects.equals(valueAlias, propValue))) {
String alias = nameAlias + '=' + valueAlias;
usedPropertyValueAliases.put(alias, canonicalValue);
}
}
}
}
}
return usedPropertyValueAliases.build();
}