You can start a new release with the /props folder. Here's how.
Copy old folders into new, for any that don't exist, eg.
- unicodetools/data/ucd/10.0.0-Update => 11.0.0-Update
- unicodetools/data/security/10.0.0 => 11.0.0
- unicodetools/data/idna/10.0.0 => 11.0.0
- unicodetools/data/emoji/10.0.0 => 11.0.0
Update the properties and values to add new aliases. You will always add a new Age value, and new Blocks.
/unicodetools/data/ucd/11.0.0-Update/PropertyValueAliases.txt
Look at https://www.unicode.org/reports/tr38/proposed.html to see if there are more properties there. These take modifying a number of files in /unicodetools/org/unicode/props/GenerateEnums.java. Here is an example:
ExtraPropertyAliases.txt
// add the property with the short(!) value having an additional "cj"
cjkJinmeiyoKanji ; kJinmeiyoKanji
IndexPropertyRegex.txt
// look at http://www.unicode.org/reports/tr38/proposed.html#kJinmeiyoKanji
// if Delimiter is not N/A, use MULTI_VALUED; then copy in the regex as the 3rd field
kJinmeiyoKanji ; MULTI_VALUED. ; (20[0-9]{2})(:U\+2?[0-9A-F]{4})?
IndexUnicodeProperties.txt
// Use the category in http://www.unicode.org/reports/tr38/proposed.html#kJinmeiyoKanji to get the file.
Unihan_OtherMappings ; kJinmeiyoKanji
IndexPropertyRegexRevised.txt // skip this, in progress
Multivalued.txt // skip this, old
Run /unicodetools/org/unicode/props/GenerateEnums.java, which rewrites
- /unicodetools/org/unicode/props/UcdProperty.java
- /unicodetools/org/unicode/props/UcdPropertyValues.java
Check diffs.
Delete Generated/BIN/11.0.0.0 (you have to do this as you are bootstrapping, if you have to make changes)
Run /unicodetools/org/unicode/propstest/ListProps.java
It will list properties, like:
➕ Numeric_Value Type: Numeric Status: Normative Card: Singleton DefVal: NaN Scope: Numeric Origin: UCD Values: [-1/2, 0, 1/160, 1/40, 3/80, 1/20, 1/16, 1/12, 1/10, 1/9, 1/8, 1/7, 3/20, 1/6, 3/16, 1/5, 1/4, 1/3, 3/8, 2/5, 5/12, 1/2, 7/12], …
➕ kAccountingNumeric Type: Numeric Status: Informative Card: Singleton DefVal: NaN Scope: Numeric Origin: UCD Values: [1000, 5, 100, 3, 1, 2, 10, 8, 7, 9, 4, 10000, 6, NaN]
➕ kOtherNumeric Type: Numeric Status: Informative Card: Singleton DefVal: NaN Scope: Numeric Origin: UCD Values: [5, 2, 7, 4, 10, 3, 20, 30, 40, 1, 9, 6, NaN]
➕ kPrimaryNumeric Type: Numeric Status: Informative Card: Singleton DefVal: NaN Scope: Numeric Origin: UCD Values: [1, 7, 10000, 3, 9, 2, 5, 100000000, 1000000000000, 8, 6, 10, 1000, 4, 100, 0, NaN]
Run /unicodetools/org/unicode/propstest/CheckProperties.java to see what changed and sanity check.
Fix any failures, such as:
Exception in thread "main" com.ibm.icu.util.ICUException: kBigFive(/Users/markdavis/Documents/workspace/unicodetools/data/ucd/11.0.0-Update/Unihan/Unihan_OtherMappings.txt)
at org.unicode.props.IndexUnicodeProperties.load(IndexUnicodeProperties.java:411)
at org.unicode.propstest.ListProps.main(ListProps.java:75)
Caused by: java.lang.IllegalArgumentException: [U+3447, kTGH, 2013:6602]
at org.unicode.props.PropertyParsingInfo.parseSourceFile(PropertyParsingInfo.java:490)
at org.unicode.props.IndexUnicodeProperties.load(IndexUnicodeProperties.java:408)
... 1 more
Caused by: java.lang.NullPointerException
at org.unicode.props.PropertyParsingInfo.parseSourceFile(PropertyParsingInfo.java:488)
... 2 more