foray-commit Mailing List for FOray
Modular XSL-FO Implementation for Java.
Status: Alpha
Brought to you by:
victormote
You can subscribe to this list here.
| 2006 |
Jan
|
Feb
|
Mar
(139) |
Apr
(98) |
May
(250) |
Jun
(394) |
Jul
(84) |
Aug
(13) |
Sep
(420) |
Oct
(186) |
Nov
(1) |
Dec
(3) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2007 |
Jan
(108) |
Feb
(202) |
Mar
(291) |
Apr
(247) |
May
(374) |
Jun
(227) |
Jul
(231) |
Aug
(60) |
Sep
(31) |
Oct
(45) |
Nov
(18) |
Dec
|
| 2008 |
Jan
(38) |
Feb
(71) |
Mar
(142) |
Apr
|
May
(59) |
Jun
(6) |
Jul
(10) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2009 |
Jan
(12) |
Feb
(4) |
Mar
(88) |
Apr
(121) |
May
(17) |
Jun
(30) |
Jul
|
Aug
(5) |
Sep
|
Oct
(1) |
Nov
|
Dec
|
| 2010 |
Jan
(11) |
Feb
(76) |
Mar
(11) |
Apr
|
May
(11) |
Jun
|
Jul
|
Aug
(44) |
Sep
(14) |
Oct
(7) |
Nov
|
Dec
|
| 2011 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(9) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(10) |
Nov
|
Dec
|
| 2012 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(3) |
Jul
(4) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2016 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(168) |
| 2017 |
Jan
(77) |
Feb
(11) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2018 |
Jan
|
Feb
|
Mar
(1) |
Apr
(6) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2019 |
Jan
|
Feb
(88) |
Mar
(118) |
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2020 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(6) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(141) |
| 2021 |
Jan
(170) |
Feb
(20) |
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
(62) |
Nov
(189) |
Dec
(162) |
| 2022 |
Jan
(201) |
Feb
(118) |
Mar
(8) |
Apr
|
May
(2) |
Jun
(47) |
Jul
(19) |
Aug
(14) |
Sep
(3) |
Oct
|
Nov
(28) |
Dec
(235) |
| 2023 |
Jan
(112) |
Feb
(23) |
Mar
(2) |
Apr
(2) |
May
|
Jun
(1) |
Jul
|
Aug
(70) |
Sep
(92) |
Oct
(20) |
Nov
(1) |
Dec
(1) |
| 2024 |
Jan
|
Feb
|
Mar
(1) |
Apr
(1) |
May
(14) |
Jun
(11) |
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2025 |
Jan
(10) |
Feb
(29) |
Mar
|
Apr
(162) |
May
(245) |
Jun
(83) |
Jul
|
Aug
(1) |
Sep
|
Oct
|
Nov
(4) |
Dec
(23) |
| 2026 |
Jan
(119) |
Feb
(335) |
Mar
(103) |
Apr
(43) |
May
(154) |
Jun
(107) |
Jul
(187) |
Aug
(4) |
Sep
|
Oct
|
Nov
|
Dec
|
|
From: <vic...@us...> - 2026-08-01 16:38:56
|
Revision: 14959
http://sourceforge.net/p/foray/code/14959
Author: victormote
Date: 2026-08-01 16:38:54 +0000 (Sat, 01 Aug 2026)
Log Message:
-----------
Throw exception if more than one dictionary is parsed from a configured dictionary resource.
Modified Paths:
--------------
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/DictionaryResource.java
Modified: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/DictionaryResource.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/DictionaryResource.java 2026-08-01 15:57:32 UTC (rev 14958)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/DictionaryResource.java 2026-08-01 16:38:54 UTC (rev 14959)
@@ -38,6 +38,7 @@
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
+import java.util.List;
/**
* Configuration information for a dictionary resource.
@@ -81,7 +82,14 @@
SegmentDictionary dictionary = null;
try {
final InputSource source = new InputSource(url.toExternalForm());
- dictionary = parser.parse(source).get(0);
+ final List<SegmentDictionary> dictionaries = parser.parse(source);
+ /* The parser can return more than one dictionary, but that should never happen for /configured/
+ * resources. */
+ if (dictionaries.size() > 1) {
+ throw new IllegalArgumentException("Configured dictionary resource " + url +
+ " should contain only one dictionary");
+ }
+ dictionary = dictionaries.get(0);
} catch (final IOException e) {
LoggerFactory.getLogger(this.getClass()).error("IOException", e);
return null;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <vic...@us...> - 2026-08-01 15:57:35
|
Revision: 14958
http://sourceforge.net/p/foray/code/14958
Author: victormote
Date: 2026-08-01 15:57:32 +0000 (Sat, 01 Aug 2026)
Log Message:
-----------
Minor internal refactoring, for clarity.
Modified Paths:
--------------
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/Orthography4a.java
Modified: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/Orthography4a.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/Orthography4a.java 2026-08-01 15:44:03 UTC (rev 14957)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/Orthography4a.java 2026-08-01 15:57:32 UTC (rev 14958)
@@ -114,27 +114,6 @@
*/
public abstract WritingSystem4a getWritingSystem();
- /**
- * Indicates whether a given word is found in the match rules for this orthography, i.e. rules looking for
- * non-dictionary items such as numbers, currency, etc.
- * @param wordChars The word to be tested.
- * @return True if and only if {@code word} matches at least one match rule for this orthography.
- */
- public StringWord foundInMatchRules(final CharSequence wordChars) {
- for (int idIndex = 0; idIndex < getMatchRuleListIds().size(); idIndex ++) {
- final String ruleListId = getMatchRuleListIds().get(idIndex);
- final List<Pattern> validWordPatterns = getServer().getMatchRules(ruleListId);
- for (int index = 0; index < validWordPatterns.size(); index ++) {
- final Pattern pattern = validWordPatterns.get(index);
- final Matcher matcher = pattern.matcher(wordChars);
- if (matcher.matches()) {
- return new StringWord(0, wordChars);
- }
- }
- }
- return null;
- }
-
@Override
public Word4a recognizeWord(final CharSequence wordCharsIn, final int offset, final int length,
final PartOfSpeech pos) {
@@ -168,7 +147,7 @@
}
/* 2. Check the match rules. */
- word = foundInMatchRules(wordChars);
+ word = findInMatchRules(wordChars);
if (word != null) {
return handleCase(word, wordChars);
}
@@ -260,6 +239,27 @@
return null;
}
+ /**
+ * Indicates whether a given word is found in the match rules for this orthography, i.e. rules looking for
+ * non-dictionary items such as numbers, currency, etc.
+ * @param wordChars The word to be tested.
+ * @return True if and only if {@code word} matches at least one match rule for this orthography.
+ */
+ private StringWord findInMatchRules(final CharSequence wordChars) {
+ for (int idIndex = 0; idIndex < getMatchRuleListIds().size(); idIndex ++) {
+ final String ruleListId = getMatchRuleListIds().get(idIndex);
+ final List<Pattern> validWordPatterns = getServer().getMatchRules(ruleListId);
+ for (int index = 0; index < validWordPatterns.size(); index ++) {
+ final Pattern pattern = validWordPatterns.get(index);
+ final Matcher matcher = pattern.matcher(wordChars);
+ if (matcher.matches()) {
+ return new StringWord(0, wordChars);
+ }
+ }
+ }
+ return null;
+ }
+
@Override
public Word4a hyphenateUnrecognizedWord(final CharSequence word, final int offset, final int length) {
/* The character sequence containing the characters in the word that we are looking for. */
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <vic...@us...> - 2026-08-01 15:44:05
|
Revision: 14957
http://sourceforge.net/p/foray/code/14957
Author: victormote
Date: 2026-08-01 15:44:03 +0000 (Sat, 01 Aug 2026)
Log Message:
-----------
Normal dictionary editing.
Modified Paths:
--------------
trunk/foray/foray-orthography/src/main/data/dictionaries/eng-Latn-ZZZ-theology.dict.xml
Modified: trunk/foray/foray-orthography/src/main/data/dictionaries/eng-Latn-ZZZ-theology.dict.xml
===================================================================
--- trunk/foray/foray-orthography/src/main/data/dictionaries/eng-Latn-ZZZ-theology.dict.xml 2026-08-01 10:16:17 UTC (rev 14956)
+++ trunk/foray/foray-orthography/src/main/data/dictionaries/eng-Latn-ZZZ-theology.dict.xml 2026-08-01 15:44:03 UTC (rev 14957)
@@ -89,6 +89,7 @@
<w><t>Hin-nom</t><noun/></w>
<w><t>Ho-bab</t><noun><convertible-to-possessive/></noun></w>
<w><t>Hol-werd-a</t><noun/><comment>Author.</comment></w>
+<w><t>home-go-ing</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>hon-our</t><noun><pluralizable/><convertible-to-possessive/></noun><verb><regular-root/></verb></w>
<w><t>Hur</t><noun><convertible-to-possessive/><proper/></noun><comment>Ex. 17:8-9.</comment></w>
<w><t>Hy-men-aen</t><adjective><extensible value="false"/></adjective></w>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <vic...@us...> - 2026-08-01 10:16:20
|
Revision: 14956
http://sourceforge.net/p/foray/code/14956
Author: victormote
Date: 2026-08-01 10:16:17 +0000 (Sat, 01 Aug 2026)
Log Message:
-----------
Normal dictionary editing.
Modified Paths:
--------------
trunk/foray/foray-orthography/src/main/data/dictionaries/emen-Latn-ZZZ.dict.xml
trunk/foray/foray-orthography/src/main/data/dictionaries/eng-Latn-ZZZ-theology.dict.xml
trunk/foray/foray-orthography/src/main/data/dictionaries/eng-Latn-ZZZ.dict.xml
trunk/foray/foray-orthography/src/main/data/dictionaries/lat-Latn-ZZZ.dict.xml
trunk/foray/foray-orthography/src/main/data/orthographies/foray-orthography-config.xml
Modified: trunk/foray/foray-orthography/src/main/data/dictionaries/emen-Latn-ZZZ.dict.xml
===================================================================
--- trunk/foray/foray-orthography/src/main/data/dictionaries/emen-Latn-ZZZ.dict.xml 2026-07-31 09:57:31 UTC (rev 14955)
+++ trunk/foray/foray-orthography/src/main/data/dictionaries/emen-Latn-ZZZ.dict.xml 2026-08-01 10:16:17 UTC (rev 14956)
@@ -17,11 +17,18 @@
<w><t>bear-eth</t><verb><lemma>bear</lemma></verb></w>
<w><t>bring-eth</t><verb><lemma>bring</lemma></verb></w>
-<w><t>cleans-eth</t><verb><lemma>cleanse</lemma></verb></w>
-<w><t>fad-eth</t><verb><lemma>fade</lemma></verb></w>
+<w><t>caus-eth</t><verb><lemma>cause</lemma></verb><comment>Regular verb. Remove.</comment></w>
+<w><t>cleans-eth</t><verb><lemma>cleanse</lemma></verb><comment>Regular verb. Remove.</comment></w>
+<w><t>de-clin-eth</t><verb><lemma>decline</lemma></verb><comment>Regular verb. Remove.</comment></w>
+<w><t>en-dur-eth</t><verb><lemma>endure</lemma></verb><comment>Regular verb. Remove.</comment></w>
+<w><t>fad-eth</t><verb><lemma>fade</lemma></verb><comment>Regular verb. Remove.</comment></w>
<w><t>grow-eth</t><verb><lemma>grow</lemma></verb></w>
<w><t>hear-eth</t><verb><lemma>hear</lemma></verb></w>
-<w><t>shin-eth</t><verb><lemma>shine</lemma></verb></w>
+<w><t>keep-eth</t><verb><lemma>keep</lemma></verb></w>
+<w><t>liv-eth</t><verb><lemma>live</lemma></verb><comment>Regular verb. Remove.</comment></w>
+<w><t>mak-eth</t><verb><lemma>make</lemma></verb></w>
+<w><t>mas-ter-build-er</t></w>
+<w><t>shin-eth</t><verb><lemma>shine</lemma></verb><comment>Regular verb. Remove.</comment></w>
<w><t>un-der-stand-eth</t><verb><lemma>understand</lemma></verb></w>
Modified: trunk/foray/foray-orthography/src/main/data/dictionaries/eng-Latn-ZZZ-theology.dict.xml
===================================================================
--- trunk/foray/foray-orthography/src/main/data/dictionaries/eng-Latn-ZZZ-theology.dict.xml 2026-07-31 09:57:31 UTC (rev 14955)
+++ trunk/foray/foray-orthography/src/main/data/dictionaries/eng-Latn-ZZZ-theology.dict.xml 2026-08-01 10:16:17 UTC (rev 14956)
@@ -21,6 +21,7 @@
<w><t>Ab-i-ez-rite</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>A-bi-ram</t></w>
<w><t>Ach-te-mei-er</t><comment>Author.</comment></w>
+<w><t>Ad-o-ni-ram</t><noun><proper/></noun><comment>First name of missionary Judson.</comment></w>
<w><t>Al-phae-us</t><noun/></w>
<w><t>A-mo-rite</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>A-moz</t><noun/></w>
@@ -89,6 +90,7 @@
<w><t>Ho-bab</t><noun><convertible-to-possessive/></noun></w>
<w><t>Hol-werd-a</t><noun/><comment>Author.</comment></w>
<w><t>hon-our</t><noun><pluralizable/><convertible-to-possessive/></noun><verb><regular-root/></verb></w>
+<w><t>Hur</t><noun><convertible-to-possessive/><proper/></noun><comment>Ex. 17:8-9.</comment></w>
<w><t>Hy-men-aen</t><adjective><extensible value="false"/></adjective></w>
<w><t>Hy-men-ae-us</t><noun><convertible-to-possessive/></noun></w>
<w><t>Hy-men-æ-us</t><noun><convertible-to-possessive/></noun></w>
@@ -102,6 +104,7 @@
<w><t>Jo-ses</t><noun/></w>
<w><t>Jo-tham</t><noun/></w>
<w><t>Judg</t><abbrev referenced-word="Judges"/></w>
+<w><t>Jud-son</t><noun><pluralizable/><convertible-to-possessive/></noun><comment>Missionary</comment></w>
<w><t>Ke-desh</t><noun/></w>
<w><t>Keil</t><noun/><comment>Author.</comment></w>
<w><t>Ken-ite</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
@@ -176,6 +179,8 @@
<w><t>Shi-mon</t><noun/><comment>Alt. for Simon.</comment></w>
<w><t>Si-hon</t><noun><singular/></noun></w>
<w><t>Sos-the-nes</t><noun/></w>
+<w><t>soul-win-ner</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
+<w><t>soul-win-ning</t><noun><singular/><convertible-to-possessive/></noun></w>
<w><t>Steph-a-nas</t><noun/></w>
<w><t>Strong</t><noun><convertible-to-possessive/></noun><comment>Concordance author.</comment></w>
<w><t>Sty-lites</t><comment>Simeon, 5th century Syrian ascetic.</comment></w>
@@ -186,6 +191,7 @@
<w><t>Ter-tul-lus</t><noun/></w>
<w><t>Th</t><abbrev referenced-word="Thessalonians"/></w>
<w><t>Theu-das</t><noun/></w>
+<w><t>Toplady</t><comment>Augustus. Author.</comment></w>
<w><t>TULIP</t><abbrev referenced-word="Total... Unconditional... Limited... Irresistible... Perseverance..."/></w>
<w><t>Tych-ic-us</t><noun/></w>
<w><t>Ty-ran-nus</t><noun><convertible-to-possessive/></noun></w>
@@ -193,6 +199,7 @@
<w><t>U-phar-sin</t><noun/></w>
<w><t>Ur</t><noun/></w>
<w><t>Uz</t><noun/></w>
+<w><t>VBS</t><abbrev referenced-word="Vacation Bible School"/><noun><convertible-to-possessive/></noun></w>
<w><t>Wal-voord</t><noun/><comment>Author.</comment></w>
<w><t>works=o-ri-ent-ed</t><adjective/></w>
<w><t>WWJD</t><abbrev referenced-word="What Would Jesus Do"/></w>
@@ -201,6 +208,7 @@
<w><t>Ze-lo-tes</t><noun/></w>
<w><t>Ze-rah</t><noun/></w>
<w><t>Zeus O-lym-pi-os</t></w>
+<w><t>Zon-der-van</t><noun><convertible-to-possessive/></noun><comment>Modern publisher</comment></w>
<w><t>Zuck</t><noun/><comment>Author.</comment></w>
Modified: trunk/foray/foray-orthography/src/main/data/dictionaries/eng-Latn-ZZZ.dict.xml
===================================================================
--- trunk/foray/foray-orthography/src/main/data/dictionaries/eng-Latn-ZZZ.dict.xml 2026-07-31 09:57:31 UTC (rev 14955)
+++ trunk/foray/foray-orthography/src/main/data/dictionaries/eng-Latn-ZZZ.dict.xml 2026-08-01 10:16:17 UTC (rev 14956)
@@ -65,12 +65,18 @@
<section description="A">
<section description="A abbrev">
<w><t>a</t></w>
-<w><t>A.D.</t><abbrev referenced-word="anno Domini"/><comment>Latin "year of our Lord"</comment></w>
-<w><t>a.d.</t><abbrev referenced-word="anno Domini"/><comment>Latin "year of our Lord"</comment></w>
-<w><t>a. d.</t><abbrev referenced-word="anno Domini"/><comment>Latin "year of our Lord"</comment></w>
-<w><t>a.m.</t><abbrev referenced-word="ante meridian"/><comment>Latin "before noon"</comment></w>
-<w><t>a. m.</t><abbrev referenced-word="ante meridian"/><comment>Latin "before noon"</comment></w>
+<word-choice>
+ <w><t>A.D.</t><abbrev referenced-word="anno Domini"/><comment>Latin "year of our Lord"</comment></w>
+ <w><t>a.d.</t><abbrev referenced-word="anno Domini"/><comment>Latin "year of our Lord"</comment></w>
+ <w><t>a. d.</t><abbrev referenced-word="anno Domini"/><comment>Latin "year of our Lord"</comment></w>
+ <w><t>ad</t><abbrev referenced-word="anno Domini"/><comment>Latin "year of our Lord"</comment></w>
+</word-choice>
+<word-choice>
+ <w><t>a.m.</t><abbrev referenced-word="ante meridian"/><comment>Latin "before noon"</comment></w>
+ <w><t>a. m.</t><abbrev referenced-word="ante meridian"/><comment>Latin "before noon"</comment></w>
+</word-choice>
</section>
+
<section description="Aa">
<w><t>a-a</t></w>
<w><t>Aa-chen</t></w>
@@ -3873,7 +3879,7 @@
<w><t>Al-cock</t></w>
<w><t>al-co-hol</t></w>
<w><t>al-co-hol-ate</t></w>
-<w><t>al-co-hol-ic</t></w>
+<w><t>al-co-hol-ic</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>al-co-hol-i-cal-ly</t></w>
<w><t>al-co-hol-ic-i-ty</t></w>
<phrase><t>Al-co-hol-ics A-non-y-mous</t></phrase>
@@ -3988,7 +3994,7 @@
<phrase><t>A-lep-po gall</t></phrase>
<w><t>a-ler-ce</t></w>
<w><t>a-le-ri-on</t></w>
-<w><t>a-lert</t></w>
+<w><t>a-lert</t><noun><pluralizable/><convertible-to-possessive/></noun><verb><regular-root/></verb><adjective></adjective></w>
<w><t>a-lert-ly</t></w>
<w><t>a-lert-ness</t></w>
<w><t>A-le-si-a</t></w>
@@ -5003,7 +5009,7 @@
<w><t>am-au-rot-ic</t></w>
<w><t>a-maut</t></w>
<w><t>A-may-a</t></w>
-<w><t>a-maze</t></w>
+<w><t>a-maze</t><verb><regular-root/></verb></w>
<w><t>a-mazed</t></w>
<w><t>a-maz-ed-ly</t></w>
<w><t>a-maz-ed-ness</t></w>
@@ -5207,7 +5213,7 @@
<w><t>a-merce-ment</t></w>
<w><t>a-merc-er</t></w>
<w><t>a-merc-ing</t></w>
-<w><t>A-mer-i-ca</t></w>
+<w><t>A-mer-i-ca</t><noun><pluralizable/><convertible-to-possessive/><proper/></noun></w>
<w><t>A-mer-i-can</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>A-mer-i-ca-na</t></w>
<phrase><t>A-mer-i-can al-oe</t></phrase>
@@ -5683,7 +5689,7 @@
<w><t>a-mu-sive</t></w>
<w><t>a-mu-sive-ly</t></w>
<w><t>a-mu-sive-ness</t></w>
-<w><t>A-my</t></w>
+<w><t>A-my</t><noun><pluralizable/><convertible-to-possessive/><proper/></noun></w>
<w><t>a-my-a-ton-ic</t></w>
<w><t>A-my-clas</t></w>
<w><t>Am-y-cus</t></w>
@@ -7836,7 +7842,7 @@
<w><t>an-ti-qua-ted-ness</t></w>
<w><t>an-ti-quat-ing</t></w>
<w><t>an-ti-qua-tion</t></w>
-<w><t>an-tique</t></w>
+<w><t>an-tique</t><noun><pluralizable/><convertible-to-possessive/></noun><adjective><extensible value="false"/></adjective></w>
<w><t>an-tiqued</t></w>
<w><t>an-tique-ly</t></w>
<w><t>an-tique-ness</t></w>
@@ -11385,7 +11391,7 @@
<w><t>Au-gus-ta-les</t></w>
<w><t>Au-gus-tan</t></w>
<w><t>Au-guste</t></w>
-<w><t>Au-gus-tine</t></w>
+<w><t>Au-gus-tine</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>Au-gus-tin-i-an</t></w>
<w><t>Au-gus-tin-i-an-ism</t></w>
<w><t>Au-gus-tin-ism</t></w>
@@ -12271,11 +12277,15 @@
</section>
<section description="B">
+<section description="B abbrev">
<w><t>b/f</t></w>
<w><t>b/l</t></w>
<w><t>b/s</t></w>
<w><t>b.</t><abbrev referenced-word="book"/></w>
<w><t>b.c.</t><abbrev referenced-word="Before Christ"/></w>
+</section>
+
+<section description="Ba">
<w><t>baa</t></w>
<w><t>BAA</t></w>
<phrase><t>Baa-der=Mein-hof Gang</t></phrase>
@@ -14342,7 +14352,7 @@
<w><t>Bax</t></w>
<w><t>B=ax-es</t></w>
<w><t>Bax-ley</t></w>
-<w><t>Bax-ter</t></w>
+<w><t>Bax-ter</t><noun><pluralizable/><convertible-to-possessive/><proper/></noun></w>
<w><t>bay</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>ba-ya</t></w>
<w><t>ba-ya-dere</t></w>
@@ -14384,6 +14394,9 @@
<w><t>ba-zoo</t></w>
<w><t>ba-zoo-ka</t></w>
<w><t>ba-zoo-ka-man</t></w>
+</section>
+
+<section description="Bb to Bd">
<phrase><t>B bat-ter-y</t></phrase>
<w><t>bb-bish</t></w>
<w><t>BBC</t></w>
@@ -14401,6 +14414,9 @@
<w><t>bdl</t></w>
<w><t>BDS</t></w>
<w><t>bds</t></w>
+</section>
+
+<section description="Be">
<w><t>be</t></w>
<w><t>Bea</t></w>
<w><t>BEA</t></w>
@@ -14522,6 +14538,7 @@
<w><t>bear-like</t></w>
<w><t>Bé-ar-naise</t></w>
<w><t>bear-paw</t></w>
+<w><t>bears</t><noun><plural/></noun><verb><lemma>bear</lemma><vf></vf></verb></w>
<w><t>bear’s=breech-es</t></w>
<w><t>bear-skin</t></w>
<w><t>bear-wood</t></w>
@@ -14979,6 +14996,7 @@
<w><t>Bei-der-becke</t></w>
<w><t>beige</t></w>
<w><t>bei-gel</t></w>
+<w><t>Bei-jing</t><noun><singular/><convertible-to-possessive/><proper/></noun></w>
<w><t>be-ing</t><noun><pluralizable/><convertible-to-possessive/></noun><verb><regular-root value="false"/></verb></w>
<w><t>Bei-ra</t></w>
<w><t>Bei-rut</t></w>
@@ -15920,6 +15938,9 @@
<w><t>be-zo-ni-an</t></w>
<w><t>Bez-wa-da</t></w>
<w><t>bez-zant</t></w>
+</section>
+
+<section description="Bh">
<w><t>Bha-bha</t></w>
<w><t>Bhad-gaon</t></w>
<w><t>Bha-gal-pur</t></w>
@@ -15963,6 +15984,9 @@
<w><t>Bhu-tan-ese</t></w>
<w><t>Bhu-ta-ta-tha-ta</t></w>
<w><t>Bhut-to</t></w>
+</section>
+
+<section description="Bi">
<w><t>Bi-a</t></w>
<w><t>bi-a-ce-tyl</t></w>
<w><t>Bi-a-di-ce</t></w>
@@ -16267,7 +16291,7 @@
<w><t>big-ness</t></w>
<w><t>big-no-ni-a</t></w>
<w><t>big-no-ni-a-ceous</t></w>
-<w><t>big-ot</t></w>
+<w><t>big-ot</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>big-ot-ed</t></w>
<w><t>big-ot-ed-ly</t></w>
<w><t>big-ot-ry</t></w>
@@ -16977,6 +17001,9 @@
<w><t>bi-zone</t></w>
<w><t>Bi-zo-ni-a</t></w>
<w><t>Biz-tha</t></w>
+</section>
+
+<section description="Bj to Bk">
<w><t>B-jart</t></w>
<w><t>Bj-ne-borg</t></w>
<w><t>Bjoer-ling</t></w>
@@ -16987,6 +17014,9 @@
<w><t>bkg</t></w>
<w><t>bkpt</t></w>
<w><t>bks</t></w>
+</section>
+
+<section description="Bl">
<w><t>blab</t></w>
<w><t>blab-ber</t></w>
<w><t>blab-ber-mouth</t></w>
@@ -17787,10 +17817,16 @@
<w><t>Blyth</t></w>
<w><t>Blythe</t></w>
<w><t>Blythe-ville</t></w>
+</section>
+
+<section description="Bm">
<w><t>BMA</t></w>
<w><t>B-me</t></w>
<w><t>BMJ</t></w>
<w><t>BMus</t></w>
+</section>
+
+<section description="Bo">
<w><t>bo-a</t></w>
<w><t>Bo-ab-dil</t></w>
<w><t>BOAC</t></w>
@@ -18414,7 +18450,7 @@
<w><t>book-mak-er</t></w>
<w><t>book-mak-ing</t></w>
<w><t>book-man</t></w>
-<w><t>book-mark</t></w>
+<w><t>book-mark</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>book-mark-er</t></w>
<w><t>book-mo-bile</t></w>
<phrase><t>book of ac-count</t></phrase>
@@ -19115,10 +19151,16 @@
<w><t>Bo-zen</t></w>
<w><t>bo-zo</t></w>
<w><t>Boz-za-ris</t></w>
+</section>
+
+<section description="Bp">
<w><t>Bp</t><abbrev referenced-word="Bishop"/></w>
<w><t>BPC</t></w>
<w><t>bpi</t></w>
<w><t>bpt</t></w>
+</section>
+
+<section description="Br">
<w><t>bra</t></w>
<w><t>braa-ta</t></w>
<w><t>braa-tas</t></w>
@@ -19269,7 +19311,7 @@
<w><t>brain-child</t></w>
<w><t>brain-chil-dren</t></w>
<phrase><t>brain cor-al</t></phrase>
-<w><t>Brai-nerd</t></w>
+<w><t>Brai-nerd</t><noun><pluralizable/><convertible-to-possessive/><proper/></noun></w>
<phrase><t>brain fe-ver</t></phrase>
<phrase><t>brain=fe-ver bird</t></phrase>
<w><t>brain-i-er</t></w>
@@ -19568,7 +19610,7 @@
<w><t>break-o-ver</t></w>
<w><t>break-point</t></w>
<w><t>breaks</t><verb><regular-root value="false"/></verb></w>
-<w><t>break-through</t></w>
+<w><t>break-through</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>break-up</t></w>
<w><t>break-wa-ter</t></w>
<w><t>break-weath-er</t></w>
@@ -20461,6 +20503,9 @@
<w><t>Bryth-on</t></w>
<w><t>Bry-thon-ic</t></w>
<w><t>Brze-giem</t></w>
+</section>
+
+<section description="Bs to Bt">
<w><t>Bs/L</t></w>
<w><t>BSc</t></w>
<phrase><t>B Spe-cial</t></phrase>
@@ -20475,6 +20520,9 @@
<w><t>btry</t></w>
<w><t>btu</t></w>
<w><t>BTU</t></w>
+</section>
+
+<section description="Bu">
<w><t>bub</t></w>
<w><t>Bub</t></w>
<w><t>bu-bal</t></w>
@@ -20613,7 +20661,7 @@
<phrase><t>Buddh Ga-ya</t></phrase>
<w><t>bud-dhi</t></w>
<w><t>Bud-dhism</t></w>
-<w><t>Bud-dhist</t></w>
+<w><t>Bud-dhist</t><noun><pluralizable/><convertible-to-possessive/><proper/></noun></w>
<w><t>Bud-dhis-tic</t></w>
<w><t>Bud-dhis-ti-cal</t></w>
<w><t>Bud-dhis-ti-cal-ly</t></w>
@@ -21483,7 +21531,7 @@
<w><t>Bux-ton</t></w>
<w><t>buy</t><verb><regular-root value="false"/></verb></w>
<w><t>buy-a-ble</t></w>
-<w><t>buy-er</t></w>
+<w><t>buy-er</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<phrase><t>buy-ers’ mar-ket</t></phrase>
<w><t>buy-ing</t></w>
<phrase><t>buy in-to</t></phrase>
@@ -21496,9 +21544,15 @@
<w><t>buzz-er</t></w>
<w><t>buzz-ing-ly</t></w>
<w><t>buzz-wig</t></w>
+</section>
+
+<section description="Bv to Bw">
<w><t>BVM</t></w>
<w><t>bwa-na</t></w>
<w><t>BWG</t></w>
+</section>
+
+<section description="By to Bz">
<w><t>by</t></w>
<w><t>By-am</t></w>
<w><t>by=bid-der</t></w>
@@ -21579,6 +21633,7 @@
<w><t>By-zas</t></w>
<w><t>B-ziers</t></w>
</section>
+</section>
<section description="C">
<section description="C abbrev">
@@ -22347,7 +22402,7 @@
<w><t>Cal-va-ry</t><noun><convertible-to-possessive/></noun></w>
<w><t>cal-va-ry</t></w>
<phrase><t>Cal-va-ry cross</t></phrase>
-<w><t>calve</t></w>
+<w><t>calve</t><verb><regular-root/></verb></w>
<w><t>Cal-vé</t></w>
<w><t>Cal-vert</t></w>
<w><t>calves</t></w>
@@ -23004,7 +23059,7 @@
<w><t>ca-nu-lar</t></w>
<w><t>can-u-late</t></w>
<w><t>Ca-nute</t></w>
-<w><t>can-vas</t></w>
+<w><t>can-vas</t><noun><pluralizable/><convertible-to-possessive/></noun><verb><regular-root/></verb></w>
<w><t>can-vas-back</t></w>
<w><t>can-vas-like</t></w>
<w><t>can-vass</t><noun><pluralizable/><convertible-to-possessive/></noun><verb><regular-root/></verb></w>
@@ -23553,7 +23608,7 @@
<w><t>ca-reen</t></w>
<w><t>ca-reen-age</t></w>
<w><t>ca-reen-er</t></w>
-<w><t>ca-reer</t></w>
+<w><t>ca-reer</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<phrase><t>ca-reer girl</t></phrase>
<w><t>ca-reer-ism</t></w>
<w><t>ca-reer-ist</t></w>
@@ -24886,6 +24941,7 @@
<w><t>CBS</t></w>
<w><t>C-ce-res</t></w>
<w><t>C-cu-ta</t></w>
+<w><t>CD</t><abbrev referenced-word="compact disk"/><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>C-de-nas</t></w>
<w><t>C-diz</t></w>
<w><t>Cdn</t></w>
@@ -27292,7 +27348,7 @@
<w><t>choice-ly</t></w>
<w><t>choice-ness</t></w>
<w><t>choic-er</t></w>
-<w><t>choir</t></w>
+<w><t>choir</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>choir-boy</t></w>
<w><t>choir-girl</t></w>
<w><t>choir-like</t></w>
@@ -33675,7 +33731,7 @@
<w><t>cord-wain-er</t></w>
<w><t>cord-wain-er-y</t></w>
<w><t>cord-wood</t></w>
-<w><t>core</t></w>
+<w><t>core</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>CORE</t></w>
<w><t>Co-re</t></w>
<w><t>co-re-la-tion</t></w>
@@ -36061,7 +36117,7 @@
<w><t>cru-ci-fy</t><verb><regular-root/></verb></w>
<w><t>cru-ci-fy-ing</t></w>
<w><t>Cru-cis</t></w>
-<w><t>cruck</t></w>
+<w><t>cruck</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>crud</t></w>
<w><t>crud-ded</t></w>
<w><t>crud-ding</t></w>
@@ -36640,7 +36696,7 @@
<w><t>cup</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>Cu-pa-vo</t></w>
<w><t>cup-bear-er</t></w>
-<w><t>cup-board</t></w>
+<w><t>cup-board</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<phrase><t>cup-board love</t></phrase>
<w><t>cup-cake</t></w>
<w><t>cu-pel</t></w>
@@ -37258,7 +37314,7 @@
<w><t>Cyn-a-ra</t></w>
<w><t>Cyn-e-wulf</t></w>
<w><t>cyn-gha-nedd</t></w>
-<w><t>cyn-ic</t></w>
+<w><t>cyn-ic</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>Cyn-ic</t></w>
<w><t>cyn-i-cal</t></w>
<w><t>cyn-i-cal-ly</t></w>
@@ -38978,7 +39034,7 @@
<w><t>ded-i-cate</t></w>
<w><t>ded-i-cat-ed</t></w>
<w><t>ded-i-cat-ing</t></w>
-<w><t>ded-i-ca-tion</t></w>
+<w><t>ded-i-ca-tion</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>ded-i-ca-tion-al</t></w>
<w><t>ded-i-ca-tive</t></w>
<w><t>ded-i-ca-tor</t></w>
@@ -40590,7 +40646,7 @@
<w><t>de-ri-so-ry</t></w>
<w><t>deriv</t></w>
<w><t>de-riv-a-ble</t></w>
-<w><t>der-i-va-tion</t></w>
+<w><t>der-i-va-tion</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>der-i-va-tion-al</t></w>
<w><t>der-i-va-tion-al-ly</t></w>
<w><t>de-riv-a-tive</t></w>
@@ -41567,8 +41623,7 @@
<w><t>Di-ahann</t></w>
<w><t>di-a-ki-ne-sis</t></w>
<w><t>di-a-kon-i-kon</t></w>
-<w><t>dial</t></w>
-<w><t>di-al</t></w>
+<w><t>di-al</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>di-a-lect</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>di-a-lec-tal</t></w>
<w><t>di-a-lec-tal-ly</t></w>
@@ -41666,7 +41721,7 @@
<phrase><t>di-a-mond wed-ding</t></phrase>
<w><t>di-a-mor-phine</t></w>
<w><t>Di-a-mox</t></w>
-<w><t>Di-an-a</t></w>
+<w><t>Di-an-a</t><noun><pluralizable/><convertible-to-possessive/><proper/></noun></w>
<w><t>di-an-drous</t></w>
<w><t>Di-ane</t></w>
<w><t>di-a-net-ics</t></w>
@@ -46093,7 +46148,7 @@
<w><t>du-et-tist</t></w>
<w><t>Du-fay</t></w>
<w><t>duff</t></w>
-<w><t>Duff</t></w>
+<w><t>Duff</t><noun><pluralizable/><convertible-to-possessive/><proper/></noun></w>
<w><t>duf-fel</t></w>
<phrase><t>duf-fel bag</t></phrase>
<phrase><t>duf-fel coat</t></phrase>
@@ -47300,7 +47355,7 @@
<w><t>e-de-ma</t></w>
<w><t>e-de-ma-ta</t></w>
<w><t>e-dem-a-tous</t></w>
-<w><t>E-den</t></w>
+<w><t>E-den</t><noun><pluralizable/><convertible-to-possessive/><proper/></noun></w>
<w><t>E-den-ic</t></w>
<w><t>E-den-ta-ta</t></w>
<w><t>e-den-tate</t></w>
@@ -47361,8 +47416,8 @@
<w><t>Ed-in-burgh</t><noun><singular/><convertible-to-possessive/><proper/></noun></w>
<w><t>E-dir-ne</t></w>
<w><t>Ed-i-son</t></w>
-<w><t>edit</t></w>
<w><t>ed-it</t><verb><regular-root/></verb></w>
+<w><t>edit.</t><abbrev referenced-word="edited, edition, editor"/></w>
<w><t>E-dith</t></w>
<w><t>E-dithe</t></w>
<w><t>e-di-tion</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
@@ -48849,7 +48904,7 @@
<w><t>Em-i-lie</t></w>
<w><t>E-mi-lio</t></w>
<w><t>E-mi-li-o</t></w>
-<w><t>Em-i-ly</t></w>
+<w><t>Em-i-ly</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>Em-i-na</t></w>
<w><t>Em-i-nence</t></w>
<w><t>em-i-nence</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
@@ -50090,7 +50145,7 @@
<w><t>en-train</t></w>
<w><t>en-train-er</t></w>
<w><t>en-tram-mel</t></w>
-<w><t>en-trance</t></w>
+<w><t>en-trance</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>en-tranced</t></w>
<w><t>en-trance-ment</t></w>
<w><t>en-trance-way</t></w>
@@ -51154,7 +51209,7 @@
<w><t>ERS</t></w>
<w><t>er-satz</t></w>
<w><t>Erse</t></w>
-<w><t>Er-skine</t></w>
+<w><t>Er-skine</t><noun><convertible-to-possessive/></noun></w>
<w><t>erst</t></w>
<w><t>erst-while</t></w>
<w><t>Er-te-bol-le</t></w>
@@ -52266,7 +52321,7 @@
<w><t>e-va-sive-ly</t></w>
<w><t>e-va-sive-ness</t></w>
<w><t>Ev-att</t></w>
-<w><t>Eve</t></w>
+<w><t>Eve</t><noun><pluralizable/><convertible-to-possessive/><proper/></noun></w>
<w><t>eve</t></w>
<w><t>e-vec-tion</t></w>
<w><t>e-vec-tion-al</t></w>
@@ -52479,7 +52534,7 @@
<w><t>ex-alt-ed-ly</t></w>
<w><t>ex-alt-ed-ness</t></w>
<w><t>ex-alt-er</t></w>
-<w><t>ex-am</t></w>
+<w><t>ex-am</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>ex-a-men</t></w>
<w><t>ex-am-in-a-ble</t></w>
<w><t>ex-am-i-nant</t></w>
@@ -53827,7 +53882,7 @@
<phrase><t>face pow-der</t></phrase>
<w><t>fac-er</t></w>
<w><t>face=sav-ing</t></w>
-<w><t>fac-et</t></w>
+<w><t>fac-et</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>fa-cete</t></w>
<w><t>fac-et-ed</t></w>
<w><t>fa-cete-ly</t></w>
@@ -56012,7 +56067,7 @@
<w><t>fin-ger=paint</t></w>
<phrase><t>fin-ger paint-ing</t></phrase>
<phrase><t>fin-ger post</t></phrase>
-<w><t>fin-ger-print</t></w>
+<w><t>fin-ger-print</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<phrase><t>fin-ger’s breadth</t></phrase>
<w><t>fin-ger-stall</t></w>
<phrase><t>fin-ger tight</t></phrase>
@@ -56422,7 +56477,7 @@
<w><t>flac-on</t></w>
<w><t>fla-con</t></w>
<w><t>flac-ons</t></w>
-<w><t>flag</t></w>
+<w><t>flag</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<phrase><t>flag cap-tain</t></phrase>
<w><t>fla-gel-la</t></w>
<w><t>flag-el-lant</t></w>
@@ -56907,7 +56962,7 @@
<w><t>flint-lock</t></w>
<w><t>Flint-shire</t></w>
<w><t>flint-y</t></w>
-<w><t>flip</t></w>
+<w><t>flip</t><verb><regular-root/></verb></w>
<w><t>flip=flop</t><noun><pluralizable/><convertible-to-possessive/></noun><verb><regular-root/></verb></w>
<w><t>flip-pan-cy</t></w>
<w><t>flip-pant</t></w>
@@ -57919,7 +57974,7 @@
<w><t>fo-ren-si-cal-i-ty</t></w>
<w><t>fo-ren-si-cal-ly</t></w>
<w><t>fo-ren-sics</t></w>
-<w><t>fore-or-dain</t></w>
+<w><t>fore-or-dain</t><verb><regular-root/></verb></w>
<w><t>fore-or-dain-ment</t></w>
<w><t>fore-or-di-nate</t></w>
<w><t>fore-or-di-nat-ed</t></w>
@@ -61676,10 +61731,11 @@
<w><t>ge-ol-o-gise</t></w>
<w><t>ge-ol-o-gised</t></w>
<w><t>ge-ol-o-gis-ing</t></w>
+<w><t>ge-ol-o-gist</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>ge-ol-o-gize</t></w>
<w><t>ge-ol-o-gized</t></w>
<w><t>ge-ol-o-giz-ing</t></w>
-<w><t>ge-ol-o-gy</t></w>
+<w><t>ge-ol-o-gy</t><noun><convertible-to-possessive/></noun></w>
<w><t>geom</t></w>
<w><t>ge-o-mag-net-ic</t></w>
<w><t>ge-o-mag-ne-ti-cian</t></w>
@@ -62962,7 +63018,7 @@
<w><t>glu-cos-u-ri-a</t></w>
<w><t>glu-co-su-ri-a</t></w>
<w><t>glu-cu-ron-ide</t></w>
-<w><t>glue</t></w>
+<w><t>glue</t><noun><pluralizable/><convertible-to-possessive/></noun><verb><regular-root/></verb></w>
<w><t>glue-like</t></w>
<w><t>glue-pot</t></w>
<w><t>glu-er</t></w>
@@ -63245,8 +63301,15 @@
<w><t>go-by</t></w>
<w><t>go=by</t></w>
<w><t>GOC</t></w>
-<w><t>go=cart</t></w>
-<w><t>Go-clen-i-us</t></w>
+<word-choice>
+ <w><t>go=cart</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
+ <w><t>go=kart</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
+</word-choice>
+<word-choice>
+ <w><t>go=cart-ing</t><noun><singular/><convertible-to-possessive/></noun></w>
+ <w><t>go=cart-ing</t><noun><singular/><convertible-to-possessive/></noun></w>
+</word-choice>
+ <w><t>Go-clen-i-us</t></w>
<w><t>God</t><noun><singular/><convertible-to-possessive/></noun></w>
<w><t>god</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>Go-dard</t></w>
@@ -65515,7 +65578,7 @@
<w><t>guid-wil-lie</t></w>
<w><t>Gui-enne</t></w>
<w><t>guige</t></w>
-<w><t>guild</t></w>
+<w><t>guild</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>guil-der</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>Guild-ford</t></w>
<w><t>guild-hall</t></w>
@@ -66412,7 +66475,7 @@
<phrase><t>Hail Mar-y</t></phrase>
<w><t>hail-stone</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>hail-stoned</t></w>
-<w><t>hail-storm</t></w>
+<w><t>hail-storm</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>Hail-wood</t></w>
<w><t>Hai-nan</t></w>
<phrase><t>Hai-nan Tao</t></phrase>
@@ -67221,7 +67284,7 @@
<w><t>hand-sewed</t></w>
<w><t>hand-sew-ing</t></w>
<w><t>hand-sewn</t></w>
-<w><t>hand-shake</t></w>
+<w><t>hand-shake</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>hand-shak-er</t></w>
<w><t>hand-shak-ing</t></w>
<w><t>hand-some</t></w>
@@ -68100,7 +68163,7 @@
<w><t>head-frame</t></w>
<w><t>head-gear</t></w>
<w><t>head-hunt</t></w>
-<w><t>head-hunt-er</t></w>
+<w><t>head-hunt-er</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>head-hunt-ing</t></w>
<w><t>head=hunt-ing</t></w>
<w><t>head-i-er</t></w>
@@ -68569,7 +68632,7 @@
<w><t>Hei-drun</t></w>
<w><t>Hei-duc</t></w>
<w><t>Hei-duk</t></w>
-<w><t>heif-er</t></w>
+<w><t>heif-er</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>Hei-fetz</t></w>
<w><t>heigh</t></w>
<w><t>height</t><noun><pluralizable/></noun></w>
@@ -68636,9 +68699,9 @@
<w><t>Hel-den-te-nor</t></w>
<w><t>hel-den-ten-ors</t></w>
<w><t>hel-den-ten-te-no-re</t></w>
-<w><t>Hel-en</t></w>
+<w><t>Hel-en</t><noun><pluralizable/><convertible-to-possessive/><proper/></noun></w>
<w><t>Hel-e-na</t></w>
-<w><t>He-le-na</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
+<w><t>He-le-na</t><noun><pluralizable/><convertible-to-possessive/><proper/></noun></w>
<w><t>He-lene</t></w>
<w><t>He-le-nor</t></w>
<w><t>Hel-ens</t></w>
@@ -70866,7 +70929,7 @@
<w><t>hol-pen</t></w>
<w><t>hols</t></w>
<w><t>Holst</t></w>
-<w><t>Hol-stein</t></w>
+<w><t>Hol-stein</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>Hol-stein=Frie-sian</t></w>
<w><t>hol-ster</t></w>
<w><t>hol-stered</t></w>
@@ -72056,7 +72119,7 @@
<w><t>huff-ish-ness</t></w>
<w><t>huff-y</t></w>
<w><t>Hu-fuf</t></w>
-<w><t>hug</t></w>
+<w><t>hug</t><verb><regular-root/></verb></w>
<w><t>huge</t></w>
<w><t>Hü-gel</t></w>
<w><t>huge-ly</t></w>
@@ -72346,7 +72409,7 @@
<w><t>hur-cheon</t></w>
<w><t>Hurd</t></w>
<w><t>hur-dies</t></w>
-<w><t>hur-dle</t></w>
+<w><t>hur-dle</t><noun><pluralizable/><convertible-to-possessive/></noun><verb><regular-root/></verb></w>
<w><t>hur-dler</t></w>
<w><t>hurds</t></w>
<w><t>hur-dy=gur-dies</t></w>
@@ -72890,11 +72953,11 @@
<w><t>Hy-met-ti-us</t></w>
<w><t>Hy-met-tus</t></w>
<w><t>hymn</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
-<w><t>hym-nal</t></w>
+<w><t>hym-nal</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>hym-nar-i-a</t></w>
<w><t>hym-nar-i-um</t></w>
<w><t>hym-na-ry</t></w>
-<w><t>hymn-book</t></w>
+<w><t>hymn-book</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>hymn-er</t></w>
<w><t>hym-nist</t></w>
<w><t>hymn-less</t></w>
@@ -74934,7 +74997,7 @@
<w><t>Im-o-gene</t></w>
<w><t>Imp</t></w>
<w><t>imp</t></w>
-<w><t>im-pact</t></w>
+<w><t>im-pact</t><noun><pluralizable/><convertible-to-possessive/></noun><verb><regular-root/></verb></w>
<w><t>im-pact-ed</t></w>
<w><t>im-pact-ful</t></w>
<w><t>im-pac-tion</t></w>
@@ -75363,7 +75426,7 @@
<w><t>im-preg-na-ble-ness</t></w>
<w><t>im-preg-na-bly</t></w>
<w><t>im-preg-na-ta-ble</t></w>
-<w><t>im-preg-nate</t></w>
+<w><t>im-preg-nate</t><verb><regular-root/></verb></w>
<w><t>im-preg-na-tion</t></w>
<w><t>im-preg-na-tor</t></w>
<w><t>im-preg-na-to-ry</t></w>
@@ -75509,7 +75572,7 @@
<section description="In">
<w><t>in</t><noun><pluralizable/></noun></w>
<w><t>I-na</t></w>
-<w><t>in-a-bil-i-ty</t></w>
+<w><t>in-a-bil-i-ty</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<phrase><t>in ab-sen-ti-a</t></phrase>
<w><t>in-ac-ces-si-bil-i-ty</t></w>
<w><t>in-ac-ces-si-ble</t></w>
@@ -80074,7 +80137,7 @@
<w><t>Ir-gun</t></w>
<w><t>Ir-gun-ist</t></w>
<phrase><t>Ir-i-an Bar-at</t></phrase>
-<phrase><t>Ir-i-an Ja-ya</t></phrase>
+<w><t>Ir-i-an Ja-ya</t></w>
<w><t>I-ri-cise</t></w>
<w><t>I-ri-cised</t></w>
<w><t>I-ri-cis-ing</t></w>
@@ -80539,7 +80602,7 @@
<w><t>Is-lam-ized</t></w>
<w><t>Is-lam-iz-ing</t></w>
<w><t>is-land</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
-<w><t>is-land-er</t></w>
+<w><t>is-land-er</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>is-land-ish</t></w>
<w><t>is-land-less</t></w>
<w><t>is-land-like</t></w>
@@ -81575,7 +81638,7 @@
<w><t>Jean</t></w>
<w><t>Jean=Chris-tophe</t></w>
<w><t>Jean-er-ette</t></w>
-<w><t>Jean-ie</t></w>
+<w><t>Jean-ie</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>Jean-net-ta</t></w>
<w><t>Jean-nette</t></w>
<w><t>Jean-nie</t></w>
@@ -83913,7 +83976,7 @@
<w><t>kil-li-fish-es</t></w>
<w><t>kil-li-ki-nic</t></w>
<w><t>kil-li-ki-nick</t></w>
-<w><t>kill-ing</t></w>
+<w><t>kill-ing</t><noun><pluralizable/><convertible-to-possessive/></noun><verb><lemma>kill</lemma><vf/></verb></w>
<w><t>kill-ing-ly</t></w>
<w><t>kil-loch</t></w>
<w><t>kil-lock</t></w>
@@ -84542,6 +84605,7 @@
<w><t>know-ing</t></w>
<w><t>know-ing-ly</t></w>
<w><t>know-ing-ness</t></w>
+<w><t>know=it=all</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>knowl-edg-a-ble</t></w>
<w><t>knowl-edg-a-ble-ness</t></w>
<w><t>knowl-edg-a-bly</t></w>
@@ -85663,7 +85727,7 @@
<w><t>lam</t></w>
<w><t>Lam</t></w>
<w><t>la-m</t></w>
-<w><t>la-ma</t></w>
+<w><t>la-ma</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>La-ma-ism</t></w>
<w><t>La-ma-ist</t></w>
<w><t>La-ma-is-tic</t></w>
@@ -86144,6 +86208,7 @@
<w><t>lap-streak</t></w>
<w><t>lap-sus</t></w>
<phrase><t>Lap-tev Sea</t></phrase>
+<w><t>lap-top</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>La-pu-ta</t></w>
<w><t>lap-wing</t></w>
<w><t>la-que-i</t></w>
@@ -86162,7 +86227,7 @@
<w><t>lar-ce-nous</t></w>
<w><t>lar-ce-nous-ly</t></w>
<w><t>lar-ce-ny</t></w>
-<w><t>larch</t></w>
+<w><t>larch</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>larch-er</t></w>
<w><t>Larch-mont</t></w>
<w><t>lard</t></w>
@@ -86655,10 +86720,10 @@
<w><t>law-ren-ci-um</t></w>
<w><t>Law-ren-tian</t></w>
<phrase><t>Law So-ci-e-ty</t></phrase>
-<w><t>Law-son</t></w>
+<w><t>Law-son</t><noun><pluralizable/><convertible-to-possessive/><proper/></noun></w>
<phrase><t>law sta-tion-er</t></phrase>
<w><t>law-suit</t></w>
-<w><t>Law-ton</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
+<w><t>Law-ton</t><noun><pluralizable/><convertible-to-possessive/><proper/></noun></w>
<w><t>law-yer</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>law-yer-like</t></w>
<w><t>law-yer-ly</t></w>
@@ -87447,7 +87512,7 @@
<w><t>Le-pan-to</t></w>
<w><t>Le-paute</t></w>
<w><t>Le-pa-ya</t></w>
-<w><t>lep-er</t></w>
+<w><t>lep-er</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>le-pid-o-lite</t></w>
<w><t>lep-i-dop-ter-a</t></w>
<w><t>Lep-i-dop-ter-a</t></w>
@@ -88294,9 +88359,9 @@
<w><t>like-li-hood</t></w>
<w><t>like-li-ness</t></w>
<w><t>like-ly</t></w>
-<w><t>like=mind-ed</t></w>
-<w><t>like=mind-ed-ly</t></w>
-<w><t>like=mind-ed-ness</t></w>
+<w><t>like=mind-ed</t><adjective/></w>
+<w><t>like=mind-ed-ly</t><adverb/></w>
+<w><t>like=mind-ed-ness</t><noun><singular/></noun></w>
<w><t>lik-en</t><verb><regular-root/></verb></w>
<w><t>like-ness</t></w>
<w><t>lik-er</t></w>
@@ -88613,7 +88678,7 @@
<w><t>lin-i-ment</t></w>
<w><t>li-nin</t></w>
<w><t>lin-ing</t></w>
-<w><t>link</t></w>
+<w><t>link</t><noun><pluralizable/><convertible-to-possessive/></noun><verb><regular-root/></verb></w>
<w><t>link-age</t></w>
<w><t>link-boy</t></w>
<w><t>linked</t></w>
@@ -88820,7 +88885,7 @@
<w><t>lir-i-o-den-dron</t></w>
<w><t>lir-i-pipe</t></w>
<w><t>lir-i-poop</t></w>
-<w><t>Li-sa</t></w>
+<w><t>Li-sa</t><noun><convertible-to-possessive/><proper/></noun></w>
<w><t>Lis-bo-a</t></w>
<w><t>Lis-bon</t></w>
<w><t>Li-se</t></w>
@@ -89502,10 +89567,13 @@
<w><t>log-o-mach-ic</t></w>
<w><t>lo-gom-a-chist</t></w>
<w><t>lo-gom-a-chy</t></w>
+<w><t>log-o-ma-ni-a</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
+<w><t>log-o-ma-ni-ac</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>log-o-pae-dics</t></w>
<w><t>log-o-pe-di-a</t></w>
<w><t>log-o-pe-dic</t></w>
<w><t>log-o-pe-dics</t></w>
+<w><t>log-o-phile</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>log-or-rhe-a</t></w>
<w><t>log-or-rhe-ic</t></w>
<w><t>log-or-rhoe-a</t></w>
@@ -91101,7 +91169,7 @@
<w><t>mac-in-tosh</t></w>
<w><t>Mac-I-ver</t></w>
<w><t>mack</t></w>
-<w><t>Mac-kay</t></w>
+<w><t>Mac-kay</t><noun><pluralizable/><convertible-to-possessive/><proper/></noun></w>
<w><t>Ma-cke</t></w>
<w><t>Mack-en-sen</t></w>
<w><t>Mac-ken-zie</t></w>
@@ -92809,7 +92877,7 @@
<w><t>marked</t></w>
<w><t>mark-ed-ly</t></w>
<w><t>mark-ed-ness</t></w>
-<w><t>mark-er</t></w>
+<w><t>mark-er</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>mark-er=off</t></w>
<w><t>mar-kers=off</t></w>
<w><t>mar-ket</t><noun><pluralizable/><convertible-to-possessive/></noun><verb><regular-root/></verb></w>
@@ -93146,7 +93214,7 @@
<w><t>ma-ser</t></w>
<w><t>Mas-e-ru</t></w>
<w><t>Ma-se-ru</t></w>
-<w><t>mash</t></w>
+<w><t>mash</t><verb><regular-root/></verb></w>
<w><t>Mash-ar-brum</t></w>
<w><t>Mash-er-brum</t></w>
<w><t>mash-gi-ach</t></w>
@@ -93978,8 +94046,7 @@
<w><t>Me-chan-ics-burg</t></w>
<w><t>Me-chan-ics-ville</t></w>
<w><t>mech-a-nise</t></w>
-<w><t>mech-an-ism</t></w>
-<w><t>mech-a-nism</t></w>
+<w><t>mech-an-ism</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>mech-an-isma</t></w>
<w><t>mech-a-nis-mic</t></w>
<w><t>mech-a-nist</t></w>
@@ -94127,7 +94194,7 @@
<w><t>med-i-tat-ed</t></w>
<w><t>med-i-tat-ing</t></w>
<w><t>med-i-tat-ing-ly</t></w>
-<w><t>med-i-ta-tion</t><noun><singular/><convertible-to-possessive/></noun></w>
+<w><t>med-i-ta-tion</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>med-i-ta-tive-ly</t></w>
<w><t>med-i-ta-tive-ness</t></w>
<w><t>med-i-ta-tor</t></w>
@@ -95895,7 +95962,7 @@
<phrase><t>Mid-dle States</t></phrase>
<phrase><t>Mid-dle Tem-ple</t></phrase>
<phrase><t>mid-dle term</t></phrase>
-<w><t>Mid-dle-ton</t></w>
+<w><t>Mid-dle-ton</t><noun><pluralizable/><convertible-to-possessive/><proper/></noun></w>
<w><t>mid-dle-tone</t></w>
<w><t>Mid-dle-town</t></w>
<phrase><t>mid-dle watch</t></phrase>
@@ -96334,7 +96401,7 @@
<w><t>mine-field</t></w>
<w><t>mine-lay-er</t></w>
<w><t>Min-e-o-la</t></w>
-<w><t>min-er</t></w>
+<w><t>min-er</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>min-er-al</t></w>
<w><t>min-er-al-ise</t></w>
<w><t>min-er-al-ised</t></w>
@@ -97192,8 +97259,8 @@
<w><t>mis-spac-ing</t></w>
<w><t>mis-speak</t></w>
<w><t>mis-speak-ing</t></w>
-<w><t>mis-spell</t></w>
-<w><t>mis-spell-ing</t></w>
+<w><t>mis-spell</t><verb><regular-root/></verb></w>
+<w><t>mis-spell-ing</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>mis-spelt</t></w>
<w><t>mis-spend</t></w>
<w><t>mis-spoke</t></w>
@@ -97899,7 +97966,7 @@
<w><t>mo-nar-da</t></w>
<w><t>mon-as</t></w>
<w><t>mon-as-te-ri-al</t></w>
-<w><t>mon-as-ter-y</t></w>
+<w><t>mon-as-ter-y</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>mo-nas-tic</t></w>
<w><t>mo-nas-ti-cal</t></w>
<w><t>mo-nas-ti-cal-ly</t></w>
@@ -97964,11 +98031,11 @@
<w><t>mon-ger</t></w>
<w><t>mon-go</t></w>
<w><t>mon-goe</t></w>
-<w><t>Mon-gol</t></w>
+<w><t>Mon-gol</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>mon-gol</t></w>
<w><t>Mon-go-li-a</t></w>
<w><t>mon-go-li-an</t></w>
-<w><t>Mon-go-li-an</t></w>
+<w><t>Mon-go-li-an</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<phrase><t>mon-go-li-an id-i-o-cy</t></phrase>
<w><t>Mon-go-li-an-ism</t></w>
<phrase><t>Mon-go-li-an Peo-ple’s Re-pub-lic</t></phrase>
@@ -98869,7 +98936,7 @@
<w><t>moth-i-est</t></w>
<w><t>moth-proof</t></w>
<w><t>moth-y</t></w>
-<w><t>mo-tif</t></w>
+<w><t>mo-tif</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>Mo-ti-lal</t></w>
<w><t>mo-tile</t></w>
<w><t>mo-til-i-ty</t></w>
@@ -98942,7 +99009,11 @@
<w><t>mot-tled</t></w>
<w><t>mot-tle-ment</t></w>
<w><t>mot-tler</t></w>
-<w><t>mot-to</t></w>
+<w><t>mot-to</t><noun><singular/></noun></w>
+<word-choice>
+ <w><t>mot-toes</t><noun><plural/></noun></w>
+ <w><t>mot-tos</t><noun><plural/></noun></w>
+</word-choice>
<w><t>mot-tram-ite</t></w>
<w><t>Mo-tu</t></w>
<phrase><t>mo-tu pro-pri-o</t></phrase>
@@ -99301,7 +99372,7 @@
<w><t>Mul-ci-ber</t></w>
<w><t>mulct</t><noun><pluralizable/><convertible-to-possessive/></noun><verb/></w>
<w><t>Mul-doon</t></w>
-<w><t>mule</t><noun><plural/><convertible-to-possessive/></noun></w>
+<w><t>mule</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>Mule-shoe</t></w>
<phrase><t>mule skin-ner</t></phrase>
<w><t>mu-le-ta</t></w>
@@ -100270,9 +100341,13 @@
</section>
</section>
<section description="N">
+<section description="N abbrev">
<w><t>N/F</t></w>
<w><t>N/S/F</t></w>
<w><t>N.C.</t><abbrev referenced-word="North Carolina"/></w>
+</section>
+
+<section description="Na">
<w><t>NAAFI</t></w>
<w><t>nab</t></w>
<w><t>Na-bal</t></w>
@@ -100711,7 +100786,7 @@
<w><t>Na-tick</t></w>
<w><t>na-tion</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>Na-tion-al</t></w>
-<w><t>na-tion-al</t></w>
+<w><t>na-tion-al</t><noun><pluralizable/><convertible-to-possessive/></noun><adjective></adjective></w>
<phrase><t>na-tion-al ac-count-ing</t></phrase>
<phrase><t>na-tion-al an-them</t></phrase>
<phrase><t>Na-tion-al As-sem-bly</t></phrase>
@@ -100919,6 +100994,9 @@
<w><t>Na-zi-mo-va</t></w>
<w><t>na-zir</t></w>
<w><t>Naz-i-rite</t></w>
+</section>
+
+<section description="Nb to Nd">
<w><t>N-berg</t></w>
<w><t>NBG</t></w>
<w><t>N=bomb</t></w>
@@ -100929,6 +101007,9 @@
<w><t>Nde-be-le</t></w>
<w><t>Ndja-me-na</t></w>
<w><t>Ndo-la</t></w>
+</section>
+
+<section description="Ne">
<w><t>Ne-ae-ra</t></w>
<w><t>Neagh</t></w>
<w><t>Neal</t></w>
@@ -100953,6 +101034,7 @@
<w><t>neat</t><adjective><extensible/></adjective></w>
<w><t>neat-en</t></w>
<w><t>neath</t></w>
+<w><t>’neath</t><contraction referenced-word="beneath"/></w>
<w><t>neat-ly</t></w>
<w><t>neat-ness</t></w>
<w><t>neb</t></w>
@@ -101487,6 +101569,7 @@
<w><t>ne-ral</t></w>
<w><t>Ner-bud-da</t></w>
<w><t>NERC</t></w>
+<w><t>nerd</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>Ne-re-id</t></w>
<w><t>ne-re-is</t></w>
<w><t>Ne-re-us</t></w>
@@ -101752,7 +101835,7 @@
<w><t>ne-void</t></w>
<w><t>Nev-ski</t></w>
<w><t>ne-vus</t></w>
-<w><t>new</t></w>
+<w><t>new</t><adjective><extensible/></adjective></w>
<phrase><t>New Am-ster-dam</t></phrase>
<w><t>New-ark</t></w>
<phrase><t>New Bed-ford</t></phrase>
@@ -101866,7 +101949,7 @@
<w><t>news-i-ness</t></w>
<w><t>news-less</t></w>
<w><t>news-less-ness</t></w>
-<w><t>news-let-ter</t></w>
+<w><t>news-let-ter</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>news-mag-a-zine</t></w>
<w><t>news-man</t></w>
<w><t>news-mon-ger</t></w>
@@ -101906,6 +101989,9 @@
<w><t>nex-us</t></w>
<w><t>Ney</t></w>
<phrase><t>Nez Per-cé</t></phrase>
+</section>
+
+<section description="Nf to Ng">
<w><t>NFL</t><abbrev referenced-word="National Football League"/></w>
<w><t>NGA</t></w>
<w><t>ngai-o</t></w>
@@ -101916,6 +102002,9 @@
<w><t>ngo-ma</t></w>
<w><t>Ngu-ni</t></w>
<w><t>ngwee</t></w>
+</section>
+
+<section description="Ni">
<w><t>ni-a-cin</t></w>
<w><t>ni-a-cin-a-mide</t></w>
<w><t>Ni-ag-a-ra</t></w>
@@ -102419,6 +102508,9 @@
<w><t>ni-zam-ate</t></w>
<phrase><t>Nizh-ni Nov-go-rod</t></phrase>
<phrase><t>Nizh-ni Ta-gil</t></phrase>
+</section>
+
+<section description="Nj to Nn">
<w><t>Njord</t></w>
<w><t>Njorth</t></w>
<w><t>NKGB</t></w>
@@ -102432,6 +102524,9 @@
<w><t>Nnam-di</t></w>
<w><t>NNE</t></w>
<w><t>NNW</t></w>
+</section>
+
+<section description="No">
<w><t>no</t><noun><singular/></noun></w>
<w><t>no=ac-count</t></w>
<w><t>No-a-chi-an</t></w>
@@ -108337,6 +108432,9 @@
<w><t>Noyes</t></w>
<w><t>Noy-on</t></w>
<w><t>noz-zle</t></w>
+</section>
+
+<section description="Np to Nt">
<w><t>NPA</t></w>
<w><t>N-pak-tos</t></w>
<w><t>NPL</t></w>
@@ -108351,6 +108449,9 @@
<w><t>NTP</t></w>
<w><t>n=tu-ple</t></w>
<w><t>n=type</t></w>
+</section>
+
+<section description="Nu">
<w><t>NUAAW</t></w>
<w><t>nu-ance</t></w>
<w><t>nu-anc-es</t></w>
@@ -108645,8 +108746,14 @@
<w><t>nu=val-ue</t></w>
<phrase><t>nux vom-i-ca</t></phrase>
<w><t>nuz-zle</t></w>
+</section>
+
+<section description="Nv to Nw">
<w><t>n-v</t></w>
<w><t>NWT</t></w>
+</section>
+
+<section description="Ny to Nz">
<w><t>Ny-ack</t></w>
<w><t>nya-la</t></w>
<w><t>Nyan-ja</t></w>
@@ -108708,6 +108815,7 @@
<w><t>Nyx</t></w>
<w><t>NZBC</t></w>
</section>
+</section>
<section description="O">
<w><t>o/c</t></w>
@@ -109728,7 +109836,7 @@
<phrase><t>Old Har-ry</t></phrase>
<phrase><t>Old High Ger-man</t></phrase>
<phrase><t>Old Ice-land-ic</t></phrase>
-<w><t>old-ie</t></w>
+<w><t>old-ie</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<phrase><t>Old I-rish</t></phrase>
<phrase><t>Old King-dom</t></phrase>
<phrase><t>old la-dy</t></phrase>
@@ -110048,7 +110156,7 @@
<w><t>on-lay</t></w>
<w><t>on-lay-ing</t></w>
<w><t>on=lim-its</t></w>
-<w><t>on=line</t></w>
+<w><t>on-line</t><adjective></adjective><adverb/></w>
<w><t>on-look-er</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>on-ly</t></w>
<w><t>on-ly=be-got-ten</t></w>
@@ -110493,7 +110601,7 @@
<w><t>op-ti-mized</t></w>
<w><t>op-ti-miz-ing</t></w>
<w><t>op-ti-mum</t></w>
-<w><t>op-tion</t></w>
+<w><t>op-tion</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>op-tion-al</t></w>
<w><t>op-tion-al-i-ty</t></w>
<w><t>op-tion-al-ly</t></w>
@@ -110812,7 +110920,7 @@
<w><t>Or-i-gen-ism</t></w>
<w><t>Or-i-gen-ist</t></w>
<w><t>Or-i-gen-is-tic</t></w>
-<w><t>or-i-gin</t></w>
+<w><t>or-i-gin</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>o-rig-i-na-ble</t></w>
<w><t>o-rig-i-nal</t><noun><pluralizable/><convertible-to-possessive/></noun><adjective/></w>
<w><t>o-rig-i-nal-i-ty</t></w>
@@ -114016,11 +114124,12 @@
<w><t>o-ver-se-cu-ri-ty</t></w>
<w><t>o-ver-se-cur-ly</t></w>
<w><t>o-ver-se-da-tion</t></w>
-<w><t>o-ver-see</t></w>
+<w><t>o-ver-see</t><verb><regular-root value="false"/></verb></w>
<w><t>o-ver-seed</t></w>
<w><t>o-ver-see-ing</t></w>
<w><t>o-ver-seen</t></w>
<w><t>o-ver-se-er</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
+<w><t>o-ver-sees</t><verb><lemma>oversee</lemma></verb></w>
<w><t>o-ver-sell</t></w>
<w><t>o-ver-sell-ing</t></w>
<w><t>o-ver-sen-si-ble</t></w>
@@ -114489,7 +114598,7 @@
<w><t>Ox-en-stjer-na</t></w>
<w><t>ox-eye</t></w>
<w><t>ox=eyed</t></w>
-<w><t>Ox-ford</t></w>
+<w><t>Ox-ford</t><noun><convertible-to-possessive/></noun></w>
<w><t>ox-ford</t></w>
<phrase><t>Ox-ford ac-cent</t></phrase>
<phrase><t>Ox-ford bags</t></phrase>
@@ -116215,7 +116324,7 @@
<w><t>parl-ey-voo</t></w>
<w><t>par-lia-ment</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>Par-lia-ment</t></w>
-<w><t>par-lia-men-tar-i-an</t></w>
+<w><t>par-lia-men-tar-i-an</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>Par-lia-men-tar-i-an</t></w>
<w><t>par-lia-men-tar-i-an-ism</t></w>
<w><t>par-lia-men-ta-ri-ly</t></w>
@@ -117465,7 +117574,7 @@
<w><t>pee-wee</t></w>
<w><t>pee-wit</t></w>
<w><t>Peg</t></w>
-<w><t>peg</t></w>
+<w><t>peg</t><noun><pluralizable/><convertible-to-possessive/></noun><verb><regular-root/></verb></w>
<w><t>Pe-ga-si-an</t></w>
<w><t>Peg-a-sus</t></w>
<w><t>peg-board</t></w>
@@ -119106,6 +119215,7 @@
<w><t>pfen-nigs</t></w>
<w><t>Pfitz-ner</t></w>
<w><t>Pforz-heim</t></w>
+<w><t>pg.</t><abbrev referenced-word="page"/></w>
<w><t>PGA</t></w>
<w><t>phac-o-lite</t></w>
<w><t>Phae-a</t></w>
@@ -119735,8 +119845,8 @@
<w><t>pho-to-con-duc-tive</t></w>
<w><t>pho-to-con-duc-tiv-i-ty</t></w>
<w><t>pho-to-con-duc-tor</t></w>
-<w><t>pho-to-cop-i-er</t></w>
-<w><t>pho-to-cop-y</t></w>
+<w><t>pho-to-cop-i-er</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
+<w><t>pho-to-cop-y</t><noun><pluralizable/><convertible-to-possessive/></noun><verb><regular-root/></verb></w>
<w><t>pho-to-cur-rent</t></w>
<w><t>pho-to-dis-in-te-gra-tion</t></w>
<w><t>pho-to-dis-so-ci-a-tion</t></w>
@@ -120413,7 +120523,7 @@
<w><t>pig-gish-ly</t></w>
<w><t>pig-gish-ness</t></w>
<w><t>Pig-gott</t></w>
-<w><t>pig-gy</t></w>
+<w><t>pig-gy</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>pig-gy-back</t></w>
<phrase><t>pig-gy bank</t></phrase>
<w><t>pig=head-ed</t></w>
@@ -120578,7 +120688,7 @@
<w><t>pim-ple</t></w>
<w><t>pim-pled</t></w>
<w><t>pim-ply</t></w>
-<w><t>pin</t></w>
+<w><t>pin</t><noun><pluralizable/><convertible-to-possessive/></noun><verb><regular-root/></verb></w>
<w><t>pi-ña</t></w>
<w><t>pi-na-ceous</t></w>
<phrase><t>pi-na cloth</t></phrase>
@@ -121671,7 +121781,7 @@
<w><t>plo-ce</t></w>
<w><t>plod</t></w>
<w><t>plod-ded</t></w>
-<w><t>plod-der</t></w>
+<w><t>plod-der</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>plod-ding</t></w>
<w><t>plod-ding-ly</t></w>
<w><t>plod-ding-ness</t></w>
@@ -122002,8 +122112,8 @@
<w><t>po-em</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>poe-nol-o-gy</t></w>
<w><t>po-e-sy</t></w>
-<w><t>poet</t></w>
<w><t>po-et</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
+<w><t>poet.</t><abbrev referenced-word="poetic"/></w>
<w><t>po-et-as-ter</t></w>
<w><t>po-et-as-ter-ing</t></w>
<w><t>po-et-as-ter-ism</t></w>
@@ -123244,7 +123354,7 @@
<w><t>post-en-ceph-a-lit-ic</t></w>
<w><t>post=E-o-cene</t></w>
<w><t>post-ep-i-lep-tic</t></w>
-<w><t>post-er</t></w>
+<w><t>post-er</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<phrase><t>poste res-tante</t></phrase>
<w><t>pos-ter-i-ad</t></w>
<w><t>pos-te-ri-or</t></w>
@@ -131042,6 +131152,7 @@
</section>
<section description="Q">
+<w><t>q</t><abbrev referenced-word="question"/><noun><pluralizable/></noun></w>
<w><t>q. v.</t><abbrev referenced-word="quod vode (for which, see)"/></w>
<phrase><t>Qa-boos bin Said</t></phrase>
<w><t>Qad-a-rite</t></w>
@@ -133858,7 +133969,7 @@
<w><t>re-a-rouse</t></w>
<w><t>re-a-roused</t></w>
<w><t>re-a-rous-ing</t></w>
-<w><t>re-ar-range</t></w>
+<w><t>re-ar-range</t><verb><regular-root/></verb></w>
<w><t>re-ar-range-a-ble</t></w>
<w><t>re-ar-ranged</t></w>
<w><t>re-ar-range-ment</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
@@ -133997,8 +134108,10 @@
<w><t>Re-bec-ca</t></w>
<w><t>re-beck</t></w>
<w><t>Re-bek-ah</t></w>
-<w><t>reb-el</t></w>
-<w><t>re-bel</t><noun><pluralizable/><convertible-to-possessive/></noun><verb><regular-root/></verb></w>
+<ambiguous-word>
+ <w><t>reb-el</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
+ <w><t>re-bel</t><verb><regular-root/></verb></w>
+</ambiguous-word>
<w><t>reb-el-dom</t></w>
<w><t>reb-el-like</t></w>
<w><t>re-bel-lion</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
@@ -136645,7 +136758,7 @@
<w><t>re-mod-u-lat-ed</t></w>
<w><t>re-mod-u-lat-ing</t></w>
<w><t>re-mo-lade</t></w>
-<w><t>re-mold</t></w>
+<w><t>re-mold</t><verb><regular-root/></verb></w>
<w><t>re-mol-li-fied</t></w>
<w><t>re-mol-li-fy</t></w>
<w><t>re-mol-li-fy-ing</t></w>
@@ -137072,7 +137185,7 @@
<w><t>re-pique</t></w>
<w><t>re-place</t><verb><regular-root/></verb></w>
<w><t>re-placed</t></w>
-<w><t>re-place-ment</t></w>
+<w><t>re-place-ment</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>re-plac-ing</t></w>
<w><t>re-plan</t></w>
<w><t>re-plane</t></w>
@@ -137497,7 +137610,7 @@
<w><t>res-e-da</t></w>
<w><t>re-se-da</t></w>
<w><t>res-e-da-ceous</t></w>
-<w><t>re-seed</t></w>
+<w><t>re-seed</t><verb><regular-root/></verb></w>
<w><t>re-seek</t></w>
<w><t>re-seek-ing</t></w>
<w><t>re-seg-re-gate</t></w>
@@ -139005,7 +139118,7 @@
<w><t>rhum-ba</t></w>
<w><t>rhum-ba-tron</t></w>
<w><t>rhy-ac-o-lite</t></w>
-<w><t>rhyme</t></w>
+<w><t>rhyme</t><noun><pluralizable/><convertible-to-possessive/></noun><verb><regular-root/></verb></w>
<phrase><t>rhyme roy-al</t></phrase>
<w><t>rhyme-ster</t></w>
<w><t>rhym-ing</t></w>
@@ -141198,7 +141311,7 @@
<w><t>sad</t><adjective><extensible/></adjective></w>
<w><t>sa-da-qat</t></w>
<w><t>Sa-dat</t></w>
-<w><t>sad-den</t></w>
+<w><t>sad-den</t><verb><regular-root/></verb></w>
<w><t>sad-dhu</t></w>
<w><t>sad-dle</t><noun><pluralizable/><convertible-to-possessive/></noun><verb><regular-root/></verb></w>
<w><t>sad-dle-back</t></w>
@@ -141287,7 +141400,7 @@
<w><t>saf-ra-nine</t></w>
<w><t>saf-rol</t></w>
<w><t>saf-role</t></w>
-<w><t>sag</t></w>
+<w><t>sag</t><verb><regular-root/></verb></w>
<w><t>sa-ga</t></w>
<w><t>sa-ga-cious</t></w>
<w><t>sa-ga-cious-ly</t></w>
@@ -141725,7 +141838,7 @@
<w><t>sal-vag-er</t></w>
<w><t>sal-vag-ing</t></w>
<w><t>Sal-var-san</t></w>
-<w><t>sal-va-tion</t></w>
+<w><t>sal-va-tion</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>sal-va-tion-al</t></w>
<phrase><t>Sal-va-tion Ar-my</t></phrase>
<w><t>sal-va-tion-ism</t></w>
@@ -142550,8 +142663,7 @@
<w><t>sav-ing-ly</t></w>
<phrase><t>sav-ings ac-count</t></phrase>
<phrase><t>sav-ings bank</t></phrase>
-<w><t>sav-ior</t></w>
-<w><t>Sav-ior</t></w>
+<w><t>sav-ior</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>sav-ior-hood</t></w>
<w><t>sav-ior-ship</t></w>
<w><t>sav-iour</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
@@ -143135,10 +143247,10 @@
<w><t>school-child</t></w>
<w><t>school-chil-dren</t></w>
<w><t>School-craft</t></w>
-<w><t>school-fel-low</t></w>
-<w><t>school-girl</t></w>
+<w><t>school-fel-low</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
+<w><t>school-girl</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>school-girl-ish</t></w>
-<w><t>school-house</t></w>
+<w><t>school-house</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>school-hous-es</t></w>
<w><t>school-ie</t></w>
<w><t>school-ing</t></w>
@@ -146701,6 +146813,7 @@
<w><t>se-tal</t></w>
<w><t>se-tar-i-a</t></w>
<phrase><t>set a-side</t></phrase>
+<w><t>set-back</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>Se-t-bal</t></w>
<phrase><t>set chis-el</t></phrase>
<phrase><t>se ten-ant</t></phrase>
@@ -146812,7 +146925,7 @@
<w><t>Sé-vi-gné</t></w>
<w><t>Se-ville</t></w>
<phrase><t>Se-ville or-ange</t></phrase>
-<w><t>sew</t></w>
+<w><t>sew</t><verb><regular-root/></verb></w>
<w><t>sew-a-ble</t></w>
<w><t>sew-age</t></w>
<phrase><t>sew-age farm</t></phrase>
@@ -147758,7 +147871,7 @@
<phrase><t>shoot-ing star</t></phrase>
<phrase><t>shoot-ing stick</t></phrase>
<w><t>shoots</t><verb><vf></vf></verb></w>
-<w><t>shop</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
+<w><t>shop</t><noun><pluralizable/><convertible-to-possessive/></noun><verb><regular-root/></verb></w>
<phrase><t>shop a-round</t></phrase>
<phrase><t>shop as-sis-tant</t></phrase>
<w><t>shop-ful</t></w>
@@ -148128,7 +148241,7 @@
<w><t>Sic-i-ly</t></w>
<w><t>sick</t></w>
<w><t>sick-bay</t></w>
-<w><t>sick-en</t></w>
+<w><t>sick-en</t><verb><regular-root/></verb></w>
<w><t>sick-en-er</t></w>
<w><t>sick-en-ing</t></w>
<w><t>sick-en-ing-ly</t></w>
@@ -149844,7 +149957,7 @@
<w><t>sluice-way</t></w>
<w><t>sluic-ing</t></w>
<w><t>sluit</t></w>
-<w><t>slum</t></w>
+<w><t>slum</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>slum-ber</t><noun><pluralizable/><convertible-to-possessive/></noun><verb><regular-root/></verb></w>
<w><t>slum-ber-er</t></w>
<w><t>slum-ber-land</t></w>
@@ -149958,7 +150071,8 @@
<w><t>smear-i-est</t></w>
<w><t>smear-i-ness</t></w>
<w><t>smear-y</t></w>
-<w><t>Smea-ton</t></w>
+<w><t>Smea-ton</t><noun><pluralizable/><convertible-to-possessive/><proper/></noun></w>
+<w><t>Smea-ton-i-an</t><adjective/></w>
<w><t>smec-tic</t></w>
<w><t>Smed-ley</t></w>
<w><t>smeek</t></w>
@@ -150595,7 +150709,7 @@
<w><t>so-ci-op-a-thy</t></w>
<w><t>so-ci-o-po-lit-i-cal</t></w>
<w><t>so-ci-o-psy-cho-log-i-cal</t></w>
-<w><t>sock</t></w>
+<w><t>sock</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<phrase><t>sock a-way</t></phrase>
<w><t>sock-dol-a-ger</t></w>
<w><t>sock-dol-o-ger</t></w>
@@ -151011,7 +151125,7 @@
<w><t>some-day</t></w>
<w><t>some-deal</t></w>
<w><t>some-how</t></w>
-<w><t>some-one</t></w>
+<w><t>some-one</t><noun><singular/><convertible-to-possessive/></noun><pronoun></pronoun></w>
<w><t>some-place</t></w>
<w><t>Som-er-dale</t></w>
<w><t>som-er-sault</t></w>
@@ -151104,7 +151218,7 @@
<w><t>so-nif-er-ous</t></w>
<w><t>son-less</t></w>
<w><t>son-like</t></w>
-<w><t>son-net</t></w>
+<w><t>son-net</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>son-net-eer</t></w>
<w><t>son-net-ise</t></w>
<w><t>son-net-ised</t></w>
@@ -151573,7 +151687,7 @@
<w><t>Spa</t></w>
<w><t>Spaak</t></w>
<w><t>Spaatz</t></w>
-<w><t>space</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
+<w><t>space</t><noun><pluralizable/><convertible-to-possessive/></noun><verb><regular-root/></verb></w>
<w><t>space-band</t></w>
<phrase><t>space cap-sule</t></phrase>
<w><t>space-craft</t></w>
@@ -151636,7 +151750,7 @@
<w><t>spal-peen</t></w>
<w><t>Spam</t></w>
<w><t>Span</t></w>
-<w><t>span</t></w>
+<w><t>span</t><noun><pluralizable/><convertible-to-possessive/></noun><verb><regular-root/></verb></w>
<w><t>spa-nae-mi-a</t></w>
<w><t>spa-nae-mic</t></w>
<w><t>span-cel</t></w>
@@ -151705,7 +151819,7 @@
<w><t>spar-ing</t></w>
<w><t>spar-ing-ly</t></w>
<w><t>spar-ing-ness</t></w>
-<w><t>spark</t></w>
+<w><t>spark</t><noun><pluralizable/><convertible-to-possessive/></noun><verb><regular-root/></verb></w>
<w><t>Spark</t></w>
<phrase><t>spark cham-ber</t></phrase>
<w><t>spark-er</t></w>
@@ -152026,7 +152140,7 @@
<w><t>spell-down</t></w>
<w><t>spell-er</t></w>
<w><t>spel-li-can</t></w>
-<w><t>spell-ing</t></w>
+<w><t>spell-ing</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<phrase><t>spell-ing bee</t></phrase>
<w><t>spell-ing-ly</t></w>
<phrase><t>spell-ing pro-nun-ci-a-tion</t></phrase>
@@ -152947,7 +153061,7 @@
<w><t>spur</t><noun><pluralizable/><convertible-to-possessive/></noun><verb><regular-root/></verb></w>
<w><t>spurge</t></w>
<phrase><t>spurge lau-rel</t></phrase>
-<w><t>Spur-geon</t></w>
+<w><t>Spur-geon</t><noun><pluralizable/><convertible-to-possessive/><proper/></noun></w>
<w><t>spu-ri-ous</t></w>
<w><t>spu-ri-ous-ly</t></w>
<w><t>spu-ri-ous-ness</t></w>
@@ -152962,7 +153076,7 @@
<w><t>spurr-ite</t></w>
<w><t>spur=row-el</t></w>
<w><t>spur-ry</t></w>
-<w><t>spurt</t></w>
+<w><t>spurt</t><noun><pluralizable/><convertible-to-possessive/></noun><verb><regular-root/></verb></w>
<w><t>spurt-er</t></w>
<w><t>spur-tive</t></w>
<w><t>spur-tive-ly</t></w>
@@ -153259,7 +153373,7 @@
<w><t>stad-le</t></w>
<w><t>stadt-hold-er</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>stadt-hold-er-ship</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
-<w><t>staff</t></w>
+<w><t>staff</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>Staf-fa</t></w>
<phrase><t>staff col-lege</t></phrase>
<w><t>staff-er</t></w>
@@ -153875,11 +153989,12 @@
<w><t>steel-work</t></w>
<w><t>steel-work-er</t></w>
<w><t>steel-works</t></w>
+<w><t>steel-y</t><adjective><extensible/></adjective></w>
<w><t>steel-yard</t></w>
<w><t>Steen</t></w>
<w><t>steen-bok</t></w>
<w><t>steen-ing</t></w>
-<w><t>steep</t></w>
+<w><t>steep</t><noun><pluralizable/><convertible-to-possessive/></noun><verb><regular-root/></verb><adjective><extensible/></adjective></w>
<w><t>steep-en</t></w>
<w><t>steep-er</t></w>
<w><t>stee-ple</t></w>
@@ -154999,7 +155114,7 @@
<w><t>streak-like</t></w>
<w><t>streak-y</t></w>
<w><t>stream</t><noun><pluralizable/><convertible-to-possessive/></noun><verb><regular-root/></verb></w>
-<w><t>stream-er</t></w>
+<w><t>stream-er</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>stream-i-er</t></w>
<w><t>stream-i-est</t></w>
<w><t>stream-i-ness</t></w>
@@ -158734,7 +158849,7 @@
<w><t>Sup-pé</t></w>
<w><t>sup-pe-da-ne-a</t></w>
<w><t>sup-pe-da-ne-um</t></w>
-<w><t>sup-per</t></w>
+<w><t>sup-per</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<phrase><t>sup-per club</t></phrase>
<w><t>sup-per-less</t></w>
<w><t>sup-per-time</t></w>
@@ -159628,7 +159743,7 @@
<w><t>syl-la-bize</t></w>
<w><t>syl-la-bized</t></w>
<w><t>syl-la-biz-ing</t></w>
-<w><t>syl-la-ble</t></w>
+<w><t>syl-la-ble</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>syl-lab-o-gram</t></w>
<w><t>syl-lab-og-ra-phy</t></w>
<w><t>syl-la-bub</t></w>
@@ -160110,6 +160225,7 @@
</section>
<section description="T">
+<section description="Ta">
<w><t>Taal</t></w>
<w><t>Ta-al</t></w>
<w><t>taa-ta</t></w>
@@ -160159,7 +160275,7 @@
<phrase><t>ta-ble salt</t></phrase>
<w><t>ta-ble-spoon</t></w>
<w><t>ta-ble-spoon-ful</t></w>
-<w><t>tab-let</t></w>
+<w><t>tab-let</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>tab-let-ed</t></w>
<phrase><t>ta-ble ten-nis</t></phrase>
<w><t>tab-let-ing</t></w>
@@ -160257,7 +160373,7 @@
<w><t>tack-ies</t></w>
<w><t>tack-i-est</t></w>
<w><t>tack-i-ness</t></w>
-<w><t>tack-le</t></w>
+<w><t>tack-le</t><noun><pluralizable/><convertible-to-possessive/></noun><verb><regular-root/></verb></w>
<w><t>tack-ler</t></w>
<w><t>tack-less</t></w>
<w><t>tack-ling</t></w>
@@ -161188,6 +161304,9 @@
<phrase><t>Tay-side Re-gion</t></phrase>
<w><t>Taze-well</t></w>
<w><t>taz-za</t></w>
+</section>
+
+<section description="Tb to Td">
<w><t>T=bev-el</t></w>
<w><t>T-bi</t></w>
<w><t>Tbi-li-si</t></w>
@@ -161200,6 +161319,9 @@
<w><t>tcher-vo-netz</t></w>
<w><t>tcher-vo-von-tzi</t></w>
<phrase><t>t dis-tri-bu-tion</t></phrase>
+</section>
+
+<section description="Te to Tg">
<w><t>tea</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>tea-ber-ry</t></w>
<phrase><t>tea bis-cuit</t></phrase>
@@ -162369,7 +162491,7 @@
<w><t>text</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>text-book</t></w>
<w><t>text-book-ish</t></w>
-<w><t>tex-tile</t></w>
+<w><t>tex-tile</t><noun><pluralizable/><convertible-to-possessive/></nou...
[truncated message content] |
|
From: <vic...@us...> - 2026-07-31 09:57:34
|
Revision: 14955
http://sourceforge.net/p/foray/code/14955
Author: victormote
Date: 2026-07-31 09:57:31 +0000 (Fri, 31 Jul 2026)
Log Message:
-----------
Conform to aXSL change: Add word-choice element to group proper but conflicting spellings together.
Modified Paths:
--------------
trunk/foray/foray-orthography/src/main/data/dictionaries/eng-Latn-ZZZ.dict.xml
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/util/DictionaryParser.java
Modified: trunk/foray/foray-orthography/src/main/data/dictionaries/eng-Latn-ZZZ.dict.xml
===================================================================
--- trunk/foray/foray-orthography/src/main/data/dictionaries/eng-Latn-ZZZ.dict.xml 2026-07-30 17:23:12 UTC (rev 14954)
+++ trunk/foray/foray-orthography/src/main/data/dictionaries/eng-Latn-ZZZ.dict.xml 2026-07-31 09:57:31 UTC (rev 14955)
@@ -63599,8 +63599,10 @@
<w><t>Good-a-cre</t></w>
<phrase><t>good af-ter-noon</t></phrase>
<phrase><t>good ar-vo</t></phrase>
-<w><t>good-by</t></w>
-<w><t>good-bye</t></w>
+<word-choice>
+ <w><t>good-bye</t><noun><pluralizable/></noun><interjection/></w>
+ <w><t>good-by</t><noun><pluralizable/></noun><interjection/></w>
+</word-choice>
<phrase><t>good eve-ning</t></phrase>
<w><t>good=fel-low-ship</t></w>
<w><t>good=for=noth-ing</t></w>
Modified: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/util/DictionaryParser.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/util/DictionaryParser.java 2026-07-30 17:23:12 UTC (rev 14954)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/util/DictionaryParser.java 2026-07-31 09:57:31 UTC (rev 14955)
@@ -193,6 +193,9 @@
/** The system ID of the input source being parsed. */
private URL systemId;
+ /** The list of words inside a word-choice element. */
+ private List<StringWord> currentWordChoice;
+
/**
* Constructor.
* @param orthographyServer The orthography server.
@@ -362,6 +365,7 @@
StringUtils.EMPTY_STRING, attributes, "allow-duplicates", false);
this.lastWord = StringUtils.EMPTY_STRING;
+ this.currentWordChoice = null;
break;
}
case "import-standard-dictionary": {
@@ -463,6 +467,11 @@
this.unresolvedDuplicate = true;
break;
}
+ /* TODO: Store word-choice in a way that allows a selection to be enforced. */
+ case "word-choice": {
+ this.currentWordChoice = new ArrayList<StringWord>(2);
+ break;
+ }
default: {
throw new IllegalStateException("Unknown element started: " + localName + ", " +
getLocationString(getLocator()));
@@ -479,8 +488,13 @@
case "w": {
final StringWord word = new StringWord(this.posBuilder.value(), this.currentSegments);
final String actualContent = word.getActualContent().toString();
- checkCollation(actualContent, word.getCollatingContent().toString());
+ /* Within a word-choice, the words may be out of order, so we check only the first item. */
+ if (this.currentWordChoice == null
+ || this.currentWordChoice.size() < 1) {
+ checkCollation(actualContent, word.getCollatingContent().toString());
+ }
+
if (this.ambiguousWordComponents == null) {
/* Add it to normal words. */
if (this.currentDictionaryElement.wordMap.get(actualContent) == null) {
@@ -494,6 +508,9 @@
} else {
this.ambiguousWordComponents.add(word);
}
+ if (this.currentWordChoice != null) {
+ this.currentWordChoice.add(word);
+ }
break;
}
case "t": {
@@ -626,6 +643,10 @@
this.unresolvedDuplicate = false;
break;
}
+ case "word-choice": {
+ this.currentWordChoice = null;
+ break;
+ }
default: {
throw new IllegalStateException("Unknown element ended: " + localName);
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <vic...@us...> - 2026-07-30 17:23:15
|
Revision: 14954
http://sourceforge.net/p/foray/code/14954
Author: victormote
Date: 2026-07-30 17:23:12 +0000 (Thu, 30 Jul 2026)
Log Message:
-----------
Minor cleanup.
Modified Paths:
--------------
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/util/SpellChecker.java
Modified: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/util/SpellChecker.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/util/SpellChecker.java 2026-07-30 17:05:44 UTC (rev 14953)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/util/SpellChecker.java 2026-07-30 17:23:12 UTC (rev 14954)
@@ -367,7 +367,6 @@
element.column = columnString == null ? -1 : Integer.parseInt(columnString);
element.xpath = XPATH_ATTRIBUTE.getValue(attributes);
this.elementStack.push(element);
-
}
@Override
@@ -375,15 +374,13 @@
if (this.elementStack.size() < 1) {
throw new SAXException("Element stack is empty but should not be.");
}
- final WritingSystem4a oldWritingSystem = getCurrentWritingSystem();
- final Element element;
+ final Element currentElement = this.elementStack.peek();
+
if ("marker".equals(localName)) {
- /* The "marker" element did not go on the stack. Don't pop it or check it. */
- element = null;
+ /* The "marker" element did not go on the stack. Don't try to check it. */
} else {
- element = this.elementStack.pop();
- if (! element.matches(uri, localName, qName)) {
+ if (! currentElement.matches(uri, localName, qName)) {
throw new SAXException("Closing element does not match top of stack.");
}
}
@@ -394,15 +391,14 @@
* startElement. What is in the text buffer right now should be exactly the content of the "word"
* element. */
final String text = getAndClearText();
- lexer.addWordToken(text, oldWritingSystem);
+ lexer.addWordToken(text, getCurrentWritingSystem());
break;
}
case ("text"): {
/* We are at the end of a terminal element. Check the spelling. */
final String text = getAndClearText();
- lexer.addUntokenized(text, oldWritingSystem);
- final TextElement textElement = (TextElement) element;
- checkWords(textElement);
+ lexer.addUntokenized(text, getCurrentWritingSystem());
+ checkWords();
break;
}
case ("marker"): {
@@ -419,14 +415,20 @@
throw new SAXException("Unexpected end element: " + localName);
}
}
+
+ if ("marker".equals(localName)) {
+ /* The "marker" element did not go on the stack. Don't pop it or check it. */
+ } else {
+ this.elementStack.pop();
+ }
+
}
/**
* Iterate the tokens from the Lexer and spell-check the words.
- * @param element The element containing the content being tokenized.
*/
- private void checkWords(final TextElement element) {
+ private void checkWords() {
this.lexer.lock();
/* Writing system should never be null, but orthography could be. */
@@ -450,7 +452,7 @@
} else {
final Word4a word = orthography.recognizeWord(token, this.lexer);
if (word == null) {
- final String message = createNotFoundMessage(token, element);
+ final String message = createNotFoundMessage(token);
this.output.println(message);
this.notFoundCounter ++;
}
@@ -463,20 +465,20 @@
/**
* Creates the text message to be reported to the user if a token is not found.
* @param token The token being reported.
- * @param element The raw element containing {@code token}.
* @return The message to be reported to the user.
*/
- String createNotFoundMessage(final Lexer.Token token, final TextElement element) {
-
+ String createNotFoundMessage(final Lexer.Token token) {
final FlowElement flowElement = getCurrentFlow();
+ final Element topElement = this.elementStack.peek();
+ final TextElement textElement = (TextElement) topElement;
final String lineAndColumn;
- if (element.line != -1
- | element.column != -1) {
- final int actualLine = element.line + token.getLine() - 1;
+ if (textElement.line != -1
+ | textElement.column != -1) {
+ final int actualLine = textElement.line + token.getLine() - 1;
int actualColumn = token.getColumn();
if (token.getLine() == 1) {
- actualColumn += element.column;
+ actualColumn += textElement.column;
}
lineAndColumn = String.format(" (%s:%s)", actualLine, actualColumn);
} else {
@@ -484,10 +486,10 @@
}
final String xpath;
- if (element.xpath == null) {
+ if (textElement.xpath == null) {
xpath = StringUtils.EMPTY_STRING;
} else {
- xpath = String.format(" (xpath: %s)", element.xpath);
+ xpath = String.format(" (xpath: %s)", textElement.xpath);
}
final String marker;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <vic...@us...> - 2026-07-30 17:05:47
|
Revision: 14953
http://sourceforge.net/p/foray/code/14953
Author: victormote
Date: 2026-07-30 17:05:44 +0000 (Thu, 30 Jul 2026)
Log Message:
-----------
Fix problem of nested text elements picking up the wrong writing system.
Modified Paths:
--------------
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/util/SpellChecker.java
Modified: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/util/SpellChecker.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/util/SpellChecker.java 2026-07-30 16:19:25 UTC (rev 14952)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/util/SpellChecker.java 2026-07-30 17:05:44 UTC (rev 14953)
@@ -322,6 +322,9 @@
break;
}
case ("text"): {
+ /* Push any existing content to the lexer. */
+ final String text = getAndClearText();
+ lexer.addUntokenized(text, oldWritingSystem);
createAndPushTextElement(uri, localName, qName, attributes);
break;
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <vic...@us...> - 2026-07-30 16:19:28
|
Revision: 14952
http://sourceforge.net/p/foray/code/14952
Author: victormote
Date: 2026-07-30 16:19:25 +0000 (Thu, 30 Jul 2026)
Log Message:
-----------
1. Remove requirement for server to create a Lexer4a. 2. Roll up SpellChecker method, for clarity.
Modified Paths:
--------------
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/Lexer4a.java
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/LexerIcu4jBreakIterator.java
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/LexerJavaBreakIterator.java
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/OrthographyServer4aStandard.java
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/util/SpellChecker.java
trunk/foray/foray-orthography/src/test/java/org/foray/orthography/LexerEnglishIcu4jTests.java
trunk/foray/foray-orthography/src/test/java/org/foray/orthography/LexerEnglishJavaTests.java
Modified: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/Lexer4a.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/Lexer4a.java 2026-07-30 14:13:14 UTC (rev 14951)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/Lexer4a.java 2026-07-30 16:19:25 UTC (rev 14952)
@@ -349,10 +349,8 @@
/**
* Constructor.
- * @param server The parent server.
*/
- public Lexer4a(final OrthographyServer4aStandard server) {
-// this.server = server;
+ public Lexer4a() {
this.isLocked = false;
this.iteratorIndex = 0;
}
Modified: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/LexerIcu4jBreakIterator.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/LexerIcu4jBreakIterator.java 2026-07-30 14:13:14 UTC (rev 14951)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/LexerIcu4jBreakIterator.java 2026-07-30 16:19:25 UTC (rev 14952)
@@ -52,14 +52,6 @@
* are cached because they are expensive to create. */
private Map<WritingSystem, BreakIterator> iteratorMap = new HashMap<WritingSystem, BreakIterator>();
- /**
- * Constructor.
- * @param server The parent server.
- */
- public LexerIcu4jBreakIterator(final OrthographyServer4aStandard server) {
- super(server);
- }
-
@Override
protected IntSequence findRawBreaks(final CharSequence sequence, final WritingSystem writingSystem) {
BreakIterator wordBreakIterator = this.iteratorMap.get(writingSystem);
Modified: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/LexerJavaBreakIterator.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/LexerJavaBreakIterator.java 2026-07-30 14:13:14 UTC (rev 14951)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/LexerJavaBreakIterator.java 2026-07-30 16:19:25 UTC (rev 14952)
@@ -42,14 +42,6 @@
*/
public class LexerJavaBreakIterator extends Lexer4a {
- /**
- * Constructor.
- * @param server The parent server.
- */
- public LexerJavaBreakIterator(final OrthographyServer4aStandard server) {
- super(server);
- }
-
@Override
protected IntSequence findRawBreaks(final CharSequence sequence, final WritingSystem writingSystem) {
final IntArrayBuilder result = new IntArrayBuilder(sequence.length());
Modified: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/OrthographyServer4aStandard.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/OrthographyServer4aStandard.java 2026-07-30 14:13:14 UTC (rev 14951)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/OrthographyServer4aStandard.java 2026-07-30 16:19:25 UTC (rev 14952)
@@ -176,7 +176,7 @@
@Override
public Lexer4a getLexer() {
if (this.lexer == null) {
- this.lexer = new LexerJavaBreakIterator(this);
+ this.lexer = new LexerJavaBreakIterator();
}
return this.lexer;
}
Modified: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/util/SpellChecker.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/util/SpellChecker.java 2026-07-30 14:13:14 UTC (rev 14951)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/util/SpellChecker.java 2026-07-30 16:19:25 UTC (rev 14952)
@@ -440,7 +440,18 @@
orthography = this.server.getOrthography(token.getWritingSystem());
}
lastWritingSystem = token.getWritingSystem();
- checkWord(orthography, token, element);
+ if (orthography == null) {
+ /* Treat as an error. */
+ final String message = "(no config) " + token.getText();
+ this.output.println(message);
+ } else {
+ final Word4a word = orthography.recognizeWord(token, this.lexer);
+ if (word == null) {
+ final String message = createNotFoundMessage(token, element);
+ this.output.println(message);
+ this.notFoundCounter ++;
+ }
+ }
}
}
lexer.clear();
@@ -447,30 +458,6 @@
}
/**
- * Spell-check a word.
- * @param orthography The orthography to be used to spell-check {@code word}.
- * @param token The word token to be checked.
- * @param element The element containing the content being tokenized.
- */
- private void checkWord(final Orthography4a orthography, final Lexer4a.Token4a token, final TextElement element) {
- if (orthography == null) {
- /* Treat as an error. */
- final String message = "(no config) " + token.getText();
- this.output.println(message);
- } else {
- final Word4a word = orthography.recognizeWord(token, this.lexer);
- if (word != null) {
- return;
- }
- }
-
- final String message = createNotFoundMessage(token, element);
- this.output.println(message);
- this.notFoundCounter ++;
- }
-
-
- /**
* Creates the text message to be reported to the user if a token is not found.
* @param token The token being reported.
* @param element The raw element containing {@code token}.
Modified: trunk/foray/foray-orthography/src/test/java/org/foray/orthography/LexerEnglishIcu4jTests.java
===================================================================
--- trunk/foray/foray-orthography/src/test/java/org/foray/orthography/LexerEnglishIcu4jTests.java 2026-07-30 14:13:14 UTC (rev 14951)
+++ trunk/foray/foray-orthography/src/test/java/org/foray/orthography/LexerEnglishIcu4jTests.java 2026-07-30 16:19:25 UTC (rev 14952)
@@ -54,8 +54,7 @@
*/
@BeforeEach
public void setupTest() throws IOException, OrthographyException {
- final OrthographyServer4aStandard server = createServer();
- this.out = new LexerIcu4jBreakIterator(server);
+ this.out = new LexerIcu4jBreakIterator();
}
@Override
Modified: trunk/foray/foray-orthography/src/test/java/org/foray/orthography/LexerEnglishJavaTests.java
===================================================================
--- trunk/foray/foray-orthography/src/test/java/org/foray/orthography/LexerEnglishJavaTests.java 2026-07-30 14:13:14 UTC (rev 14951)
+++ trunk/foray/foray-orthography/src/test/java/org/foray/orthography/LexerEnglishJavaTests.java 2026-07-30 16:19:25 UTC (rev 14952)
@@ -49,8 +49,7 @@
*/
@BeforeEach
public void setupTest() throws IOException, OrthographyException {
- final OrthographyServer4aStandard server = createServer();
- this.out = new LexerJavaBreakIterator(server);
+ this.out = new LexerJavaBreakIterator();
}
@Override
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <vic...@us...> - 2026-07-30 14:13:16
|
Revision: 14951
http://sourceforge.net/p/foray/code/14951
Author: victormote
Date: 2026-07-30 14:13:14 +0000 (Thu, 30 Jul 2026)
Log Message:
-----------
Move token-based word recognition logic from SpellChecker to Orthography4a, for reuse.
Modified Paths:
--------------
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/Lexer4a.java
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/Orthography4a.java
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/util/SpellChecker.java
Modified: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/Lexer4a.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/Lexer4a.java 2026-07-30 13:27:21 UTC (rev 14950)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/Lexer4a.java 2026-07-30 14:13:14 UTC (rev 14951)
@@ -470,7 +470,7 @@
}
@Override
- public Token previous() {
+ public Token4a previous() {
if (! this.isLocked) {
throw new IllegalStateException("This lexer is not locked.");
}
@@ -482,6 +482,17 @@
return returnToken;
}
+ /**
+ * Does exactly what {@link #next()} does, but without incrementing the next token.
+ * This allows client code to see the next token without advancing to it.
+ * @return The next token.
+ */
+ public Token4a peekPrevious() {
+ final Token4a token = previous();
+ this.iteratorIndex ++;
+ return token;
+ }
+
@Override
public void remove() {
throw new UnsupportedOperationException("Method \"remove\" is not supported.");
Modified: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/Orthography4a.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/Orthography4a.java 2026-07-30 13:27:21 UTC (rev 14950)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/Orthography4a.java 2026-07-30 14:13:14 UTC (rev 14951)
@@ -230,6 +230,36 @@
return null;
}
+ /**
+ * Recognizes a word from a lexer token and its lexer.
+ * @param token The token whose content should be converted to a word, if possible.
+ * @param lexer The lexer that produced {@code token}, in case context is needed.
+ * @return The word from this orthography that matches {@code token}, or null if none exists.
+ */
+ public Word4a recognizeWord(final Lexer4a.Token4a token, final Lexer4a lexer) {
+ if (token.getTokenType() != Lexer.TokenType.WORD) {
+ throw new IllegalArgumentException("Token must be a word token.");
+ }
+ final CharSequence text = token.getText();
+ Word4a recognizedWord = recognizeWord(text, 0, text.length(), null);
+ if (recognizedWord == null) {
+ final Lexer.Token savedToken = token.getImmutableCopy();
+ if (lexer.hasNext()) {
+ final Lexer4a.Token4a nextToken = lexer.peekNext();
+ if (nextToken.getTokenType() == Lexer.TokenType.AMBIGUOUS_TRAILING_PUNCTUATION) {
+ final String testWord = savedToken.getText().toString() + nextToken.getText().toString();
+ recognizedWord = recognizeWord(testWord, 0, testWord.length(), null);
+ if (recognizedWord != null) {
+ return recognizedWord;
+ }
+ }
+ }
+ } else {
+ return recognizedWord;
+ }
+ return null;
+ }
+
@Override
public Word4a hyphenateUnrecognizedWord(final CharSequence word, final int offset, final int length) {
/* The character sequence containing the characters in the word that we are looking for. */
Modified: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/util/SpellChecker.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/util/SpellChecker.java 2026-07-30 13:27:21 UTC (rev 14950)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/util/SpellChecker.java 2026-07-30 14:13:14 UTC (rev 14951)
@@ -434,7 +434,7 @@
orthography = this.server.getOrthography(lastWritingSystem);
}
while (lexer.hasNext()) {
- final Lexer.Token token = lexer.next();
+ final Lexer4a.Token4a token = lexer.next();
if (token.getTokenType() == TokenType.WORD) {
if (! lastWritingSystem.equals(token.getWritingSystem())) {
orthography = this.server.getOrthography(token.getWritingSystem());
@@ -452,27 +452,14 @@
* @param token The word token to be checked.
* @param element The element containing the content being tokenized.
*/
- private void checkWord(final Orthography4a orthography, final Lexer.Token token, final TextElement element) {
- CharSequence text = StringUtils.EMPTY_STRING;
+ private void checkWord(final Orthography4a orthography, final Lexer4a.Token4a token, final TextElement element) {
if (orthography == null) {
/* Treat as an error. */
- text = "(no config) " + token.getText();
+ final String message = "(no config) " + token.getText();
+ this.output.println(message);
} else {
- text = token.getText();
- Word4a recognizedWord = orthography.recognizeWord(text, 0, text.length(), null);
- if (recognizedWord == null) {
- final Lexer.Token savedToken = token.getImmutableCopy();
- if (this.lexer.hasNext()) {
- final Lexer.Token nextToken = lexer.peekNext();
- if (nextToken.getTokenType() == Lexer.TokenType.AMBIGUOUS_TRAILING_PUNCTUATION) {
- final String testWord = savedToken.getText().toString() + nextToken.getText().toString();
- recognizedWord = orthography.recognizeWord(testWord, 0, testWord.length(), null);
- if (recognizedWord != null) {
- return;
- }
- }
- }
- } else {
+ final Word4a word = orthography.recognizeWord(token, this.lexer);
+ if (word != null) {
return;
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <vic...@us...> - 2026-07-30 13:27:23
|
Revision: 14950
http://sourceforge.net/p/foray/code/14950
Author: victormote
Date: 2026-07-30 13:27:21 +0000 (Thu, 30 Jul 2026)
Log Message:
-----------
Conform to aXSL change: Make Lexer implement ListIterator instead of Iterator, to improve client code understanding of context.
Modified Paths:
--------------
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/Lexer4a.java
Modified: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/Lexer4a.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/Lexer4a.java 2026-07-30 11:02:16 UTC (rev 14949)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/Lexer4a.java 2026-07-30 13:27:21 UTC (rev 14950)
@@ -334,8 +334,9 @@
/** The input that has been submitted for processing. */
private Input input = new Input();
- /** The index into the result arrays that will be used by the next call to {@link #next()}. */
- private int nextResultIndex;
+ /** The current index within {@link output} to the iterator. The iterator's current position conceptually sits
+ * immediately after ({@link leafIndex} - 1) and immediately before ({@link leafIndex}). */
+ private int iteratorIndex;
/** The list of output tokens to be returned. */
private List<Token4a> output = new ArrayList<Token4a>();
@@ -353,6 +354,7 @@
public Lexer4a(final OrthographyServer4aStandard server) {
// this.server = server;
this.isLocked = false;
+ this.iteratorIndex = 0;
}
@Override
@@ -417,9 +419,23 @@
this.input.items.clear();
this.output.clear();
this.isLocked = false;
+ this.iteratorIndex = 0;
}
@Override
+ public boolean hasNext() {
+ if (! this.isLocked) {
+ throw new IllegalStateException("This lexer is not locked.");
+ }
+ return this.iteratorIndex < this.output.size();
+ }
+
+ @Override
+ public int nextIndex() {
+ return this.iteratorIndex;
+ }
+
+ @Override
public Token4a next() {
if (! this.isLocked) {
throw new IllegalStateException("This lexer is not locked.");
@@ -427,8 +443,8 @@
if (! hasNext()) {
throw new NoSuchElementException();
}
- final Token4a returnToken = this.output.get(this.nextResultIndex);
- this.nextResultIndex ++;
+ final Token4a returnToken = this.output.get(nextIndex());
+ this.iteratorIndex ++;
return returnToken;
}
@@ -439,24 +455,54 @@
*/
public Token4a peekNext() {
final Token4a token = next();
- this.nextResultIndex --;
+ this.iteratorIndex --;
return token;
}
@Override
- public boolean hasNext() {
+ public boolean hasPrevious() {
+ return this.iteratorIndex > 0;
+ }
+
+ @Override
+ public int previousIndex() {
+ return this.iteratorIndex - 1;
+ }
+
+ @Override
+ public Token previous() {
if (! this.isLocked) {
throw new IllegalStateException("This lexer is not locked.");
}
- return this.nextResultIndex < this.output.size();
+ if (! hasNext()) {
+ throw new NoSuchElementException();
+ }
+ final Token4a returnToken = this.output.get(previousIndex());
+ this.iteratorIndex --;
+ return returnToken;
}
+ @Override
+ public void remove() {
+ throw new UnsupportedOperationException("Method \"remove\" is not supported.");
+ }
+
+ @Override
+ public void set(final Token e) {
+ throw new UnsupportedOperationException("Method \"set\" is not supported.");
+ }
+
+ @Override
+ public void add(final Token e) {
+ throw new UnsupportedOperationException("Method \"add\" is not supported.");
+ }
+
/**
* Tokenize the content and create the output.
*/
private void process() {
this.output.clear();
- this.nextResultIndex = 0;
+ this.iteratorIndex = 0;
if (this.input.items.size() < 1) {
return;
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <vic...@us...> - 2026-07-30 11:02:20
|
Revision: 14949
http://sourceforge.net/p/foray/code/14949
Author: victormote
Date: 2026-07-30 11:02:16 +0000 (Thu, 30 Jul 2026)
Log Message:
-----------
Normal dictionary editing.
Modified Paths:
--------------
trunk/foray/foray-orthography/src/main/data/dictionaries/eng-Latn-ZZZ.dict.xml
trunk/foray/foray-orthography/src/main/data/orthographies/foray-orthography-config.xml
Modified: trunk/foray/foray-orthography/src/main/data/dictionaries/eng-Latn-ZZZ.dict.xml
===================================================================
--- trunk/foray/foray-orthography/src/main/data/dictionaries/eng-Latn-ZZZ.dict.xml 2026-07-29 22:32:37 UTC (rev 14948)
+++ trunk/foray/foray-orthography/src/main/data/dictionaries/eng-Latn-ZZZ.dict.xml 2026-07-30 11:02:16 UTC (rev 14949)
@@ -856,7 +856,7 @@
<w><t>ac-cept-ee</t></w>
<w><t>ac-cept-er</t></w>
<w><t>ac-cep-tor</t></w>
-<w><t>ac-cess</t></w>
+<w><t>ac-cess</t><noun><pluralizable/><convertible-to-possessive/></noun><verb><regular-root/></verb></w>
<w><t>ac-ces-sa-ri-ly</t></w>
<w><t>ac-ces-sa-ri-ness</t></w>
<w><t>ac-ces-sa-ry</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
@@ -3652,7 +3652,7 @@
<w><t>a-lack-a-day</t></w>
<w><t>a-lac-ri-tous</t></w>
<w><t>a-lac-ri-ty</t></w>
-<w><t>A-lad-din</t></w>
+<w><t>A-lad-din</t><noun><convertible-to-possessive/><proper/></noun></w>
<w><t>a-lae</t></w>
<w><t>A-la-g</t></w>
<w><t>A-la-gez</t></w>
@@ -16587,7 +16587,7 @@
<w><t>bi-o-graph-ic</t></w>
<w><t>bi-o-graph-i-cal</t></w>
<w><t>bi-o-graph-i-cal-ly</t></w>
-<w><t>bi-og-ra-phy</t></w>
+<w><t>bi-og-ra-phy</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>bi-o-herm</t></w>
<w><t>biol</t></w>
<w><t>bi-o-log-ic</t></w>
@@ -17560,7 +17560,7 @@
<w><t>blood-y-ing</t></w>
<phrase><t>Blood-y Mar-y</t></phrase>
<w><t>blood-y=mind-ed</t></w>
-<w><t>bloom</t></w>
+<w><t>bloom</t><noun><pluralizable/><convertible-to-possessive/></noun><verb><regular-root/></verb></w>
<w><t>bloomed</t></w>
<w><t>bloom-er</t></w>
<w><t>Bloo-mer</t></w>
@@ -18474,7 +18474,7 @@
<w><t>boot-er-y</t></w>
<w><t>Bo-o-tes</t></w>
<w><t>Bo-ö-tes</t></w>
-<w><t>booth</t></w>
+<w><t>booth</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>Booth</t></w>
<w><t>Boo-thi-a</t></w>
<phrase><t>Boo-thi-a Pen-in-su-la</t></phrase>
@@ -27442,7 +27442,7 @@
<w><t>chor-do-phone</t></w>
<w><t>chor-do-to-nal</t></w>
<phrase><t>chord sym-bol</t></phrase>
-<w><t>chore</t></w>
+<w><t>chore</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>cho-re-a</t></w>
<w><t>cho-re-al</t></w>
<w><t>cho-re-at-ic</t></w>
@@ -33697,7 +33697,7 @@
<w><t>corf</t></w>
<w><t>Cor-fam</t></w>
<w><t>Cor-fu</t></w>
-<w><t>cor-gi</t></w>
+<w><t>cor-gi</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>Co-ri</t></w>
<w><t>co-ri-a</t></w>
<w><t>co-ri-a-ceous</t></w>
@@ -49860,6 +49860,7 @@
<w><t>en-roll-ment</t></w>
<w><t>en-rol-ment</t></w>
<w><t>en-root</t></w>
+<w><t>en route</t></w>
<w><t>Ens</t></w>
<w><t>ens</t></w>
<w><t>en-sam-ple</t><noun><pluralizable/></noun></w>
@@ -68103,7 +68104,7 @@
<w><t>head-i-er</t></w>
<w><t>head-i-est</t></w>
<w><t>head-i-ly</t></w>
-<w><t>head-ing</t></w>
+<w><t>head-ing</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>head-lamp</t></w>
<w><t>Head-land</t></w>
<w><t>head-land</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
@@ -70062,9 +70063,7 @@
<w><t>high=lev-el</t></w>
<phrase><t>high=lev-el lan-guage</t></phrase>
<w><t>high-life</t></w>
-<w><t>high-light</t></w>
-<w><t>high-light-ed</t></w>
-<w><t>high-light-ing</t></w>
+<w><t>high-light</t><noun><pluralizable/><convertible-to-possessive/></noun><verb><regular-root/></verb></w>
<w><t>high-line</t></w>
<w><t>high-low</t></w>
<w><t>high-ly</t></w>
@@ -82296,7 +82295,7 @@
<w><t>jour-nal-ish</t></w>
<w><t>jour-nal-is-ing</t></w>
<w><t>jour-nal-ism</t></w>
-<w><t>jour-nal-ist</t></w>
+<w><t>jour-nal-ist</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>jour-nal-is-tic</t></w>
<w><t>jour-nal-is-ti-cal-ly</t></w>
<w><t>jour-nal-i-za-tion</t></w>
@@ -137236,7 +137235,7 @@
<w><t>re-prime</t></w>
<w><t>re-primed</t></w>
<w><t>re-prim-ing</t></w>
-<w><t>re-print</t></w>
+<w><t>re-print</t><noun><pluralizable/><convertible-to-possessive/></noun><verb><regular-root/></verb></w>
<w><t>re-print-er</t></w>
<w><t>re-pris-al</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>re-prise</t></w>
@@ -150278,7 +150277,7 @@
<w><t>snipe</t></w>
<w><t>snipe-fish</t></w>
<w><t>snipe-like</t></w>
-<w><t>snip-er</t></w>
+<w><t>snip-er</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>snip-er-scope</t></w>
<w><t>snipe’s-bill</t></w>
<w><t>snipes-bill</t></w>
@@ -161239,7 +161238,7 @@
<w><t>tea=of=heav-en</t></w>
<w><t>tea-pot</t></w>
<w><t>tea-poy</t></w>
-<w><t>tear</t></w>
+<w><t>tear</t><noun><pluralizable/><convertible-to-possessive/></noun><verb><regular-root/></verb></w>
<w><t>tear-a-ble</t></w>
<w><t>tear-a-ble-ness</t></w>
<phrase><t>tear a-way</t></phrase>
@@ -164506,7 +164505,7 @@
<w><t>toot-sy=woot-sies</t></w>
<w><t>toot-sy=woot-sy</t></w>
<w><t>Too-woom-ba</t></w>
-<w><t>top</t></w>
+<w><t>top</t><noun><singular/><convertible-to-possessive/></noun><verb><regular-root/></verb></w>
<w><t>top-arch</t></w>
<w><t>to-paz</t></w>
<w><t>To-paze</t></w>
@@ -167957,7 +167956,7 @@
<w><t>Uj-jain</t></w>
<w><t>Uj-pest</t></w>
<phrase><t>U-jung Pan-dang</t></phrase>
-<w><t>UK</t><abbrev referenced-word="United Kingdom"/></w>
+<w><t>UK</t><abbrev referenced-word="United Kingdom"/><noun><singular/><convertible-to-possessive/></noun></w>
<w><t>u-kase</t></w>
<w><t>uke</t></w>
<w><t>u-ke-le-le</t></w>
Modified: trunk/foray/foray-orthography/src/main/data/orthographies/foray-orthography-config.xml
===================================================================
--- trunk/foray/foray-orthography/src/main/data/orthographies/foray-orthography-config.xml 2026-07-29 22:32:37 UTC (rev 14948)
+++ trunk/foray/foray-orthography/src/main/data/orthographies/foray-orthography-config.xml 2026-07-30 11:02:16 UTC (rev 14949)
@@ -21,7 +21,8 @@
<match desc="English ordinal ending in 0 or 4 thru 9">^[0-9]*[04-9]th(ly)?$</match>
<match desc="English ordinal ending in 10 thru 19">^[0-9]*1[0-9]th(ly)?$</match>
<match desc="English ordinal ending in multiple of 10">^[0-9]*[0-9]0th(ly)?$</match>
- <match desc="A single capital letter, such as a person's initial">^[A-Z]$</match>
+ <match desc="A single capital letter, such as a person's initial">^[A-Z]\.?$</match>
+ <match desc="Two capital letters, such as a person's first and middle initials">^[A-Z]\.[A-Z]\.$</match>
<match desc="Contracted year">^’[0-9]+$</match>
<match desc="Two dimensions">^[0-9]{1,3}(,[0-9]{3})*(\.[0-9]*)?×[0-9]{1,3}(,[0-9]{3})*(\.[0-9]*)?$</match>
<match desc="Standalone symbols">^[§\[\]\/=…]$</match>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <vic...@us...> - 2026-07-29 22:32:39
|
Revision: 14948
http://sourceforge.net/p/foray/code/14948
Author: victormote
Date: 2026-07-29 22:32:37 +0000 (Wed, 29 Jul 2026)
Log Message:
-----------
Conform to aXSL change: Simplify language, script, and country attributes. Move size and source to the comments.
Modified Paths:
--------------
trunk/foray/foray-orthography/src/main/data/orthographies/foray-orthography-config.xml
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/util/OrthographyParser.java
trunk/foray/foray-orthography/src/test/resources/orthography-config.xml
Modified: trunk/foray/foray-orthography/src/main/data/orthographies/foray-orthography-config.xml
===================================================================
--- trunk/foray/foray-orthography/src/main/data/orthographies/foray-orthography-config.xml 2026-07-29 21:54:47 UTC (rev 14947)
+++ trunk/foray/foray-orthography/src/main/data/orthographies/foray-orthography-config.xml 2026-07-29 22:32:37 UTC (rev 14948)
@@ -162,7 +162,7 @@
<resource-location parsed="false" url="file:../hyph-patterns/eng.xml"/>
</hyphenation-patterns-resource>
- <orthography language-iso-3char="eng" script-iso-4char="Latn" country-iso-3char="USA">
+ <orthography language="eng" script="Latn" country="USA">
<match-rules reference="eng-Latn-match-rules"/>
<dictionary reference="org.foray.eng.Latn.USA"/>
<hyphenation-patterns reference="hyph-patterns-eng"/>
@@ -169,7 +169,7 @@
<derivative-factories reference="eng-Latn-derivatives"/>
</orthography>
- <orthography language-iso-3char="eng" script-iso-4char="Latn" country-iso-3char="GBR">
+ <orthography language="eng" script="Latn" country="GBR">
<match-rules reference="eng-Latn-match-rules"/>
<dictionary reference="org.foray.eng.Latn.GBR"/>
<hyphenation-patterns reference="hyph-patterns-eng"/>
@@ -176,7 +176,7 @@
<derivative-factories reference="eng-Latn-derivatives"/>
</orthography>
- <orthography language-iso-3char="emen" script-iso-4char="Latn" country-iso-3char="ZZZ">
+ <orthography language="emen" script="Latn" country="ZZZ">
<match-rules reference="eng-Latn-match-rules"/>
<dictionary reference="org.foray.emen.Latn.ZZZ"/>
<hyphenation-patterns reference="hyph-patterns-eng"/>
@@ -184,55 +184,55 @@
<derivative-factory class="org.foray.orthography.inflection.emen.EmenLatnSuffix_eth_Factory"/>
</orthography>
- <orthography language-iso-3char="lat" script-iso-4char="Latn" country-iso-3char="ZZZ">
+ <orthography language="lat" script="Latn" country="ZZZ">
<match-rules reference="lat-Latn-match-rules"/>
<dictionary reference="org.foray.lat.Latn.ZZZ"/>
</orthography>
- <orthography language-iso-3char="ita" script-iso-4char="Latn" country-iso-3char="ZZZ">
+ <orthography language="ita" script="Latn" country="ZZZ">
<dictionary reference="org.foray.ita.Latn.ZZZ"/>
</orthography>
- <orthography language-iso-3char="fre" script-iso-4char="Latn" country-iso-3char="ZZZ">
+ <orthography language="fre" script="Latn" country="ZZZ">
<match-rules reference="fre-Latn-match-rules"/>
<derivative-rules reference="fre-Latn-derivative-patterns"/>
<dictionary reference="org.foray.fre.Latn.ZZZ"/>
</orthography>
- <orthography language-iso-3char="ger" script-iso-4char="Latn" country-iso-3char="ZZZ">
+ <orthography language="ger" script="Latn" country="ZZZ">
<derivative-rules reference="ger-Latn-derivative-patterns"/>
<dictionary reference="org.foray.ger.Latn.ZZZ"/>
</orthography>
- <orthography language-iso-3char="grc" script-iso-4char="Latn" country-iso-3char="ZZZ">
+ <orthography language="grc" script="Latn" country="ZZZ">
<dictionary reference="org.foray.grc.Latn.ZZZ"/>
</orthography>
- <orthography language-iso-3char="grc" script-iso-4char="Grek" country-iso-3char="ZZZ">
+ <orthography language="grc" script="Grek" country="ZZZ">
<dictionary reference="org.foray.grc.Grek.ZZZ"/>
</orthography>
- <orthography language-iso-3char="heb" script-iso-4char="Latn" country-iso-3char="ZZZ">
+ <orthography language="heb" script="Latn" country="ZZZ">
<dictionary reference="org.foray.heb.Latn.ZZZ"/>
</orthography>
<!-- Aramaic. -->
- <orthography language-iso-3char="arc" script-iso-4char="Latn" country-iso-3char="ZZZ">
+ <orthography language="arc" script="Latn" country="ZZZ">
<dictionary reference="org.foray.arc.Latn.ZZZ"/>
</orthography>
<!-- Old Norse. -->
- <orthography language-iso-3char="non" script-iso-4char="Latn" country-iso-3char="ZZZ">
+ <orthography language="non" script="Latn" country="ZZZ">
<dictionary reference="org.foray.non.Latn.ZZZ"/>
</orthography>
<!-- Polish. -->
- <orthography language-iso-3char="pol" script-iso-4char="Latn" country-iso-3char="ZZZ">
+ <orthography language="pol" script="Latn" country="ZZZ">
<dictionary reference="org.foray.pol.Latn.ZZZ"/>
</orthography>
<!-- Portuguese. -->
- <orthography language-iso-3char="por" script-iso-4char="Latn" country-iso-3char="ZZZ">
+ <orthography language="por" script="Latn" country="ZZZ">
<dictionary reference="org.foray.por.Latn.ZZZ"/>
</orthography>
Modified: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/util/OrthographyParser.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/util/OrthographyParser.java 2026-07-29 21:54:47 UTC (rev 14947)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/util/OrthographyParser.java 2026-07-29 22:32:37 UTC (rev 14948)
@@ -390,9 +390,9 @@
* @return The parsed writing system.
*/
private WritingSystem4a parseWritingSystem(final Attributes attributes) {
- final String languageString = attributes.getValue("language-iso-3char");
- final String countryString = attributes.getValue("country-iso-3char");
- final String scriptString = attributes.getValue("script-iso-4char");
+ final String languageString = attributes.getValue("language");
+ final String countryString = attributes.getValue("country");
+ final String scriptString = attributes.getValue("script");
final Language4a language = Language4a.findFrom3Char(languageString);
if (language == null) {
errorMessage("Unable to find language for: {}", languageString);
Modified: trunk/foray/foray-orthography/src/test/resources/orthography-config.xml
===================================================================
--- trunk/foray/foray-orthography/src/test/resources/orthography-config.xml 2026-07-29 21:54:47 UTC (rev 14947)
+++ trunk/foray/foray-orthography/src/test/resources/orthography-config.xml 2026-07-29 22:32:37 UTC (rev 14948)
@@ -97,47 +97,47 @@
<resource-location parsed="false" url="file:../../main/data/hyph-patterns/spa.xml"/>
</hyphenation-patterns-resource>
- <orthography language-iso-3char="eng" script-iso-4char="Latn" country-iso-3char="USA">
+ <orthography language="eng" script="Latn" country="USA">
<dictionary reference="org.foray.eng.Latn.ZZZ"/>
<hyphenation-patterns reference="hyph-patterns-eng"/>
<derivative-factories reference="derivatives-eng"/>
</orthography>
- <orthography language-iso-3char="eng" script-iso-4char="Zyyy" country-iso-3char="USA">
+ <orthography language="eng" script="Zyyy" country="USA">
<dictionary reference="org.foray.eng.Latn.ZZZ"/>
<hyphenation-patterns reference="hyph-patterns-eng"/>
<derivative-factories reference="derivatives-eng"/>
</orthography>
- <orthography language-iso-3char="fin" script-iso-4char="Latn" country-iso-3char="FIN">
+ <orthography language="fin" script="Latn" country="FIN">
<hyphenation-patterns reference="hyph-patterns-fin"/>
</orthography>
- <orthography language-iso-3char="hun" script-iso-4char="Latn" country-iso-3char="HUN">
+ <orthography language="hun" script="Latn" country="HUN">
<hyphenation-patterns reference="hyph-patterns-hun"/>
</orthography>
- <orthography language-iso-3char="ita" script-iso-4char="Latn" country-iso-3char="ITA">
+ <orthography language="ita" script="Latn" country="ITA">
<hyphenation-patterns reference="hyph-patterns-ita"/>
</orthography>
- <orthography language-iso-3char="pol" script-iso-4char="Latn" country-iso-3char="POL">
+ <orthography language="pol" script="Latn" country="POL">
<hyphenation-patterns reference="hyph-patterns-pol"/>
</orthography>
- <orthography language-iso-3char="por" script-iso-4char="Latn" country-iso-3char="PRT">
+ <orthography language="por" script="Latn" country="PRT">
<hyphenation-patterns reference="hyph-patterns-por"/>
</orthography>
- <orthography language-iso-3char="rus" script-iso-4char="Cyrl" country-iso-3char="RUS">
+ <orthography language="rus" script="Cyrl" country="RUS">
<hyphenation-patterns reference="hyph-patterns-rus"/>
</orthography>
- <orthography language-iso-3char="spa" script-iso-4char="Latn" country-iso-3char="ESP">
+ <orthography language="spa" script="Latn" country="ESP">
<hyphenation-patterns reference="hyph-patterns-spa"/>
</orthography>
- <orthography language-iso-3char="lat" script-iso-4char="Latn" country-iso-3char="ZZZ">
+ <orthography language="lat" script="Latn" country="ZZZ">
<dictionary reference="org.foray.lat.Latn.ZZZ"/>
</orthography>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <vic...@us...> - 2026-07-29 21:54:51
|
Revision: 14947
http://sourceforge.net/p/foray/code/14947
Author: victormote
Date: 2026-07-29 21:54:47 +0000 (Wed, 29 Jul 2026)
Log Message:
-----------
Normal dictionary editing.
Modified Paths:
--------------
trunk/foray/foray-orthography/src/main/data/dictionaries/eng-Latn-ZZZ.dict.xml
Added Paths:
-----------
trunk/foray/foray-orthography/src/main/data/dictionaries/emen-Latn-ZZZ.dict.xml
Added: trunk/foray/foray-orthography/src/main/data/dictionaries/emen-Latn-ZZZ.dict.xml
===================================================================
--- trunk/foray/foray-orthography/src/main/data/dictionaries/emen-Latn-ZZZ.dict.xml (rev 0)
+++ trunk/foray/foray-orthography/src/main/data/dictionaries/emen-Latn-ZZZ.dict.xml 2026-07-29 21:54:47 UTC (rev 14947)
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE axsl-dictionary
+ PUBLIC "-//aXSL//DTD Dictionary V0.1//EN"
+ "http://www.axsl.org/dtds/0.1/en/axsl-dictionary.dtd">
+
+<axsl-dictionary
+ id="org.foray.emen.Latn.ZZZ"
+ language="emen" script="Latn" country="ZZZ"
+ hard-hyphen-char="=" soft-hyphen-char="-">
+<import-standard-dictionary id="org.foray.eng.Latn.GBR"/>
+
+<!--
+This dictionary contains words found in Early Modern English that 1) are not
+used in modern dictionaries, and 2) cannot be inferred from derivative forms.
+-->
+
+<w><t>bear-eth</t><verb><lemma>bear</lemma></verb></w>
+<w><t>bring-eth</t><verb><lemma>bring</lemma></verb></w>
+<w><t>cleans-eth</t><verb><lemma>cleanse</lemma></verb></w>
+<w><t>fad-eth</t><verb><lemma>fade</lemma></verb></w>
+<w><t>grow-eth</t><verb><lemma>grow</lemma></verb></w>
+<w><t>hear-eth</t><verb><lemma>hear</lemma></verb></w>
+<w><t>shin-eth</t><verb><lemma>shine</lemma></verb></w>
+<w><t>un-der-stand-eth</t><verb><lemma>understand</lemma></verb></w>
+
+
+</axsl-dictionary>
Property changes on: trunk/foray/foray-orthography/src/main/data/dictionaries/emen-Latn-ZZZ.dict.xml
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+Author Date Id Rev
\ No newline at end of property
Modified: trunk/foray/foray-orthography/src/main/data/dictionaries/eng-Latn-ZZZ.dict.xml
===================================================================
--- trunk/foray/foray-orthography/src/main/data/dictionaries/eng-Latn-ZZZ.dict.xml 2026-07-29 21:54:00 UTC (rev 14946)
+++ trunk/foray/foray-orthography/src/main/data/dictionaries/eng-Latn-ZZZ.dict.xml 2026-07-29 21:54:47 UTC (rev 14947)
@@ -23237,7 +23237,7 @@
<w><t>cap-tious</t></w>
<w><t>cap-tious-ly</t></w>
<w><t>cap-tious-ness</t></w>
-<w><t>cap-ti-vate</t></w>
+<w><t>cap-ti-vate</t><verb><regular-root/></verb></w>
<w><t>cap-ti-vat-ed</t></w>
<w><t>cap-ti-vat-ing</t></w>
<w><t>cap-ti-vat-ing-ly</t></w>
@@ -27893,7 +27893,7 @@
<w><t>church-wom-an</t></w>
<w><t>church-wom-en</t></w>
<w><t>church-y</t></w>
-<w><t>church-yard</t></w>
+<w><t>church-yard</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>chu-ri-dars</t></w>
<w><t>chu-rin-ga</t></w>
<w><t>churl</t></w>
@@ -29933,7 +29933,7 @@
<w><t>cof-fered</t></w>
<w><t>cof-fer-like</t></w>
<w><t>Cof-fey-ville</t></w>
-<w><t>cof-fin</t></w>
+<w><t>cof-fin</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>Cof-fin</t></w>
<phrase><t>cof-fin bone</t></phrase>
<w><t>coff-ing</t></w>
@@ -32692,7 +32692,7 @@
<w><t>con-tain-a-ble</t></w>
<w><t>con-tained</t></w>
<w><t>con-tain-ed-ly</t></w>
-<w><t>con-tain-er</t></w>
+<w><t>con-tain-er</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>con-tain-er-board</t></w>
<w><t>con-tain-er-ise</t></w>
<w><t>con-tain-er-i-za-tion</t></w>
@@ -32859,7 +32859,7 @@
<w><t>con-tort-ed</t></w>
<w><t>con-tort-ed-ly</t></w>
<w><t>con-tort-ed-ness</t></w>
-<w><t>con-tor-tion</t></w>
+<w><t>con-tor-tion</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>con-tor-tion-al</t></w>
<w><t>con-tor-tioned</t></w>
<w><t>con-tor-tion-ist</t></w>
@@ -33085,7 +33085,7 @@
<w><t>con-ven-ing</t></w>
<w><t>con-ven-or</t></w>
<w><t>con-vent</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
-<w><t>con-ven-ti-cle</t></w>
+<w><t>con-ven-ti-cle</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>con-ven-ti-cler</t></w>
<w><t>con-ven-tic-u-lar</t></w>
<w><t>con-ven-tion</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
@@ -35231,7 +35231,7 @@
<w><t>cra-zi-ly</t></w>
<w><t>cra-zi-ness</t></w>
<w><t>craz-ing</t></w>
-<w><t>cra-zy</t></w>
+<w><t>cra-zy</t><adjective><extensible/></adjective></w>
<phrase><t>cra-zy bone</t></phrase>
<phrase><t>cra-zy pav-ing</t></phrase>
<phrase><t>cra-zy quilt</t></phrase>
@@ -40505,7 +40505,7 @@
<w><t>dep-re-ter</t></w>
<w><t>de-priv-a-ble</t></w>
<w><t>de-priv-al</t></w>
-<w><t>dep-ri-va-tion</t><noun><plural/><convertible-to-possessive/></noun></w>
+<w><t>dep-ri-va-tion</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>de-priv-a-tive</t></w>
<w><t>de-prive</t><verb><regular-root/></verb></w>
<w><t>de-prived</t></w>
@@ -64462,6 +64462,7 @@
<w><t>Graves</t></w>
<phrase><t>Graves’ dis-ease</t></phrase>
<w><t>Graves-end</t></w>
+<w><t>grave-site</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>grav-est</t></w>
<w><t>grave-stone</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>Gra-vett-i-an</t></w>
@@ -73800,10 +73801,14 @@
</section>
<section description="I">
+<section description="I abbrev">
<w><t>i/c</t></w>
<w><t>I/O</t></w>
<w><t>i.e.</t><abbrev referenced-word="id est"/><comment>Latin "that is."</comment></w>
<w><t>i. e.</t><abbrev referenced-word="id est"/><comment>Latin "that is."</comment></w>
+</section>
+
+<section description="Ia">
<w><t>I-ac-chus</t></w>
<w><t>I-a-che</t></w>
<w><t>IAEA</t></w>
@@ -73843,6 +73848,9 @@
<w><t>i-at-ro-chem-is-try</t></w>
<w><t>i-at-ro-gen-ic</t></w>
<w><t>i-at-ro-ge-nic-i-ty</t></w>
+</section>
+
+<section description="Ib">
<w><t>I-ba-da</t></w>
<w><t>I-ba-dan</t></w>
<w><t>I-ba-dhi</t></w>
@@ -73880,6 +73888,9 @@
<w><t>Ib-se-ni-an</t></w>
<w><t>Ib-sen-ism</t></w>
<w><t>Ib-y-cus</t></w>
+</section>
+
+<section description="Ic">
<w><t>I-c</t></w>
<w><t>ICA</t></w>
<w><t>I-ça</t></w>
@@ -74029,6 +74040,9 @@
<w><t>ic-tus-es</t></w>
<w><t>i-cy</t></w>
<phrase><t>i-cy pole</t></phrase>
+</section>
+
+<section description="Id">
<w><t>I’d</t></w>
<w><t>i-d</t></w>
<w><t>IDA</t></w>
@@ -74234,6 +74248,9 @@
<w><t>i-dyl-lic</t></w>
<w><t>i-dyl-li-cal-ly</t></w>
<w><t>i-dyl-list</t></w>
+</section>
+
+<section description="Ie to If">
<w><t>I-e-da</t></w>
<w><t>IEE</t></w>
<w><t>I-e-lene</t></w>
@@ -74247,6 +74264,9 @@
<w><t>If-ni</t></w>
<w><t>IFS</t></w>
<w><t>I-fu-gao</t></w>
+</section>
+
+<section description="Ig to Ik">
<w><t>Ig-bo</t></w>
<w><t>Ig-dra-sil</t></w>
<w><t>I-gerne</t></w>
@@ -74332,6 +74352,9 @@
<w><t>I-ke-ya=Se-ki</t></w>
<w><t>Ikh-na-ton</t></w>
<w><t>i-kon</t></w>
+</section>
+
+<section description="Il">
<w><t>I-la</t></w>
<w><t>I-l-a</t></w>
<w><t>i-lang=i-lang</t></w>
@@ -74584,6 +74607,9 @@
<w><t>Il-se-dore</t></w>
<w><t>ilth</t></w>
<w><t>Il-ya</t></w>
+</section>
+
+<section description="Im">
<w><t>I’m</t></w>
<w><t>I-ma</t></w>
<w><t>im-age</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
@@ -75477,6 +75503,9 @@
<w><t>Im-re</t></w>
<w><t>Im-roz</t></w>
<w><t>IMS</t></w>
+</section>
+
+<section description="In">
<w><t>in</t><noun><pluralizable/></noun></w>
<w><t>I-na</t></w>
<w><t>in-a-bil-i-ty</t></w>
@@ -77700,7 +77729,7 @@
<w><t>in-sid-i-ous</t></w>
<w><t>in-sid-i-ous-ly</t></w>
<w><t>in-sid-i-ous-ness</t></w>
-<w><t>in-sight</t></w>
+<w><t>in-sight</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>in-sight-ful</t></w>
<w><t>in-sig-ne</t></w>
<w><t>in-sig-ni-a</t></w>
@@ -78892,6 +78921,7 @@
<w><t>in-tern-ee</t></w>
<w><t>in-ter-neg-a-tive</t></w>
<w><t>in-terne-ship</t></w>
+<w><t>in-ter-net</t><noun><singular/><convertible-to-possessive/></noun></w>
<w><t>in-ter-net-ted</t></w>
<w><t>in-ter-neu-ral</t></w>
<w><t>in-ter-neu-ron</t></w>
@@ -79876,6 +79906,9 @@
<w><t>in-wrought</t></w>
<w><t>in-ya-la</t></w>
<w><t>i-nyl</t></w>
+</section>
+
+<section description="Io">
<w><t>I-o</t></w>
<w><t>Io-an-ni-na</t></w>
<w><t>I-ob-a-tes</t></w>
@@ -79959,6 +79992,9 @@
<w><t>IOW</t></w>
<w><t>I-o-wa</t></w>
<w><t>I-ox-us</t></w>
+</section>
+
+<section description="Ip to Iq">
<w><t>IPA</t></w>
<w><t>ip-e-cac</t></w>
<w><t>ip-e-cac-u-an-ha</t></w>
@@ -79989,6 +80025,9 @@
<w><t>Iq-bal</t></w>
<w><t>I-qui-que</t></w>
<w><t>I-qui-tos</t></w>
+</section>
+
+<section description="Ir">
<w><t>IRA</t></w>
<w><t>I-ra</t></w>
<w><t>i-ra-cund</t></w>
@@ -80389,6 +80428,9 @@
<w><t>Ir-ving</t></w>
<w><t>Ir-ving-ton</t></w>
<w><t>Ir-win</t></w>
+</section>
+
+<section description="Is">
<w><t>I’s</t></w>
<w><t>is</t></w>
<w><t>I-s</t></w>
@@ -80801,6 +80843,9 @@
<w><t>Is-tri-a</t></w>
<w><t>Is-tri-an</t></w>
<w><t>I-sus</t></w>
+</section>
+
+<section description="It to Iu">
<w><t>it</t></w>
<w><t>ita</t></w>
<w><t>ITA</t></w>
@@ -80917,6 +80962,9 @@
<w><t>I-tys</t></w>
<w><t>Itz-hak</t></w>
<w><t>I-u-lus</t></w>
+</section>
+
+<section description="Iv">
<w><t>I-van</t></w>
<w><t>I-van-hoe</t></w>
<phrase><t>I-van III</t></phrase>
@@ -80952,6 +81000,9 @@
<w><t>i-vy-ber-ry</t></w>
<phrase><t>i-vy League</t></phrase>
<w><t>i-vy-like</t></w>
+</section>
+
+<section description="Iw to Iz">
<w><t>I-wa-o</t></w>
<w><t>i-wis</t></w>
<w><t>I-wo</t></w>
@@ -80984,6 +81035,7 @@
<w><t>iz-zard</t></w>
<w><t>iz-zat</t></w>
</section>
+</section>
<section description="J">
<w><t>jaap</t></w>
@@ -89125,7 +89177,7 @@
<w><t>l=nor-ep-i-neph-rine</t></w>
<w><t>L-nos</t></w>
<w><t>loach</t></w>
-<w><t>load</t></w>
+<w><t>load</t><noun><pluralizable/><convertible-to-possessive/></noun><verb><regular-root/></verb></w>
<phrase><t>load dis-place-ment</t></phrase>
<w><t>load-ed</t></w>
<w><t>load-er</t></w>
@@ -90900,8 +90952,12 @@
</section>
<section description="M">
+<section description="M abbrev">
<w><t>M=16</t></w>
<phrase><t>M=1 ri-fle</t></phrase>
+</section>
+
+<section description="Ma">
<w><t>MA</t><abbrev referenced-word="Massachusetts"/></w>
<w><t>ma’am</t></w>
<w><t>maar</t></w>
@@ -92755,7 +92811,7 @@
<w><t>mark-er</t></w>
<w><t>mark-er=off</t></w>
<w><t>mar-kers=off</t></w>
-<w><t>mar-ket</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
+<w><t>mar-ket</t><noun><pluralizable/><convertible-to-possessive/></noun><verb><regular-root/></verb></w>
<w><t>mar-ket-a-bil-i-ty</t></w>
<w><t>mar-ket-a-ble</t></w>
<w><t>mar-ket-a-ble-ness</t></w>
@@ -93712,6 +93768,9 @@
<w><t>ma-zy</t></w>
<w><t>maz-zard</t></w>
<w><t>Maz-zi-ni</t></w>
+</section>
+
+<section description="Mb to Md">
<w><t>MBA</t></w>
<w><t>Mba-ba-ne</t></w>
<w><t>Mban-da-ka</t></w>
@@ -93780,6 +93839,9 @@
<w><t>M-doc</t></w>
<w><t>MDS</t></w>
<w><t>mdse</t></w>
+</section>
+
+<section description="Me">
<w><t>me</t></w>
<w><t>mea-con</t></w>
<phrase><t>me-a cul-pa</t></phrase>
@@ -95246,7 +95308,7 @@
<w><t>me-te-or-ol-o-gy</t></w>
<w><t>me-te-or-o-path-o-log-ic</t></w>
<phrase><t>me-te-or show-er</t></phrase>
-<w><t>me-ter</t></w>
+<w><t>me-ter</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>Me-ter</t></w>
<w><t>me-ter-age</t></w>
<w><t>me-ter=can-dle</t></w>
@@ -95472,6 +95534,9 @@
<w><t>mez-zo=so-pra-no</t></w>
<w><t>mez-zo-tint</t></w>
<w><t>mez-zo-tint-er</t></w>
+</section>
+
+<section description="Mf to Mi">
<w><t>mfd</t></w>
<w><t>mfg</t></w>
<w><t>MFH</t></w>
@@ -97368,6 +97433,9 @@
<w><t>miz-zen</t></w>
<w><t>miz-zen-mast</t></w>
<w><t>miz-zle</t></w>
+</section>
+
+<section description="Mj to Mn">
<w><t>M-ji-co</t></w>
<w><t>Mjoll-nir</t></w>
<w><t>Mjöll-nir</t></w>
@@ -97405,6 +97473,9 @@
<w><t>mne-mo-tech-nics</t></w>
<w><t>Mnes-i-cles</t></w>
<w><t>M-ni-drome</t></w>
+</section>
+
+<section description="Mo">
<w><t>mo-a</t></w>
<w><t>Mo-ab</t></w>
<w><t>Mo-a-bite</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
@@ -97920,7 +97991,7 @@
<w><t>mon-grel-ness</t></w>
<w><t>mo-ni-al</t></w>
<w><t>mon-ic</t></w>
-<w><t>Mon-i-ca</t></w>
+<w><t>Mon-i-ca</t><noun><convertible-to-possessive/><proper/></noun></w>
<w><t>mon-ick-er</t></w>
<w><t>mon-ied</t></w>
<w><t>mon-ies</t></w>
@@ -99040,6 +99111,9 @@
<w><t>moz-za-rel-la</t></w>
<w><t>moz-zet-ta</t></w>
<w><t>moz-zet-te</t></w>
+</section>
+
+<section description="Mp to Mt">
<w><t>mpg</t></w>
<w><t>mph</t></w>
<w><t>MPh</t></w>
@@ -99076,6 +99150,9 @@
<w><t>M-tif</t></w>
<w><t>M-tis</t></w>
<w><t>M-twa-ra</t></w>
+</section>
+
+<section description="Mu">
<w><t>much</t></w>
<w><t>much-ness</t></w>
<w><t>mu-cic</t></w>
@@ -99943,6 +100020,9 @@
<w><t>muz-zler</t></w>
<phrase><t>muz-zle ve-loc-i-ty</t></phrase>
<w><t>muz-zy</t></w>
+</section>
+
+<section description="Mv to Mz">
<w><t>MVD</t></w>
<w><t>MVO</t></w>
<w><t>MVS</t></w>
@@ -100187,7 +100267,7 @@
<w><t>M-zi</t></w>
<w><t>mzun-gu</t></w>
</section>
-
+</section>
<section description="N">
<w><t>N/F</t></w>
<w><t>N/S/F</t></w>
@@ -114556,6 +114636,7 @@
</section>
<section description="P">
+<section description="P abbrev">
<w><t>p</t><abbrev referenced-word="post, as in ’post meridian’ or ’p. m."/></w>
<w><t>p/c</t></w>
<w><t>P/C</t></w>
@@ -114562,6 +114643,9 @@
<w><t>P/N</t></w>
<w><t>p.m.</t><abbrev referenced-word="post meridian"/><comment>Latin "after noon"</comment></w>
<w><t>p. m.</t><abbrev referenced-word="post meridian"/><comment>Latin "after noon"</comment></w>
+</section>
+
+<section description="Pa to Pc">
<w><t>paal</t></w>
<w><t>Paa-si-ki-vi</t></w>
<w><t>PABA</t></w>
@@ -115308,7 +115392,7 @@
<w><t>pan-du-ri-form</t></w>
<w><t>pan-dy</t></w>
<w><t>pan-dy-bat</t></w>
-<w><t>pane</t></w>
+<w><t>pane</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>pa-né</t></w>
<w><t>paned</t></w>
<w><t>pan-e-gyr-ic</t></w>
@@ -117016,6 +117100,9 @@
<w><t>PBX</t></w>
<w><t>P=Celt-ic</t></w>
<w><t>pct</t></w>
+</section>
+
+<section description="Pe">
<w><t>pea</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>Pea-bod-y</t></w>
<w><t>peace</t></w>
@@ -118797,7 +118884,7 @@
<w><t>pest</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>Pes-ta-loz-zi</t></w>
<w><t>Pes-ta-loz-zi-an-ism</t></w>
-<w><t>pes-ter</t></w>
+<w><t>pes-ter</t><verb><regular-root/></verb></w>
<w><t>pes-ter-er</t></w>
<w><t>pes-ter-ing-ly</t></w>
<w><t>pes-ter-some</t></w>
@@ -119009,6 +119096,9 @@
<w><t>Pey-ton</t></w>
<w><t>pey-tral</t></w>
<w><t>pey-trel</t></w>
+</section>
+
+<section description="Pf to Ph">
<w><t>Pfalz</t></w>
<w><t>pfen-nig</t></w>
<w><t>pfen-ni-ge</t></w>
@@ -120025,6 +120115,9 @@
<w><t>phy-to-tox-in</t></w>
<w><t>phy-to-tron</t></w>
<w><t>Phyx-i-us</t></w>
+</section>
+
+<section description="Pi">
<w><t>Pi-a</t></w>
<w><t>Pia-cen-za</t></w>
<w><t>pi-ac-u-lar</t></w>
@@ -120939,6 +121032,9 @@
<w><t>piz-ze-ri-a</t></w>
<w><t>piz-zi-ca-to</t></w>
<w><t>piz-zle</t></w>
+</section>
+
+<section description="Pk to Pl">
<w><t>pkg</t></w>
<w><t>pkt</t></w>
<w><t>PL/1</t></w>
@@ -121749,6 +121845,9 @@
<w><t>ply-wood</t></w>
<w><t>Pl-ze</t></w>
<w><t>Plzen</t></w>
+</section>
+
+<section description="Pm to Pn">
<w><t>PMG</t></w>
<w><t>pneu-drau-lic</t></w>
<w><t>pneu-ma</t></w>
@@ -121795,6 +121894,9 @@
<w><t>pneu-mo-no-ul-tra-mi-cro-scop-ic-sil-i-co-vol-ca-no-ko-ni-o-sis</t></w>
<w><t>pneu-mo-tho-rax</t></w>
<phrase><t>p=n junc-tion</t></phrase>
+</section>
+
+<section description="Po to Pp">
<w><t>Po</t><noun><convertible-to-possessive/></noun></w>
<w><t>po-a-ceous</t></w>
<w><t>poach</t></w>
@@ -123756,6 +123858,10 @@
<w><t>ppm</t></w>
<w><t>ppr</t></w>
<w><t>PPS</t></w>
+</section>
+
+<section description="Pr">
+<section description="Pra to Prc">
<w><t>praam</t></w>
<w><t>pra-cha-rak</t></w>
<w><t>prac-tic</t></w>
@@ -123895,6 +124001,9 @@
<phrase><t>pray-ing man-tis</t></phrase>
<w><t>PRB</t></w>
<w><t>pr-cis</t></w>
+</section>
+
+<section description="Pre">
<w><t>pre-ab-sorb</t></w>
<w><t>pre-ab-sorb-ent</t></w>
<w><t>pre-ab-stract</t></w>
@@ -127403,6 +127512,9 @@
<w><t>pre-youth-ful</t></w>
<w><t>pre-zy-go-mat-ic</t></w>
<w><t>prez-zie</t></w>
+</section>
+
+<section description="Pri">
<w><t>Pri</t></w>
<w><t>Pri-am</t></w>
<w><t>pri-a-pe-an</t></w>
@@ -127425,7 +127537,7 @@
<phrase><t>price sup-port</t></phrase>
<w><t>price-y</t></w>
<w><t>pric-ing</t></w>
-<w><t>prick</t></w>
+<w><t>prick</t><verb><regular-root/></verb></w>
<w><t>prick-er</t></w>
<w><t>prick-et</t></w>
<w><t>prick-ing</t></w>
@@ -127712,6 +127824,9 @@
<w><t>prize-fight-ing</t></w>
<phrase><t>prize mon-ey</t></phrase>
<w><t>priz-ing</t></w>
+</section>
+
+<section description="Pro to Prs">
<w><t>pro</t></w>
<w><t>PRO</t></w>
<w><t>pro-a</t></w>
@@ -127728,6 +127843,7 @@
<w><t>pro-ac-quit-tal</t></w>
<w><t>pro-act-ing</t></w>
<w><t>pro-ac-tion</t></w>
+<w><t>pro-ac-tive</t><adjective/></w>
<phrase><t>pro-ac-tive in-hi-bi-tion</t></phrase>
<w><t>pro-ad-journ-ment</t></w>
<w><t>pro-ad-min-is-tra-tion</t></w>
@@ -129257,6 +129373,9 @@
<w><t>pro=Zi-on-ism</t></w>
<w><t>pro=Zi-o-nist</t></w>
<w><t>prs</t></w>
+</section>
+
+<section description="Pru to Prv">
<w><t>Pru</t></w>
<w><t>prude</t></w>
<w><t>Pru-dence</t></w>
@@ -129319,6 +129438,9 @@
<w><t>pru-tah</t></w>
<w><t>Pr-vert</t></w>
<phrase><t>Pr-vost d’Ex-iles</t></phrase>
+</section>
+
+<section description="Pry to Prz">
<w><t>pry</t></w>
<w><t>pry-er</t></w>
<w><t>pry-ing</t></w>
@@ -129331,6 +129453,10 @@
<w><t>pryth-ee</t></w>
<w><t>Prze-my</t></w>
<phrase><t>Prze-wal-ski’s horse</t></phrase>
+</section>
+</section>
+
+<section description="Ps">
<w><t>Psa</t></w>
<w><t>psalm</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>psalm-book</t></w>
@@ -129938,6 +130064,9 @@
<w><t>psyl-la</t></w>
<w><t>psyl-lid</t></w>
<w><t>Psy-Ops</t><abbrev referenced-word="Psychological Operations"/></w>
+</section>
+
+<section description="Pt">
<w><t>p-t</t></w>
<w><t>pta</t></w>
<w><t>PTA</t></w>
@@ -130008,6 +130137,9 @@
<w><t>pty-a-lin</t></w>
<w><t>pty-a-lism</t></w>
<w><t>p=type</t></w>
+</section>
+
+<section description="Pu">
<w><t>pub</t></w>
<w><t>pu-ber-ty</t></w>
<w><t>pu-ber-u-lent</t></w>
@@ -130643,6 +130775,9 @@
<w><t>puz-zling-ness</t></w>
<w><t>puz-zo-lan</t></w>
<w><t>puz-zo-la-na</t></w>
+</section>
+
+<section description="Pv to Py">
<w><t>PVA</t></w>
<w><t>PVC</t></w>
<phrase><t>P-vid’s deer</t></phrase>
@@ -130903,6 +131038,7 @@
<w><t>pyx-is</t></w>
<w><t>Pyx-is</t></w>
</section>
+</section>
<section description="Q">
<w><t>q. v.</t><abbrev referenced-word="quod vode (for which, see)"/></w>
@@ -132302,6 +132438,7 @@
</section>
<section description="R">
+<section description="Ra">
<w><t>Raab</t></w>
<w><t>RAAF</t></w>
<w><t>Ra-am-ses</t></w>
@@ -133370,6 +133507,9 @@
<w><t>raz-zi-a</t></w>
<w><t>raz-zle=daz-zle</t></w>
<w><t>razz-ma-tazz</t></w>
+</section>
+
+<section description="Rb to Rd">
<w><t>RBE</t></w>
<w><t>RCA</t></w>
<w><t>RCAF</t></w>
@@ -133390,7 +133530,11 @@
<w><t>rct</t></w>
<w><t>RCT</t></w>
<w><t>RCVS</t></w>
+<w><t>Rd</t><abbrev referenced-word="Road"/></w>
<w><t>R-dhos</t></w>
+</section>
+
+<section description="Re">
<w><t>re-a-ban-don</t></w>
<w><t>re-a-bridge</t></w>
<w><t>re-a-bridged</t></w>
@@ -138616,6 +138760,9 @@
<w><t>re-zone</t></w>
<w><t>re-zoned</t></w>
<w><t>re-zon-ing</t></w>
+</section>
+
+<section description="Rf to Rg">
<w><t>RFC</t></w>
<w><t>R-gen</t></w>
<w><t>r-gen</t></w>
@@ -138631,6 +138778,9 @@
<w><t>r-gis-seur</t></w>
<w><t>RGS</t></w>
<w><t>Rgt</t></w>
+</section>
+
+<section description="Rh">
<w><t>Rh</t></w>
<w><t>RHA</t></w>
<w><t>rhab-do-man-cy</t></w>
@@ -138872,6 +139022,9 @@
<phrase><t>rhythm meth-od</t></phrase>
<phrase><t>rhythm sec-tion</t></phrase>
<w><t>rhy-ton</t></w>
+</section>
+
+<section description="Ri">
<w><t>ri-a</t></w>
<w><t>ri-al</t></w>
<w><t>ri-al-to</t></w>
@@ -139399,6 +139552,9 @@
<w><t>riz-ar</t></w>
<w><t>riz-zar</t></w>
<w><t>Riz-zio</t></w>
+</section>
+
+<section description="Rl to Rn">
<w><t>r=less</t></w>
<w><t>rly</t></w>
<w><t>RMA</t></w>
@@ -139413,6 +139569,9 @@
<w><t>RNVR</t></w>
<w><t>RNZAF</t></w>
<w><t>RNZN</t></w>
+</section>
+
+<section description="Ro">
<w><t>roach</t></w>
<w><t>roach-es</t></w>
<w><t>road</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
@@ -139885,7 +140044,7 @@
<w><t>room-i-ly</t></w>
<w><t>room-i-ness</t></w>
<phrase><t>room-ing house</t></phrase>
-<w><t>room-mate</t></w>
+<w><t>room-mate</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<phrase><t>room ser-vice</t></phrase>
<phrase><t>room tem-per-a-ture</t></phrase>
<w><t>room-y</t></w>
@@ -140353,6 +140512,9 @@
<w><t>roze-ner</t></w>
<w><t>Ro-zi</t></w>
<w><t>roz-zer</t></w>
+</section>
+
+<section description="Rp to Rt">
<w><t>RPC</t></w>
<w><t>rpm</t></w>
<w><t>rps</t></w>
@@ -140373,6 +140535,9 @@
<w><t>RTR</t></w>
<w><t>RTT</t></w>
<w><t>RTTY</t></w>
+</section>
+
+<section description="Ru">
<w><t>Ru-an-da=U-run-di</t></w>
<w><t>rub</t></w>
<w><t>rub-a-boo</t></w>
@@ -140546,7 +140711,6 @@
<w><t>ru-gos-i-ty</t></w>
<w><t>ru-gu-lose</t></w>
<w><t>Ruhr</t></w>
-<w><t>ruin</t></w>
<w><t>ru-in</t><noun><pluralizable/><convertible-to-possessive/></noun><verb><regular-root/></verb></w>
<w><t>ru-in-a-ble</t></w>
<w><t>ru-in-a-tion</t></w>
@@ -140823,6 +140987,9 @@
<w><t>Ru-wen-zo-ri</t></w>
<w><t>Ruys-dael</t></w>
<w><t>Ruy-ter</t></w>
+</section>
+
+<section description="Rw to Ry">
<w><t>RWA</t></w>
<w><t>Rwan-da</t></w>
<w><t>rwd</t></w>
@@ -140849,9 +141016,14 @@
<w><t>Ryu-no-su-ke</t></w>
<w><t>Ryu-rik</t></w>
</section>
+</section>
<section description="S">
+<section description="S abbrev">
<w><t>S.C.</t><abbrev referenced-word="South Carolina"/></w>
+</section>
+
+<section description="Sa">
<w><t>Saa-di</t></w>
<w><t>Saar</t></w>
<w><t>Saar-br-en</t></w>
@@ -141778,7 +141950,7 @@
<w><t>San-dus-ky</t></w>
<phrase><t>sand vi-per</t></phrase>
<w><t>Sand-wich</t></w>
-<w><t>sand-wich</t></w>
+<w><t>sand-wich</t><noun><pluralizable/><convertible-to-possessive/></noun><verb><regular-root/></verb></w>
<phrase><t>sand-wich board</t></phrase>
<phrase><t>sand-wich cake</t></phrase>
<phrase><t>sand-wich com-pound</t></phrase>
@@ -142373,7 +142545,7 @@
<w><t>sav-er</t></w>
<w><t>sav-in</t></w>
<w><t>sav-ine</t></w>
-<w><t>sav-ing</t></w>
+<w><t>sav-ing</t><noun><pluralizable/></noun></w>
<w><t>sav-ing-ly</t></w>
<phrase><t>sav-ings ac-count</t></phrase>
<phrase><t>sav-ings bank</t></phrase>
@@ -142482,6 +142654,9 @@
<w><t>say-yid</t></w>
<w><t>saz-e-rac</t></w>
<w><t>Saz-e-rac</t></w>
+</section>
+
+<section description="Sc to Sd">
<w><t>SC</t><abbrev referenced-word="South Carolina"/></w>
<w><t>scab</t></w>
<w><t>scab-bard</t></w>
@@ -143626,6 +143801,9 @@
<w><t>Scyth-i-an</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>scyth-ing</t></w>
<w><t>SDRs</t></w>
+</section>
+
+<section description="Se">
<w><t>sea</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<phrase><t>sea an-chor</t></phrase>
<phrase><t>sea a-nem-o-ne</t></phrase>
@@ -146724,6 +146902,9 @@
<w><t>Sey-han</t></w>
<w><t>Sey-mour</t></w>
<w><t>Se-zes-sion</t></w>
+</section>
+
+<section description="Sf to Sg">
<w><t>Sfax</t></w>
<w><t>sfer-ics</t></w>
<w><t>Sfor-za</t></w>
@@ -146736,6 +146917,9 @@
<w><t>SGP</t></w>
<w><t>sgraf-fi-to</t></w>
<w><t>Sgt</t></w>
+</section>
+
+<section description="Sh">
<w><t>SHA</t></w>
<w><t>Shaa-ban</t></w>
<w><t>Sha-ba</t></w>
@@ -147563,7 +147747,7 @@
<w><t>shook</t></w>
<w><t>shool</t></w>
<w><t>shoon</t></w>
-<w><t>shoot</t></w>
+<w><t>shoot</t><verb><regular-root value="false"/></verb></w>
<w><t>shoot-er</t></w>
<phrase><t>shoot-ing box</t></phrase>
<phrase><t>shoot-ing brake</t></phrase>
@@ -147572,6 +147756,7 @@
<phrase><t>shoot-ing script</t></phrase>
<phrase><t>shoot-ing star</t></phrase>
<phrase><t>shoot-ing stick</t></phrase>
+<w><t>shoots</t><verb><vf></vf></verb></w>
<w><t>shop</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<phrase><t>shop a-round</t></phrase>
<phrase><t>shop as-sis-tant</t></phrase>
@@ -147880,6 +148065,9 @@
<w><t>shy-ness</t></w>
<w><t>shy-poo</t></w>
<w><t>shy-ster</t></w>
+</section>
+
+<section description="Si to Sj">
<w><t>si-al</t></w>
<w><t>si-al-a-gog-ic</t></w>
<w><t>si-al-a-gogue</t></w>
@@ -148814,7 +149002,7 @@
<w><t>si-tar-ist</t></w>
<w><t>sit-a-tun-ga</t></w>
<w><t>sit-com</t></w>
-<w><t>site</t></w>
+<w><t>site</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>sit-ed</t></w>
<w><t>si-tel-la</t></w>
<w><t>sit-fast</t></w>
@@ -148930,6 +149118,9 @@
<w><t>sjam-bok</t></w>
<w><t>SJD</t></w>
<w><t>Sj-land</t></w>
+</section>
+
+<section description="Sk">
<w><t>Ska-gen</t></w>
<w><t>Skag-er-rak</t></w>
<w><t>Skag-way</t></w>
@@ -149225,6 +149416,9 @@
<w><t>sky-writ-ing</t></w>
<w><t>sky-writ-ten</t></w>
<w><t>sky-wrote</t></w>
+</section>
+
+<section description="Sl">
<w><t>slab</t></w>
<w><t>slab-ber</t></w>
<w><t>slab-ber-y</t></w>
@@ -149693,6 +149887,9 @@
<w><t>sly-ly</t></w>
<w><t>sly-ness</t></w>
<w><t>slype</t></w>
+</section>
+
+<section description="Sm">
<w><t>smack</t></w>
<w><t>smack-er</t></w>
<w><t>smack-er-oo</t></w>
@@ -149922,6 +150119,9 @@
<w><t>Smyr-na</t></w>
<w><t>Smyr-ne-an</t></w>
<w><t>smy-trie</t></w>
+</section>
+
+<section description="Sn">
<w><t>snack</t></w>
<w><t>snack-ette</t></w>
<w><t>snaf-fle</t></w>
@@ -150245,6 +150445,9 @@
<w><t>sny</t></w>
<w><t>snye</t></w>
<w><t>sny-ing</t></w>
+</section>
+
+<section description="So">
<w><t>so</t></w>
<w><t>soak</t><verb><regular-root/></verb></w>
<w><t>soak-age</t></w>
@@ -151362,6 +151565,9 @@
<w><t>So-yuz</t></w>
<w><t>so-zin</t></w>
<w><t>soz-zled</t></w>
+</section>
+
+<section description="Sp">
<w><t>spa</t></w>
<w><t>Spa</t></w>
<w><t>Spaak</t></w>
@@ -152766,6 +152972,9 @@
<w><t>spy</t><noun><pluralizable/><convertible-to-possessive/></noun><verb><regular-root/></verb></w>
<w><t>spy-glass</t></w>
<w><t>spy-ing</t></w>
+</section>
+
+<section description="Sq">
<w><t>sqq</t></w>
<w><t>squab</t></w>
<w><t>squab-bi-er</t></w>
@@ -152959,6 +153168,9 @@
<w><t>sqush-i-est</t></w>
<w><t>sqush-y</t></w>
<w><t>squush</t></w>
+</section>
+
+<section description="Sr to Ss">
<w><t>Sr</t><abbrev referenced-word="senior, señor"/></w>
<w><t>Sra</t><abbrev referenced-word="señora"/></w>
<w><t>s-rac</t></w>
@@ -152982,6 +153194,9 @@
<w><t>SSR</t></w>
<w><t>SST</t></w>
<w><t>SSW</t></w>
+</section>
+
+<section description="St">
<w><t>st</t><abbrev referenced-word="street or saint"/></w>
<w><t>St. Croix</t></w>
<w><t>sta</t></w>
@@ -155277,6 +155492,9 @@
<w><t>sty-rene</t></w>
<w><t>Styr-i-a</t></w>
<w><t>Styx</t></w>
+</section>
+
+<section description="Su">
<w><t>su-a-bil-i-ty</t></w>
<w><t>su-a-ble</t></w>
<w><t>su-a-bly</t></w>
@@ -158928,6 +159146,9 @@
<w><t>su-ze-rain-ty</t></w>
<w><t>Su-zie</t></w>
<w><t>Su-zu-ki</t></w>
+</section>
+
+<section description="Sv">
<w><t>Sval-bard</t></w>
<w><t>sva-ra-bhak-ti</t></w>
<w><t>Sved-berg</t></w>
@@ -158939,6 +159160,9 @@
<w><t>Svet-la-na</t></w>
<w><t>S-vi-gn</t></w>
<w><t>Sviz-ze-ra</t></w>
+</section>
+
+<section description="Sw">
<w><t>SWA</t></w>
<w><t>swab</t></w>
<w><t>swab-ber</t></w>
@@ -159343,6 +159567,9 @@
<w><t>swum</t></w>
<w><t>swung</t></w>
<w><t>swy</t></w>
+</section>
+
+<section description="Sy">
<w><t>Syb-a-ris</t></w>
<w><t>syb-a-rite</t></w>
<w><t>Syb-a-rite</t></w>
@@ -159860,6 +160087,9 @@
<phrase><t>sys-tems a-nal-y-sis</t></phrase>
<phrase><t>sys-tems en-gi-neer-ing</t></phrase>
<w><t>sys-to-le</t></w>
+</section>
+
+<section description="Sz">
<w><t>Syz-ran</t></w>
<w><t>sy-zyg-i-al</t></w>
<w><t>syz-y-gy</t></w>
@@ -159876,6 +160106,7 @@
<w><t>Szy-man-ows-ki</t></w>
<w><t>Szy-ma-now-ski</t></w>
</section>
+</section>
<section description="T">
<w><t>Taal</t></w>
@@ -170604,7 +170835,7 @@
<w><t>un-der-div-ing</t></w>
<w><t>un-der-do</t></w>
<w><t>un-der-doc-tor</t></w>
-<w><t>un-der-dog</t></w>
+<w><t>un-der-dog</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>un-der-do-ing</t></w>
<w><t>un-der-done</t></w>
<w><t>un-der-dose</t></w>
@@ -171111,7 +171342,7 @@
<w><t>un-der-stage</t></w>
<w><t>un-der-stain</t></w>
<w><t>un-der-stamp</t></w>
-<w><t>un-der-stand</t><verb/></w>
+<w><t>un-der-stand</t><verb><regular-root value="false"/></verb></w>
<w><t>un-der-stand-a-bil-i-ty</t></w>
<w><t>un-der-stand-a-ble</t></w>
<w><t>un-der-stand-a-ble-ness</t></w>
@@ -182974,7 +183205,11 @@
</section>
<section description="W">
+<section description="W abbrev">
<w><t>w/o</t></w>
+</section>
+
+<section description="Wa">
<w><t>WAAAF</t></w>
<w><t>WAAC</t></w>
<w><t>Waadt</t></w>
@@ -183942,10 +184177,16 @@
<w><t>wayz-goose</t></w>
<w><t>Wa-zir-a-bad</t></w>
<w><t>Wa-zir-i-stan</t></w>
+</section>
+
+<section description="Wb to Wc">
<w><t>WBC</t></w>
<w><t>W-burg</t></w>
<w><t>WCC</t></w>
<w><t>WCTU</t></w>
+</section>
+
+<section description="We to Wf">
<w><t>we</t></w>
<w><t>weak</t><adjective><extensible/></adjective></w>
<w><t>weak-en</t><verb><regular-root/></verb></w>
@@ -185056,6 +185297,9 @@
<w><t>Weyl</t></w>
<w><t>Wey-mouth</t></w>
<w><t>WFTU</t></w>
+</section>
+
+<section description="Wh">
<w><t>whack</t></w>
<w><t>whack-er</t></w>
<w><t>whack-i-er</t></w>
@@ -185537,6 +185781,9 @@
<w><t>why’ll</t></w>
<w><t>why’re</t></w>
<w><t>why’s</t></w>
+</section>
+
+<section description="Wi">
<w><t>Wi-ak</t></w>
<w><t>Wich-i-ta</t></w>
<w><t>wick</t></w>
@@ -186256,6 +186503,9 @@
<w><t>wiz-en</t></w>
<w><t>wi-zen</t></w>
<w><t>wiz-ened</t></w>
+</section>
+
+<section description="Wk to Wn">
<w><t>wkly</t></w>
<w><t>Wla-dy-slaw</t></w>
<w><t>WLM</t></w>
@@ -186264,6 +186514,9 @@
<w><t>WMO</t></w>
<w><t>WNP</t></w>
<w><t>WNW</t></w>
+</section>
+
+<section description="Wo to Wp">
<w><t>woad</t></w>
<w><t>woad-ed</t></w>
<w><t>woad-wax</t></w>
@@ -186737,6 +186990,9 @@
<w><t>wpb</t></w>
<w><t>WPC</t></w>
<w><t>wpm</t></w>
+</section>
+
+<section description="Wr">
<w><t>WRAAC</t></w>
<w><t>Wraac</t></w>
<w><t>WRAAF</t></w>
@@ -186756,7 +187012,7 @@
<w><t>wrap-a-round</t></w>
<w><t>wrap=a-round</t></w>
<w><t>wrapped</t></w>
-<w><t>wrap-per</t></w>
+<w><t>wrap-per</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>wrap-ping</t></w>
<w><t>wrap-round</t></w>
<w><t>wrapt</t><verb><lemma>wrap</lemma></verb><comment>archaic, past tense of "wrap"</comment></w>
@@ -186880,6 +187136,9 @@
<w><t>wry-neck</t></w>
<w><t>wry-necked</t></w>
<w><t>wry-ness</t></w>
+</section>
+
+<section description="Ws to Wy">
<w><t>WSW</t></w>
<w><t>W-tem-berg</t></w>
<w><t>Wu-chang</t></w>
@@ -186938,6 +187197,7 @@
<w><t>wyt-ing</t></w>
<w><t>wy-vern</t></w>
</section>
+</section>
<section description="X">
<w><t>xa-lo-stock-ite</t></w>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <vic...@us...> - 2026-07-29 21:54:02
|
Revision: 14946
http://sourceforge.net/p/foray/code/14946
Author: victormote
Date: 2026-07-29 21:54:00 +0000 (Wed, 29 Jul 2026)
Log Message:
-----------
Conform to aXSL change: Allow individual derivative factory to be added to an orthography.
Modified Paths:
--------------
trunk/foray/foray-orthography/src/main/data/orthographies/foray-orthography-config.xml
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/Orthography4aStandard.java
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/util/OrthographyParser.java
Modified: trunk/foray/foray-orthography/src/main/data/orthographies/foray-orthography-config.xml
===================================================================
--- trunk/foray/foray-orthography/src/main/data/orthographies/foray-orthography-config.xml 2026-07-29 15:34:17 UTC (rev 14945)
+++ trunk/foray/foray-orthography/src/main/data/orthographies/foray-orthography-config.xml 2026-07-29 21:54:00 UTC (rev 14946)
@@ -102,6 +102,10 @@
<resource-location parsed="false" url="file:../dictionaries/eng-Latn-ZZZ-epoch-01.dict.xml"/>
</dictionary-resource>
+ <dictionary-resource id="org.foray.emen.Latn.ZZZ">
+ <resource-location parsed="false" url="file:../dictionaries/emen-Latn-ZZZ.dict.xml"/>
+ </dictionary-resource>
+
<dictionary-resource id="org.foray.ita.Latn.ZZZ">
<resource-location parsed="false" url="file:../dictionaries/ita-Latn-ZZZ.dict.xml"/>
</dictionary-resource>
@@ -172,6 +176,14 @@
<derivative-factories reference="eng-Latn-derivatives"/>
</orthography>
+ <orthography language-iso-3char="emen" script-iso-4char="Latn" country-iso-3char="ZZZ">
+ <match-rules reference="eng-Latn-match-rules"/>
+ <dictionary reference="org.foray.emen.Latn.ZZZ"/>
+ <hyphenation-patterns reference="hyph-patterns-eng"/>
+ <derivative-factories reference="eng-Latn-derivatives"/>
+ <derivative-factory class="org.foray.orthography.inflection.emen.EmenLatnSuffix_eth_Factory"/>
+ </orthography>
+
<orthography language-iso-3char="lat" script-iso-4char="Latn" country-iso-3char="ZZZ">
<match-rules reference="lat-Latn-match-rules"/>
<dictionary reference="org.foray.lat.Latn.ZZZ"/>
Modified: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/Orthography4aStandard.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/Orthography4aStandard.java 2026-07-29 15:34:17 UTC (rev 14945)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/Orthography4aStandard.java 2026-07-29 21:54:00 UTC (rev 14946)
@@ -155,6 +155,14 @@
this.wordWrapperFactories = wordWrapperFactories;
}
+ /**
+ * Adds a single word wrapper factory to the list.
+ * @param factory The word wrapper factory to set.
+ */
+ public void registerWordWrapperFactory(final InflectionFactory<?> factory) {
+ this.wordWrapperFactories.add(factory);
+ }
+
@Override
public SegmentDictionary getDictionary() {
if (this.dictionaryResource == null) {
Modified: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/util/OrthographyParser.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/util/OrthographyParser.java 2026-07-29 15:34:17 UTC (rev 14945)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/util/OrthographyParser.java 2026-07-29 21:54:00 UTC (rev 14946)
@@ -197,7 +197,11 @@
errorMessage("derivative-factory not found: {}", factoryClassName);
return;
}
- this.currentDerivateFactoryList.add(factory);
+ if (this.currentDerivateFactoryList != null) {
+ this.currentDerivateFactoryList.add(factory);
+ } else {
+ this.currentOrthographyConfig.registerWordWrapperFactory(factory);
+ }
return;
}
case "dictionary": {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <vic...@us...> - 2026-07-29 15:34:20
|
Revision: 14945
http://sourceforge.net/p/foray/code/14945
Author: victormote
Date: 2026-07-29 15:34:17 +0000 (Wed, 29 Jul 2026)
Log Message:
-----------
Add inflection classes for Early Modern English words regular verb forms ending in -eth.
Modified Paths:
--------------
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatn.java
Added Paths:
-----------
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/emen/
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/emen/EmenLatnSuffix_eth.java
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/emen/EmenLatnSuffix_eth_Factory.java
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/emen/package-info.java
trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/emen/
trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/emen/EmenLatnSuffix_eth_FactoryTests.java
trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/emen/EmenLatnSuffix_eth_Tests.java
Added: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/emen/EmenLatnSuffix_eth.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/emen/EmenLatnSuffix_eth.java (rev 0)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/emen/EmenLatnSuffix_eth.java 2026-07-29 15:34:17 UTC (rev 14945)
@@ -0,0 +1,68 @@
+/*
+ * Copyright 2026 The FOray Project.
+ * http://www.foray.org
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * This work is in part derived from the following work(s), used with the
+ * permission of the licensor:
+ * Apache FOP, licensed by the Apache Software Foundation
+ *
+ */
+
+/*
+ * $LastChangedRevision$
+ * $LastChangedDate$
+ * $LastChangedBy$
+ */
+
+package org.foray.orthography.inflection.emen;
+
+import org.foray.orthography.Word4a;
+import org.foray.orthography.WordSegment4a;
+import org.foray.orthography.inflection.InflectedWord;
+import org.foray.orthography.inflection.eng.EngLatn;
+
+import java.util.regex.Pattern;
+
+/**
+ * (For Early Modern English), wraps a regular verb, and adds "eth" to the end to make it present tense.
+ * For example, the English word "hold" would be wrapped to make the word "holdeth".
+ */
+public class EmenLatnSuffix_eth extends InflectedWord {
+
+ /** The pattern to be matched by words with this inflection. */
+ public static final Pattern PATTERN = Pattern.compile("^(" + EngLatn.WORD_CHARS + "+)eth$");
+
+ /** Constant needed for serialization. */
+ private static final long serialVersionUID = -2482073895198981184L;
+
+ /**
+ * Constructor.
+ * @param wrappedWord The wrapped word.
+ */
+ public EmenLatnSuffix_eth(final Word4a wrappedWord) {
+ super(wrappedWord);
+ }
+
+ @Override
+ public WordSegment4a getAppendedSegment() {
+ return EngLatn.ETH_SEGMENT;
+ }
+
+ @Override
+ public WordSegment4a getModifiedSegment() {
+ return null;
+ }
+
+}
Property changes on: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/emen/EmenLatnSuffix_eth.java
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+Author Date Id Rev
\ No newline at end of property
Added: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/emen/EmenLatnSuffix_eth_Factory.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/emen/EmenLatnSuffix_eth_Factory.java (rev 0)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/emen/EmenLatnSuffix_eth_Factory.java 2026-07-29 15:34:17 UTC (rev 14945)
@@ -0,0 +1,84 @@
+/*
+ * Copyright 2026 The FOray Project.
+ * http://www.foray.org
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * This work is in part derived from the following work(s), used with the
+ * permission of the licensor:
+ * Apache FOP, licensed by the Apache Software Foundation
+ *
+ */
+
+/*
+ * $LastChangedRevision$
+ * $LastChangedDate$
+ * $LastChangedBy$
+ */
+
+package org.foray.orthography.inflection.emen;
+
+import org.foray.orthography.Word4a;
+import org.foray.orthography.inflection.InflectionFactory;
+
+import org.axsl.orthography.PartOfSpeech;
+import org.axsl.orthography.PosQualifier;
+
+import java.util.regex.Matcher;
+
+/**
+ * Factory class for {@link EmenLatnSuffix_eth}.
+ */
+public final class EmenLatnSuffix_eth_Factory extends InflectionFactory<EmenLatnSuffix_eth> {
+
+ /** The singleton instance. */
+ private static final EmenLatnSuffix_eth_Factory THE_INSTANCE = new EmenLatnSuffix_eth_Factory();
+
+ /**
+ * Private constructor for this singleton class.
+ */
+ private EmenLatnSuffix_eth_Factory() { }
+
+ /**
+ * Returns the singleton instance.
+ * @return The singleton instance.
+ */
+ public static EmenLatnSuffix_eth_Factory getInstance() {
+ return THE_INSTANCE;
+ }
+
+ @Override
+ public CharSequence findLemmaChars(final CharSequence chars) {
+ final Matcher matcher = EmenLatnSuffix_eth.PATTERN.matcher(chars);
+ if (! matcher.matches()) {
+ return null;
+ }
+
+ final String lemmaChars = matcher.group(1);
+ return lemmaChars;
+ }
+
+ @Override
+ public boolean isValidLemma(final Word4a lemma) {
+ if (lemma.isOfQualifiedType(PartOfSpeech.VERB, PosQualifier.REGULAR_ROOT)) {
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ protected EmenLatnSuffix_eth makeInstance(final Word4a lemma) {
+ return new EmenLatnSuffix_eth(lemma);
+ }
+
+}
Property changes on: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/emen/EmenLatnSuffix_eth_Factory.java
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+Author Date Id Rev
\ No newline at end of property
Added: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/emen/package-info.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/emen/package-info.java (rev 0)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/emen/package-info.java 2026-07-29 15:34:17 UTC (rev 14945)
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2026 The FOray Project.
+ * http://www.foray.org
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * This work is in part derived from the following work(s), used with the
+ * permission of the licensor:
+ * Apache FOP, licensed by the Apache Software Foundation
+ *
+ */
+
+/*
+ * $LastChangedRevision$
+ * $LastChangedDate$
+ * $LastChangedBy$
+ */
+
+/**
+ * <p>Classes English-language inflection classes.
+ * Classes in this package are subclasses of {@link org.foray.orthography.WordWrapper} or
+ * {@link org.foray.orthography.inflection.InflectionFactory}.</p>
+ */
+
+package org.foray.orthography.inflection.emen;
Property changes on: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/emen/package-info.java
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+Author Date Id Rev
\ No newline at end of property
Modified: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatn.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatn.java 2026-07-29 14:13:05 UTC (rev 14944)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatn.java 2026-07-29 15:34:17 UTC (rev 14945)
@@ -56,6 +56,8 @@
/** Common word segment "ing" in English inflections. */
public static final StringWordSegmentUtf16 ING_SEGMENT = new StringWordSegmentUtf16("ing");
+ /** Common word segment "eth" in Early Modern English inflections. */
+ public static final StringWordSegmentUtf16 ETH_SEGMENT = new StringWordSegmentUtf16("eth");
/**
* Private constructor. This utility class should never be instantiated.
Added: trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/emen/EmenLatnSuffix_eth_FactoryTests.java
===================================================================
--- trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/emen/EmenLatnSuffix_eth_FactoryTests.java (rev 0)
+++ trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/emen/EmenLatnSuffix_eth_FactoryTests.java 2026-07-29 15:34:17 UTC (rev 14945)
@@ -0,0 +1,80 @@
+/*
+ * Copyright 2026 The FOray Project.
+ * http://www.foray.org
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * This work is in part derived from the following work(s), used with the
+ * permission of the licensor:
+ * Apache FOP, licensed by the Apache Software Foundation
+ *
+ */
+
+/*
+ * $LastChangedRevision$
+ * $LastChangedDate$
+ * $LastChangedBy$
+ */
+
+package org.foray.orthography.inflection.emen;
+
+import org.foray.orthography.Dictionary4a;
+import org.foray.orthography.StringWordTests;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import org.assertj.core.api.AssertionsForClassTypes;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.mockito.Mockito;
+
+/**
+ * Tests of {@link EmenLatnSuffix_eth_Factory}.
+ */
+public class EmenLatnSuffix_eth_FactoryTests {
+
+ /** The object under test. */
+ private EmenLatnSuffix_eth_Factory out;
+
+ /** A dictionary to use for these tests. */
+ private Dictionary4a dictionary;
+
+ /**
+ * Test setup.
+ */
+ @BeforeEach
+ public void before() {
+ this.out = EmenLatnSuffix_eth_Factory.getInstance();
+ this.dictionary = Mockito.mock(Dictionary4a.class);
+ Mockito.when(dictionary.getWord("talk")).thenReturn(StringWordTests.WORD_TALK);
+ }
+
+ /**
+ * Test of a String for which the factory should not be able to create an instance.
+ */
+ @Test
+ public void testInvalid() {
+ AssertionsForClassTypes.assertThat(out.makeInstance("talking", this.dictionary)).isNull();
+ }
+
+ /**
+ * Test of a String for which the factory should be able to create an instance.
+ */
+ @Test
+ public void testValid() {
+ final EmenLatnSuffix_eth word = out.makeInstance("talketh", this.dictionary);
+ /* Test for instance equality. */
+ AssertionsForClassTypes.assertThat(word.getWrappedWord()).isEqualTo(StringWordTests.WORD_TALK);
+ assertThat(word.getActualContent().toString()).isEqualTo("talketh");
+ }
+
+}
Property changes on: trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/emen/EmenLatnSuffix_eth_FactoryTests.java
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+Author Date Id Rev
\ No newline at end of property
Added: trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/emen/EmenLatnSuffix_eth_Tests.java
===================================================================
--- trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/emen/EmenLatnSuffix_eth_Tests.java (rev 0)
+++ trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/emen/EmenLatnSuffix_eth_Tests.java 2026-07-29 15:34:17 UTC (rev 14945)
@@ -0,0 +1,55 @@
+/*
+ * Copyright 2026 The FOray Project.
+ * http://www.foray.org
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * This work is in part derived from the following work(s), used with the
+ * permission of the licensor:
+ * Apache FOP, licensed by the Apache Software Foundation
+ *
+ */
+
+/*
+ * $LastChangedRevision$
+ * $LastChangedDate$
+ * $LastChangedBy$
+ */
+
+package org.foray.orthography.inflection.emen;
+
+import org.foray.orthography.StringWord;
+import org.foray.orthography.StringWordTests;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import org.junit.jupiter.api.Test;
+
+/**
+ * Tests of {@link EmenLatnSuffix_eth}.
+ */
+public class EmenLatnSuffix_eth_Tests {
+
+ /**
+ * Tests various aspects of words ending in -eth.
+ */
+ @Test
+ public void test01() {
+ final StringWord word = StringWordTests.WORD_TALK;
+ final EmenLatnSuffix_eth wrapper = new EmenLatnSuffix_eth(word);
+
+ assertThat(wrapper.toString()).isEqualTo("talk-eth");
+ assertThat(wrapper.getNormalizedContent()).isEqualTo("talk");
+ assertThat(wrapper.getActualContent().toString()).isEqualTo("talketh");
+ }
+
+}
Property changes on: trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/emen/EmenLatnSuffix_eth_Tests.java
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+Author Date Id Rev
\ No newline at end of property
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <vic...@us...> - 2026-07-29 14:13:08
|
Revision: 14944
http://sourceforge.net/p/foray/code/14944
Author: victormote
Date: 2026-07-29 14:13:05 +0000 (Wed, 29 Jul 2026)
Log Message:
-----------
Allow 4-character language codes.
Modified Paths:
--------------
trunk/foray/foray-common/src/main/java/org/foray/common/i18n/Language4a.java
trunk/foray/foray-common/src/test/java/org/foray/common/i18n/Language4aTests.java
Modified: trunk/foray/foray-common/src/main/java/org/foray/common/i18n/Language4a.java
===================================================================
--- trunk/foray/foray-common/src/main/java/org/foray/common/i18n/Language4a.java 2026-07-29 10:22:22 UTC (rev 14943)
+++ trunk/foray/foray-common/src/main/java/org/foray/common/i18n/Language4a.java 2026-07-29 14:13:05 UTC (rev 14944)
@@ -109,13 +109,16 @@
/** The length, in chars, of the 3-character code. */
private static final int PATTERN_3CHAR_LENGTH = 3;
+ /** The length, in chars, of the 4-character code. */
+ private static final int PATTERN_4CHAR_LENGTH = 4;
+
/** Regular expression pattern for matching a 2-character code. BCP 47 specifies that the language code is
* case-insensitive. */
private static final Pattern PATTERN_2CHAR = Pattern.compile("[A-Za-z]{2}");
- /** Regular expression pattern for matching a 3-character code. BCP 47 specifies that the language code is
- * case-insensitive. */
- private static final Pattern PATTERN_3CHAR = Pattern.compile("[A-Za-z]{3}");
+ /** Regular expression pattern for matching a 3-character or 4-character ISO 639 code. BCP 47 specifies that the
+ * language code is case-insensitive. */
+ private static final Pattern PATTERN_3_OR_4CHAR = Pattern.compile("[A-Za-z]{3,4}");
/** The initial capacity of the data structures. */
private static final int INITIAL_CAPACITY = 600;
@@ -276,6 +279,8 @@
Script4a.GREEK));
Language4a.register(new Language4a("elx", null, "Elamite", "élamite", null));
Language4a.register(new Language4a("eng", "en", "English", "anglais", Script4a.LATIN));
+ /* The "emen" language code was part of the since-withdrawn ISO 639-6 proposed standard. */
+ Language4a.register(new Language4a("emen", null, "Early Modern English", "[unknown]", Script4a.LATIN));
Language4a.register(new Language4a("enm", null, "English, Middle(1100-1500)", "anglais moyen(1100-1500)",
null));
Language4a.register(new Language4a("epo", "eo", "Esperanto", "espéranto", null));
@@ -729,8 +734,8 @@
*/
public Language4a(final String alpha3Code, final String alpha2Code, final String englishName,
final String frenchName, final Script4a defaultScript) {
- if (! matches3CharacterPattern(alpha3Code)) {
- final String template = "Alpha 3 code expected pattern: " + PATTERN_3CHAR.toString() + ", actual: %s";
+ if (! matches3or4CharacterPattern(alpha3Code)) {
+ final String template = "Alpha 3 code expected pattern: " + PATTERN_3_OR_4CHAR.toString() + ", actual: %s";
throw new IllegalArgumentException(String.format(template, alpha3Code));
}
/* Alpha 2 code can be null. */
@@ -889,19 +894,19 @@
}
/**
- * Indicates whether a given string fits the pattern of a 3-character language code.
+ * Indicates whether a given string fits the pattern of a 3-character or 4-character language code.
* This does NOT validate the language code, but only indicates that the pattern fits.
* This is useful when parsing a string like "eng-USA-Latn" by helping to distinguish which part of the string could
* be a valid language code.
* @param testString The string to be tested, e.g. "eng" or "rus".
- * @return True if and only if {@code testString} fits the pattern of a 3-character language code, i.e. that it
- * consists of exactly two lowercase characters from the Latin alphabet.
+ * @return True if and only if {@code testString} fits the pattern of a 3-character or 4-character language code,
+ * i.e. that it consists of exactly three or four lowercase characters from the Latin alphabet.
*/
- public static boolean matches3CharacterPattern(final CharSequence testString) {
+ public static boolean matches3or4CharacterPattern(final CharSequence testString) {
if (testString == null) {
return false;
}
- final Matcher matcher = PATTERN_3CHAR.matcher(testString);
+ final Matcher matcher = PATTERN_3_OR_4CHAR.matcher(testString);
return matcher.matches();
}
@@ -920,7 +925,8 @@
}
switch (testString.length()) {
case PATTERN_2CHAR_LENGTH: return matches2CharacterPattern(testString);
- case PATTERN_3CHAR_LENGTH: return matches3CharacterPattern(testString);
+ case PATTERN_3CHAR_LENGTH: return matches3or4CharacterPattern(testString);
+ case PATTERN_4CHAR_LENGTH: return matches3or4CharacterPattern(testString);
default: return false;
}
}
Modified: trunk/foray/foray-common/src/test/java/org/foray/common/i18n/Language4aTests.java
===================================================================
--- trunk/foray/foray-common/src/test/java/org/foray/common/i18n/Language4aTests.java 2026-07-29 10:22:22 UTC (rev 14943)
+++ trunk/foray/foray-common/src/test/java/org/foray/common/i18n/Language4aTests.java 2026-07-29 14:13:05 UTC (rev 14944)
@@ -86,13 +86,16 @@
@Test
public void matches3CharacterPatternTests() {
/* String should match. */
- assertThat(Language4a.matches3CharacterPattern("aaa")).isTrue();
+ assertThat(Language4a.matches3or4CharacterPattern("aaa")).isTrue();
+ /* String should match. */
+ assertThat(Language4a.matches3or4CharacterPattern("aaaa")).isTrue();
+
/* String too long. */
- assertThat(Language4a.matches3CharacterPattern("aaaa")).isFalse();
+ assertThat(Language4a.matches3or4CharacterPattern("aaaaa")).isFalse();
/* String too short. */
- assertThat(Language4a.matches3CharacterPattern("aa")).isFalse();
+ assertThat(Language4a.matches3or4CharacterPattern("aa")).isFalse();
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <vic...@us...> - 2026-07-29 10:22:26
|
Revision: 14943
http://sourceforge.net/p/foray/code/14943
Author: victormote
Date: 2026-07-29 10:22:22 +0000 (Wed, 29 Jul 2026)
Log Message:
-----------
Convert last XML derivative-pattern to java classes.
Modified Paths:
--------------
trunk/foray/foray-orthography/src/main/data/orthographies/foray-orthography-config.xml
trunk/foray/foray-orthography/src/test/resources/orthography-config.xml
Added Paths:
-----------
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_iest.java
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_iest_Factory.java
trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/eng/EngLatnSuffix_iest_FactoryTests.java
trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/eng/EngLatnSuffix_iest_Tests.java
Modified: trunk/foray/foray-orthography/src/main/data/orthographies/foray-orthography-config.xml
===================================================================
--- trunk/foray/foray-orthography/src/main/data/orthographies/foray-orthography-config.xml 2026-07-29 00:02:47 UTC (rev 14942)
+++ trunk/foray/foray-orthography/src/main/data/orthographies/foray-orthography-config.xml 2026-07-29 10:22:22 UTC (rev 14943)
@@ -42,17 +42,6 @@
<match desc="A single capital letter, such as a person's initial">^[A-Z]$</match>
</match-rule-list>
- <derivative-pattern-list id="eng-Latn-derivative-patterns">
- <derivative-pattern desc="ends with /-iest/, root ends with /-y/">
- <match>^([a-zæœëéöA-ZÆŒ\-‘’ ]+)iest$</match>
- <replace>$1y</replace>
- <derivative-rule>
- <adjective><extensible/></adjective>
- <derivative-type type="superlative"/>
- </derivative-rule>
- </derivative-pattern>
- </derivative-pattern-list>
-
<derivative-pattern-list id="fre-Latn-derivative-patterns">
<derivative-pattern desc="ends with /-s/">
<match>^([a-zæœëéöA-ZÆŒ\-‘’ ]+)s$</match>
@@ -89,6 +78,7 @@
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_er_Factory"/>
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_er2_Factory"/>
+ <derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_iest_Factory"/>
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_2c_est_Factory"/>
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_est_Factory"/>
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_est2_Factory"/>
@@ -170,7 +160,6 @@
<orthography language-iso-3char="eng" script-iso-4char="Latn" country-iso-3char="USA">
<match-rules reference="eng-Latn-match-rules"/>
- <derivative-rules reference="eng-Latn-derivative-patterns"/>
<dictionary reference="org.foray.eng.Latn.USA"/>
<hyphenation-patterns reference="hyph-patterns-eng"/>
<derivative-factories reference="eng-Latn-derivatives"/>
@@ -178,7 +167,6 @@
<orthography language-iso-3char="eng" script-iso-4char="Latn" country-iso-3char="GBR">
<match-rules reference="eng-Latn-match-rules"/>
- <derivative-rules reference="eng-Latn-derivative-patterns"/>
<dictionary reference="org.foray.eng.Latn.GBR"/>
<hyphenation-patterns reference="hyph-patterns-eng"/>
<derivative-factories reference="eng-Latn-derivatives"/>
Added: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_iest.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_iest.java (rev 0)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_iest.java 2026-07-29 10:22:22 UTC (rev 14943)
@@ -0,0 +1,72 @@
+/*
+ * Copyright 2026 The FOray Project.
+ * http://www.foray.org
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * This work is in part derived from the following work(s), used with the
+ * permission of the licensor:
+ * Apache FOP, licensed by the Apache Software Foundation
+ *
+ */
+
+/*
+ * $LastChangedRevision$
+ * $LastChangedDate$
+ * $LastChangedBy$
+ */
+
+package org.foray.orthography.inflection.eng;
+
+import org.foray.orthography.Word4a;
+import org.foray.orthography.WordSegment4a;
+import org.foray.orthography.inflection.InflectedWord;
+import org.foray.orthography.inflection.mods.Replace_y_by_i;
+
+import java.util.regex.Pattern;
+
+/**
+ * Wraps an adjective ending in "y", converting the "y" to "iest" make it comparatively greater than the lemma.
+ * For example, the English word "crazy" would be wrapped to make the word "craziest".
+ */
+public class EngLatnSuffix_iest extends InflectedWord {
+
+ /** The pattern to be matched by words with this inflection. */
+ public static final Pattern PATTERN = Pattern.compile("^(" + EngLatn.WORD_CHARS + "+)iest$");
+
+ /** Constant needed for serialization. */
+ private static final long serialVersionUID = 215291249289142549L;
+
+ /** The word segment that replaces the last word segment in the wrapped word. */
+ private WordSegment4a modifiedSegment;
+
+ /**
+ * Constructor.
+ * @param wrappedWord The wrapped word.
+ */
+ public EngLatnSuffix_iest(final Word4a wrappedWord) {
+ super(wrappedWord);
+ this.modifiedSegment = new Replace_y_by_i(wrappedWord.getLastWordSegment());
+ }
+
+ @Override
+ public WordSegment4a getAppendedSegment() {
+ return EngLatn.EST_SEGMENT;
+ }
+
+ @Override
+ public WordSegment4a getModifiedSegment() {
+ return this.modifiedSegment;
+ }
+
+}
Property changes on: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_iest.java
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+Author Date Id Rev
\ No newline at end of property
Added: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_iest_Factory.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_iest_Factory.java (rev 0)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_iest_Factory.java 2026-07-29 10:22:22 UTC (rev 14943)
@@ -0,0 +1,87 @@
+/*
+ * Copyright 2026 The FOray Project.
+ * http://www.foray.org
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * This work is in part derived from the following work(s), used with the
+ * permission of the licensor:
+ * Apache FOP, licensed by the Apache Software Foundation
+ *
+ */
+
+/*
+ * $LastChangedRevision$
+ * $LastChangedDate$
+ * $LastChangedBy$
+ */
+
+package org.foray.orthography.inflection.eng;
+
+import org.foray.orthography.Word4a;
+import org.foray.orthography.inflection.InflectionFactory;
+
+import org.axsl.orthography.PartOfSpeech;
+import org.axsl.orthography.PosQualifier;
+
+import java.util.regex.Matcher;
+
+/**
+ * Factory class for {@link EngLatnSuffix_iest}.
+ */
+public final class EngLatnSuffix_iest_Factory extends InflectionFactory<EngLatnSuffix_iest> {
+
+ /** The singleton instance. */
+ private static final EngLatnSuffix_iest_Factory THE_INSTANCE = new EngLatnSuffix_iest_Factory();
+
+ /**
+ * Private constructor for this singleton class.
+ */
+ private EngLatnSuffix_iest_Factory() { }
+
+ /**
+ * Returns the singleton instance.
+ * @return The singleton instance.
+ */
+ public static EngLatnSuffix_iest_Factory getInstance() {
+ return THE_INSTANCE;
+ }
+
+ @Override
+ public CharSequence findLemmaChars(final CharSequence chars) {
+ final Matcher matcher = EngLatnSuffix_iest.PATTERN.matcher(chars);
+ if (! matcher.matches()) {
+ return null;
+ }
+
+ final String lemmaChars = matcher.group(1) + "y";
+ return lemmaChars;
+ }
+
+ @Override
+ public boolean isValidLemma(final Word4a lemma) {
+ if (lemma.isOfQualifiedType(PartOfSpeech.ADJECTIVE, PosQualifier.EXTENSIBLE)) {
+ /*
+ <derivative-type type="superlative" desc="single-syllable root"/>
+ */
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ protected EngLatnSuffix_iest makeInstance(final Word4a lemma) {
+ return new EngLatnSuffix_iest(lemma);
+ }
+
+}
Property changes on: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_iest_Factory.java
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+Author Date Id Rev
\ No newline at end of property
Added: trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/eng/EngLatnSuffix_iest_FactoryTests.java
===================================================================
--- trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/eng/EngLatnSuffix_iest_FactoryTests.java (rev 0)
+++ trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/eng/EngLatnSuffix_iest_FactoryTests.java 2026-07-29 10:22:22 UTC (rev 14943)
@@ -0,0 +1,80 @@
+/*
+ * Copyright 2026 The FOray Project.
+ * http://www.foray.org
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * This work is in part derived from the following work(s), used with the
+ * permission of the licensor:
+ * Apache FOP, licensed by the Apache Software Foundation
+ *
+ */
+
+/*
+ * $LastChangedRevision$
+ * $LastChangedDate$
+ * $LastChangedBy$
+ */
+
+package org.foray.orthography.inflection.eng;
+
+import org.foray.orthography.Dictionary4a;
+import org.foray.orthography.StringWordTests;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import org.assertj.core.api.AssertionsForClassTypes;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.mockito.Mockito;
+
+/**
+ * Tests of {@link EngLatnSuffix_iest_Factory}.
+ */
+public class EngLatnSuffix_iest_FactoryTests {
+
+ /** The object under test. */
+ private EngLatnSuffix_iest_Factory out;
+
+ /** A dictionary to use for these tests. */
+ private Dictionary4a dictionary;
+
+ /**
+ * Test setup.
+ */
+ @BeforeEach
+ public void before() {
+ this.out = EngLatnSuffix_iest_Factory.getInstance();
+ this.dictionary = Mockito.mock(Dictionary4a.class);
+ Mockito.when(dictionary.getWord("crazy")).thenReturn(StringWordTests.WORD_CRAZY);
+ }
+
+ /**
+ * Test of a String for which the factory should not be able to create an instance.
+ */
+ @Test
+ public void testInvalid() {
+ AssertionsForClassTypes.assertThat(out.makeInstance("crazier", this.dictionary)).isNull();
+ }
+
+ /**
+ * Test of a String for which the factory should be able to create an instance.
+ */
+ @Test
+ public void testValid() {
+ final EngLatnSuffix_iest word = out.makeInstance("craziest", this.dictionary);
+ /* Test for instance equality. */
+ AssertionsForClassTypes.assertThat(word.getWrappedWord()).isEqualTo(StringWordTests.WORD_CRAZY);
+ assertThat(word.getActualContent().toString()).isEqualTo("craziest");
+ }
+
+}
Property changes on: trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/eng/EngLatnSuffix_iest_FactoryTests.java
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+Author Date Id Rev
\ No newline at end of property
Added: trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/eng/EngLatnSuffix_iest_Tests.java
===================================================================
--- trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/eng/EngLatnSuffix_iest_Tests.java (rev 0)
+++ trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/eng/EngLatnSuffix_iest_Tests.java 2026-07-29 10:22:22 UTC (rev 14943)
@@ -0,0 +1,55 @@
+/*
+ * Copyright 2026 The FOray Project.
+ * http://www.foray.org
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * This work is in part derived from the following work(s), used with the
+ * permission of the licensor:
+ * Apache FOP, licensed by the Apache Software Foundation
+ *
+ */
+
+/*
+ * $LastChangedRevision$
+ * $LastChangedDate$
+ * $LastChangedBy$
+ */
+
+package org.foray.orthography.inflection.eng;
+
+import org.foray.orthography.StringWord;
+import org.foray.orthography.StringWordTests;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import org.junit.jupiter.api.Test;
+
+/**
+ * Tests of {@link EngLatnSuffix_iest}.
+ */
+public class EngLatnSuffix_iest_Tests {
+
+ /**
+ * Tests various aspects word ending in -iest.
+ */
+ @Test
+ public void test01() {
+ final StringWord word = StringWordTests.WORD_CRAZY;
+ final EngLatnSuffix_iest wrapper = new EngLatnSuffix_iest(word);
+
+ assertThat(wrapper.toString()).isEqualTo("cra-zi-est");
+ assertThat(wrapper.getNormalizedContent()).isEqualTo("crazy");
+ assertThat(wrapper.getActualContent().toString()).isEqualTo("craziest");
+ }
+
+}
Property changes on: trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/eng/EngLatnSuffix_iest_Tests.java
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+Author Date Id Rev
\ No newline at end of property
Modified: trunk/foray/foray-orthography/src/test/resources/orthography-config.xml
===================================================================
--- trunk/foray/foray-orthography/src/test/resources/orthography-config.xml 2026-07-29 00:02:47 UTC (rev 14942)
+++ trunk/foray/foray-orthography/src/test/resources/orthography-config.xml 2026-07-29 10:22:22 UTC (rev 14943)
@@ -33,6 +33,7 @@
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_er_Factory"/>
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_er2_Factory"/>
+ <derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_iest_Factory"/>
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_2c_est_Factory"/>
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_est_Factory"/>
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_est2_Factory"/>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <vic...@us...> - 2026-07-29 00:02:49
|
Revision: 14942
http://sourceforge.net/p/foray/code/14942
Author: victormote
Date: 2026-07-29 00:02:47 +0000 (Wed, 29 Jul 2026)
Log Message:
-----------
Convert another XML derivative-pattern to java classes.
Modified Paths:
--------------
trunk/foray/foray-orthography/src/main/data/orthographies/foray-orthography-config.xml
trunk/foray/foray-orthography/src/test/java/org/foray/orthography/StringWordTests.java
trunk/foray/foray-orthography/src/test/resources/orthography-config.xml
Added Paths:
-----------
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ier.java
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ier_Factory.java
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/mods/Replace_y_by_i.java
trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ier_FactoryTests.java
trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ier_Tests.java
Modified: trunk/foray/foray-orthography/src/main/data/orthographies/foray-orthography-config.xml
===================================================================
--- trunk/foray/foray-orthography/src/main/data/orthographies/foray-orthography-config.xml 2026-07-28 23:34:10 UTC (rev 14941)
+++ trunk/foray/foray-orthography/src/main/data/orthographies/foray-orthography-config.xml 2026-07-29 00:02:47 UTC (rev 14942)
@@ -43,14 +43,6 @@
</match-rule-list>
<derivative-pattern-list id="eng-Latn-derivative-patterns">
- <derivative-pattern desc="ends with /-ier/, root ends with /-y/">
- <match>^([a-zæœëéöA-ZÆŒ\-‘’ ]+)ier$</match>
- <replace>$1y</replace>
- <derivative-rule>
- <adjective><extensible/></adjective>
- <derivative-type type="comparative"/>
- </derivative-rule>
- </derivative-pattern>
<derivative-pattern desc="ends with /-iest/, root ends with /-y/">
<match>^([a-zæœëéöA-ZÆŒ\-‘’ ]+)iest$</match>
<replace>$1y</replace>
@@ -92,6 +84,7 @@
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_ing_Factory"/>
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_ing2_Factory"/>
+ <derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_ier_Factory"/>
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_2c_er_Factory"/>
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_er_Factory"/>
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_er2_Factory"/>
Added: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ier.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ier.java (rev 0)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ier.java 2026-07-29 00:02:47 UTC (rev 14942)
@@ -0,0 +1,72 @@
+/*
+ * Copyright 2026 The FOray Project.
+ * http://www.foray.org
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * This work is in part derived from the following work(s), used with the
+ * permission of the licensor:
+ * Apache FOP, licensed by the Apache Software Foundation
+ *
+ */
+
+/*
+ * $LastChangedRevision$
+ * $LastChangedDate$
+ * $LastChangedBy$
+ */
+
+package org.foray.orthography.inflection.eng;
+
+import org.foray.orthography.Word4a;
+import org.foray.orthography.WordSegment4a;
+import org.foray.orthography.inflection.InflectedWord;
+import org.foray.orthography.inflection.mods.Replace_y_by_i;
+
+import java.util.regex.Pattern;
+
+/**
+ * Wraps an adjective ending in "y", converting the "y" to "ier" make it comparatively greater than the lemma.
+ * For example, the English word "crazy" would be wrapped to make the word "crazier".
+ */
+public class EngLatnSuffix_ier extends InflectedWord {
+
+ /** The pattern to be matched by words with this inflection. */
+ public static final Pattern PATTERN = Pattern.compile("^(" + EngLatn.WORD_CHARS + "+)ier$");
+
+ /** Constant needed for serialization. */
+ private static final long serialVersionUID = 6349215976483323091L;
+
+ /** The word segment that replaces the last word segment in the wrapped word. */
+ private WordSegment4a modifiedSegment;
+
+ /**
+ * Constructor.
+ * @param wrappedWord The wrapped word.
+ */
+ public EngLatnSuffix_ier(final Word4a wrappedWord) {
+ super(wrappedWord);
+ this.modifiedSegment = new Replace_y_by_i(wrappedWord.getLastWordSegment());
+ }
+
+ @Override
+ public WordSegment4a getAppendedSegment() {
+ return EngLatn.ER_SEGMENT;
+ }
+
+ @Override
+ public WordSegment4a getModifiedSegment() {
+ return this.modifiedSegment;
+ }
+
+}
Property changes on: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ier.java
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+Author Date Id Rev
\ No newline at end of property
Added: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ier_Factory.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ier_Factory.java (rev 0)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ier_Factory.java 2026-07-29 00:02:47 UTC (rev 14942)
@@ -0,0 +1,87 @@
+/*
+ * Copyright 2026 The FOray Project.
+ * http://www.foray.org
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * This work is in part derived from the following work(s), used with the
+ * permission of the licensor:
+ * Apache FOP, licensed by the Apache Software Foundation
+ *
+ */
+
+/*
+ * $LastChangedRevision$
+ * $LastChangedDate$
+ * $LastChangedBy$
+ */
+
+package org.foray.orthography.inflection.eng;
+
+import org.foray.orthography.Word4a;
+import org.foray.orthography.inflection.InflectionFactory;
+
+import org.axsl.orthography.PartOfSpeech;
+import org.axsl.orthography.PosQualifier;
+
+import java.util.regex.Matcher;
+
+/**
+ * Factory class for {@link EngLatnSuffix_ier}.
+ */
+public final class EngLatnSuffix_ier_Factory extends InflectionFactory<EngLatnSuffix_ier> {
+
+ /** The singleton instance. */
+ private static final EngLatnSuffix_ier_Factory THE_INSTANCE = new EngLatnSuffix_ier_Factory();
+
+ /**
+ * Private constructor for this singleton class.
+ */
+ private EngLatnSuffix_ier_Factory() { }
+
+ /**
+ * Returns the singleton instance.
+ * @return The singleton instance.
+ */
+ public static EngLatnSuffix_ier_Factory getInstance() {
+ return THE_INSTANCE;
+ }
+
+ @Override
+ public CharSequence findLemmaChars(final CharSequence chars) {
+ final Matcher matcher = EngLatnSuffix_ier.PATTERN.matcher(chars);
+ if (! matcher.matches()) {
+ return null;
+ }
+
+ final String lemmaChars = matcher.group(1) + "y";
+ return lemmaChars;
+ }
+
+ @Override
+ public boolean isValidLemma(final Word4a lemma) {
+ if (lemma.isOfQualifiedType(PartOfSpeech.ADJECTIVE, PosQualifier.EXTENSIBLE)) {
+ /*
+ <derivative-type type="comparative" desc="single-syllable root"/>
+ */
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ protected EngLatnSuffix_ier makeInstance(final Word4a lemma) {
+ return new EngLatnSuffix_ier(lemma);
+ }
+
+}
Property changes on: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ier_Factory.java
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+Author Date Id Rev
\ No newline at end of property
Added: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/mods/Replace_y_by_i.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/mods/Replace_y_by_i.java (rev 0)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/mods/Replace_y_by_i.java 2026-07-29 00:02:47 UTC (rev 14942)
@@ -0,0 +1,61 @@
+/*
+ * Copyright 2026 The FOray Project.
+ * http://www.foray.org
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * This work is in part derived from the following work(s), used with the
+ * permission of the licensor:
+ * Apache FOP, licensed by the Apache Software Foundation
+ *
+ */
+
+/*
+ * $LastChangedRevision$
+ * $LastChangedDate$
+ * $LastChangedBy$
+ */
+
+package org.foray.orthography.inflection.mods;
+
+import org.foray.orthography.inflection.ModifiedWordSegment;
+
+import org.axsl.orthography.WordSegment;
+
+/**
+ * Replaces a trailing "y" with "i" in the wrapped word segment.
+ */
+public class Replace_y_by_i extends ModifiedWordSegment {
+
+ /** Constant needed for serialization. */
+ private static final long serialVersionUID = 7801850814679870505L;
+
+ /**
+ * Constructor.
+ * @param wrappedSegment The wrapped segment.
+ */
+ public Replace_y_by_i(final WordSegment wrappedSegment) {
+ super(wrappedSegment);
+ }
+
+ @Override
+ public String getNormalForm() {
+ return "y";
+ }
+
+ @Override
+ public String getWrappedForm() {
+ return "i";
+ }
+
+}
Property changes on: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/mods/Replace_y_by_i.java
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+Author Date Id Rev
\ No newline at end of property
Modified: trunk/foray/foray-orthography/src/test/java/org/foray/orthography/StringWordTests.java
===================================================================
--- trunk/foray/foray-orthography/src/test/java/org/foray/orthography/StringWordTests.java 2026-07-28 23:34:10 UTC (rev 14941)
+++ trunk/foray/foray-orthography/src/test/java/org/foray/orthography/StringWordTests.java 2026-07-29 00:02:47 UTC (rev 14942)
@@ -140,11 +140,20 @@
public static final StringWord WORD_THIN = new StringWord(EXTENSIBLE_ADJECTIVE, "thin");
/** An adjective test word: thinner. */
- public static final StringWord WORD_THINNER = new StringWord(EXTENSIBLE_ADJECTIVE, "thin", "ner");
+ public static final StringWord WORD_THINNER = new StringWord(PosBuilder.ADJECTIVE, "thin", "ner");
/** An adjective test word: thinnest. */
- public static final StringWord WORD_THINNEST = new StringWord(EXTENSIBLE_ADJECTIVE, "thin", "nest");
+ public static final StringWord WORD_THINNEST = new StringWord(PosBuilder.ADJECTIVE, "thin", "nest");
+ /** An extensible adjective test word: crazy. */
+ public static final StringWord WORD_CRAZY = new StringWord(EXTENSIBLE_ADJECTIVE, "cra", "zy");
+
+ /** An adjective test word: crazier. */
+ public static final StringWord WORD_CRAZIER = new StringWord(PosBuilder.ADJECTIVE, "cra", "zi", "er");
+
+ /** An adjective test word: craziest. */
+ public static final StringWord WORD_CRAZIEST = new StringWord(PosBuilder.ADJECTIVE, "cra", "zi", "est");
+
/**
* Test of {@link StringWord#getWordComponent(int)}.
*/
Added: trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ier_FactoryTests.java
===================================================================
--- trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ier_FactoryTests.java (rev 0)
+++ trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ier_FactoryTests.java 2026-07-29 00:02:47 UTC (rev 14942)
@@ -0,0 +1,80 @@
+/*
+ * Copyright 2026 The FOray Project.
+ * http://www.foray.org
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * This work is in part derived from the following work(s), used with the
+ * permission of the licensor:
+ * Apache FOP, licensed by the Apache Software Foundation
+ *
+ */
+
+/*
+ * $LastChangedRevision$
+ * $LastChangedDate$
+ * $LastChangedBy$
+ */
+
+package org.foray.orthography.inflection.eng;
+
+import org.foray.orthography.Dictionary4a;
+import org.foray.orthography.StringWordTests;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import org.assertj.core.api.AssertionsForClassTypes;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.mockito.Mockito;
+
+/**
+ * Tests of {@link EngLatnSuffix_ier_Factory}.
+ */
+public class EngLatnSuffix_ier_FactoryTests {
+
+ /** The object under test. */
+ private EngLatnSuffix_ier_Factory out;
+
+ /** A dictionary to use for these tests. */
+ private Dictionary4a dictionary;
+
+ /**
+ * Test setup.
+ */
+ @BeforeEach
+ public void before() {
+ this.out = EngLatnSuffix_ier_Factory.getInstance();
+ this.dictionary = Mockito.mock(Dictionary4a.class);
+ Mockito.when(dictionary.getWord("crazy")).thenReturn(StringWordTests.WORD_CRAZY);
+ }
+
+ /**
+ * Test of a String for which the factory should not be able to create an instance.
+ */
+ @Test
+ public void testInvalid() {
+ AssertionsForClassTypes.assertThat(out.makeInstance("craziest", this.dictionary)).isNull();
+ }
+
+ /**
+ * Test of a String for which the factory should be able to create an instance.
+ */
+ @Test
+ public void testValid() {
+ final EngLatnSuffix_ier word = out.makeInstance("crazier", this.dictionary);
+ /* Test for instance equality. */
+ AssertionsForClassTypes.assertThat(word.getWrappedWord()).isEqualTo(StringWordTests.WORD_CRAZY);
+ assertThat(word.getActualContent().toString()).isEqualTo("crazier");
+ }
+
+}
Property changes on: trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ier_FactoryTests.java
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+Author Date Id Rev
\ No newline at end of property
Added: trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ier_Tests.java
===================================================================
--- trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ier_Tests.java (rev 0)
+++ trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ier_Tests.java 2026-07-29 00:02:47 UTC (rev 14942)
@@ -0,0 +1,55 @@
+/*
+ * Copyright 2026 The FOray Project.
+ * http://www.foray.org
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * This work is in part derived from the following work(s), used with the
+ * permission of the licensor:
+ * Apache FOP, licensed by the Apache Software Foundation
+ *
+ */
+
+/*
+ * $LastChangedRevision$
+ * $LastChangedDate$
+ * $LastChangedBy$
+ */
+
+package org.foray.orthography.inflection.eng;
+
+import org.foray.orthography.StringWord;
+import org.foray.orthography.StringWordTests;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import org.junit.jupiter.api.Test;
+
+/**
+ * Tests of {@link EngLatnSuffix_ier}.
+ */
+public class EngLatnSuffix_ier_Tests {
+
+ /**
+ * Tests various aspects word ending in -ier.
+ */
+ @Test
+ public void test01() {
+ final StringWord word = StringWordTests.WORD_CRAZY;
+ final EngLatnSuffix_ier wrapper = new EngLatnSuffix_ier(word);
+
+ assertThat(wrapper.toString()).isEqualTo("cra-zi-er");
+ assertThat(wrapper.getNormalizedContent()).isEqualTo("crazy");
+ assertThat(wrapper.getActualContent().toString()).isEqualTo("crazier");
+ }
+
+}
Property changes on: trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ier_Tests.java
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+Author Date Id Rev
\ No newline at end of property
Modified: trunk/foray/foray-orthography/src/test/resources/orthography-config.xml
===================================================================
--- trunk/foray/foray-orthography/src/test/resources/orthography-config.xml 2026-07-28 23:34:10 UTC (rev 14941)
+++ trunk/foray/foray-orthography/src/test/resources/orthography-config.xml 2026-07-29 00:02:47 UTC (rev 14942)
@@ -28,6 +28,7 @@
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_ing_Factory"/>
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_ing2_Factory"/>
+ <derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_ier_Factory"/>
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_2c_er_Factory"/>
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_er_Factory"/>
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_er2_Factory"/>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <vic...@us...> - 2026-07-28 23:34:13
|
Revision: 14941
http://sourceforge.net/p/foray/code/14941
Author: victormote
Date: 2026-07-28 23:34:10 +0000 (Tue, 28 Jul 2026)
Log Message:
-----------
Convert another XML derivative-pattern to java classes.
Modified Paths:
--------------
trunk/foray/foray-orthography/src/main/data/orthographies/foray-orthography-config.xml
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_est.java
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/mods/Full_2c_est.java
trunk/foray/foray-orthography/src/test/resources/orthography-config.xml
Added Paths:
-----------
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_er.java
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_er_Factory.java
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/mods/Full_2c_er.java
trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_er_FactoryTests.java
trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_er_Tests.java
Modified: trunk/foray/foray-orthography/src/main/data/orthographies/foray-orthography-config.xml
===================================================================
--- trunk/foray/foray-orthography/src/main/data/orthographies/foray-orthography-config.xml 2026-07-28 23:14:26 UTC (rev 14940)
+++ trunk/foray/foray-orthography/src/main/data/orthographies/foray-orthography-config.xml 2026-07-28 23:34:10 UTC (rev 14941)
@@ -43,14 +43,6 @@
</match-rule-list>
<derivative-pattern-list id="eng-Latn-derivative-patterns">
- <derivative-pattern desc="ends with certain double consonants, then /-er/">
- <match>^([a-zæœëéöA-ZÆŒ\-‘’ ]+)([d])(\2)er$</match>
- <replace>$1$2</replace>
- <derivative-rule>
- <adjective><extensible/></adjective>
- <derivative-type type="comparative"/>
- </derivative-rule>
- </derivative-pattern>
<derivative-pattern desc="ends with /-ier/, root ends with /-y/">
<match>^([a-zæœëéöA-ZÆŒ\-‘’ ]+)ier$</match>
<replace>$1y</replace>
@@ -100,6 +92,7 @@
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_ing_Factory"/>
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_ing2_Factory"/>
+ <derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_2c_er_Factory"/>
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_er_Factory"/>
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_er2_Factory"/>
Added: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_er.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_er.java (rev 0)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_er.java 2026-07-28 23:34:10 UTC (rev 14941)
@@ -0,0 +1,72 @@
+/*
+ * Copyright 2026 The FOray Project.
+ * http://www.foray.org
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * This work is in part derived from the following work(s), used with the
+ * permission of the licensor:
+ * Apache FOP, licensed by the Apache Software Foundation
+ *
+ */
+
+/*
+ * $LastChangedRevision$
+ * $LastChangedDate$
+ * $LastChangedBy$
+ */
+
+package org.foray.orthography.inflection.eng;
+
+import org.foray.orthography.Word4a;
+import org.foray.orthography.WordSegment4a;
+import org.foray.orthography.inflection.InflectedWord;
+import org.foray.orthography.inflection.mods.Full_2c_er;
+
+import java.util.regex.Pattern;
+
+/**
+ * Wraps an extensible adjective that ends with a vowel and then a consonant, doubles that consonant, then adds "er" at
+ * the end to make it a comparative.
+ * For example, the English word "thin" would be wrapped to make the word "thinner".
+ */
+public class EngLatnSuffix_2c_er extends InflectedWord {
+
+ /** The pattern to be matched by words with this inflection. */
+ public static final Pattern PATTERN = Pattern.compile("^(" + EngLatn.WORD_CHARS + "+)([dgnt])(\\2)er$");
+
+ /** Constant needed for serialization. */
+ private static final long serialVersionUID = -3858054928625944035L;
+
+ /**
+ * Constructor.
+ * @param wrappedWord The wrapped word.
+ */
+ public EngLatnSuffix_2c_er(final Word4a wrappedWord) {
+ super(wrappedWord);
+ }
+
+ @Override
+ public WordSegment4a getAppendedSegment() {
+ final WordSegment4a lastSegment = getWrappedWord().getLastWordSegment();
+ final int lastIndex = lastSegment.length() - 1;
+ final char lastChar = lastSegment.charAt(lastIndex);
+ return Full_2c_er.getInstance(lastChar);
+ }
+
+ @Override
+ public WordSegment4a getModifiedSegment() {
+ return null;
+ }
+
+}
Property changes on: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_er.java
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+Author Date Id Rev
\ No newline at end of property
Added: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_er_Factory.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_er_Factory.java (rev 0)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_er_Factory.java 2026-07-28 23:34:10 UTC (rev 14941)
@@ -0,0 +1,88 @@
+/*
+ * Copyright 2019 The FOray Project.
+ * http://www.foray.org
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * This work is in part derived from the following work(s), used with the
+ * permission of the licensor:
+ * Apache FOP, licensed by the Apache Software Foundation
+ *
+ */
+
+/*
+ * $LastChangedRevision$
+ * $LastChangedDate$
+ * $LastChangedBy$
+ */
+
+package org.foray.orthography.inflection.eng;
+
+import org.foray.orthography.Word4a;
+import org.foray.orthography.inflection.InflectionFactory;
+
+import org.axsl.orthography.PartOfSpeech;
+import org.axsl.orthography.PosQualifier;
+
+import java.util.regex.Matcher;
+
+/**
+ * Factory class for {@link EngLatnSuffix_2c_er}.
+ */
+public final class EngLatnSuffix_2c_er_Factory extends InflectionFactory<EngLatnSuffix_2c_er> {
+
+ /** The singleton instance. */
+ private static final EngLatnSuffix_2c_er_Factory THE_INSTANCE = new EngLatnSuffix_2c_er_Factory();
+
+ /**
+ * Private constructor for this singleton class.
+ */
+ private EngLatnSuffix_2c_er_Factory() { }
+
+ /**
+ * Returns the singleton instance.
+ * @return The singleton instance.
+ */
+ public static EngLatnSuffix_2c_er_Factory getInstance() {
+ return THE_INSTANCE;
+ }
+
+ @Override
+ public CharSequence findLemmaChars(final CharSequence chars) {
+ final Matcher matcher = EngLatnSuffix_2c_er.PATTERN.matcher(chars);
+ if (! matcher.matches()) {
+ return null;
+ }
+
+ final String lemmaChars = matcher.group(1) + matcher.group(2);
+ return lemmaChars;
+ }
+
+ @Override
+ public boolean isValidLemma(final Word4a lemma) {
+ if (lemma.isOfQualifiedType(PartOfSpeech.ADJECTIVE, PosQualifier.EXTENSIBLE)) {
+ /*
+ <adjective><extensible/></adjective>
+ <derivative-type type="comparative"/>
+ */
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ protected EngLatnSuffix_2c_er makeInstance(final Word4a lemma) {
+ return new EngLatnSuffix_2c_er(lemma);
+ }
+
+}
Property changes on: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_er_Factory.java
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+Author Date Id Rev
\ No newline at end of property
Modified: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_est.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_est.java 2026-07-28 23:14:26 UTC (rev 14940)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_est.java 2026-07-28 23:34:10 UTC (rev 14941)
@@ -43,7 +43,7 @@
public class EngLatnSuffix_2c_est extends InflectedWord {
/** The pattern to be matched by words with this inflection. */
- public static final Pattern PATTERN = Pattern.compile("^(" + EngLatn.WORD_CHARS + "+)([dn])(\\2)est$");
+ public static final Pattern PATTERN = Pattern.compile("^(" + EngLatn.WORD_CHARS + "+)([dgnt])(\\2)est$");
/** Constant needed for serialization. */
private static final long serialVersionUID = 8397674653229148700L;
Added: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/mods/Full_2c_er.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/mods/Full_2c_er.java (rev 0)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/mods/Full_2c_er.java 2026-07-28 23:34:10 UTC (rev 14941)
@@ -0,0 +1,72 @@
+/*
+ * Copyright 2026 The FOray Project.
+ * http://www.foray.org
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * This work is in part derived from the following work(s), used with the
+ * permission of the licensor:
+ * Apache FOP, licensed by the Apache Software Foundation
+ *
+ */
+
+/*
+ * $LastChangedRevision$
+ * $LastChangedDate$
+ * $LastChangedBy$
+ */
+
+package org.foray.orthography.inflection.mods;
+
+import org.foray.common.primitive.CodePointUtils;
+import org.foray.orthography.StringWordSegmentLatin1;
+import org.foray.orthography.WordSegment4a;
+
+/**
+ * Full segment composed of a single consonant following by "er".
+ */
+public final class Full_2c_er {
+
+ /** Pre-constructed instance staring with "d". */
+ private static final StringWordSegmentLatin1 D_INSTANCE = new StringWordSegmentLatin1("der");
+
+ /** Pre-constructed instance staring with "g". */
+ private static final StringWordSegmentLatin1 G_INSTANCE = new StringWordSegmentLatin1("ger");
+
+ /** Pre-constructed instance staring with "n". */
+ private static final StringWordSegmentLatin1 N_INSTANCE = new StringWordSegmentLatin1("ner");
+
+ /** Pre-constructed instance staring with "t". */
+ private static final StringWordSegmentLatin1 T_INSTANCE = new StringWordSegmentLatin1("ter");
+
+ /**
+ * Private constructor. This is a utility class that should not be instantiated.
+ */
+ private Full_2c_er() { }
+
+ /**
+ * Gets the segment instance that beings with a specified consonant.
+ * @param consonant The consonant for which the segment instance is needed.
+ * @return The segment instance for {@code consonant}.
+ */
+ public static WordSegment4a getInstance(final int consonant) {
+ switch (consonant) {
+ case 'd': return D_INSTANCE;
+ case 'g': return G_INSTANCE;
+ case 'n': return N_INSTANCE;
+ case 't': return T_INSTANCE;
+ }
+ throw new IllegalArgumentException("Unexpected leading consonant: " + CodePointUtils.toString(consonant));
+ }
+
+}
Property changes on: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/mods/Full_2c_er.java
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+Author Date Id Rev
\ No newline at end of property
Modified: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/mods/Full_2c_est.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/mods/Full_2c_est.java 2026-07-28 23:14:26 UTC (rev 14940)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/mods/Full_2c_est.java 2026-07-28 23:34:10 UTC (rev 14941)
@@ -40,9 +40,15 @@
/** Pre-constructed instance staring with "d". */
private static final StringWordSegmentLatin1 D_INSTANCE = new StringWordSegmentLatin1("dest");
+ /** Pre-constructed instance staring with "g". */
+ private static final StringWordSegmentLatin1 G_INSTANCE = new StringWordSegmentLatin1("gest");
+
/** Pre-constructed instance staring with "n". */
private static final StringWordSegmentLatin1 N_INSTANCE = new StringWordSegmentLatin1("nest");
+ /** Pre-constructed instance staring with "t". */
+ private static final StringWordSegmentLatin1 T_INSTANCE = new StringWordSegmentLatin1("test");
+
/**
* Private constructor. This is a utility class that should not be instantiated.
*/
@@ -56,7 +62,9 @@
public static WordSegment4a getInstance(final int consonant) {
switch (consonant) {
case 'd': return D_INSTANCE;
+ case 'g': return G_INSTANCE;
case 'n': return N_INSTANCE;
+ case 't': return T_INSTANCE;
}
throw new IllegalArgumentException("Unexpected leading consonant: " + CodePointUtils.toString(consonant));
}
Added: trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_er_FactoryTests.java
===================================================================
--- trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_er_FactoryTests.java (rev 0)
+++ trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_er_FactoryTests.java 2026-07-28 23:34:10 UTC (rev 14941)
@@ -0,0 +1,81 @@
+/*
+ * Copyright 2026 The FOray Project.
+ * http://www.foray.org
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * This work is in part derived from the following work(s), used with the
+ * permission of the licensor:
+ * Apache FOP, licensed by the Apache Software Foundation
+ *
+ */
+
+/*
+ * $LastChangedRevision$
+ * $LastChangedDate$
+ * $LastChangedBy$
+ */
+
+package org.foray.orthography.inflection.eng;
+
+import org.foray.orthography.Dictionary4a;
+import org.foray.orthography.StringWordTests;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import org.assertj.core.api.AssertionsForClassTypes;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.mockito.Mockito;
+
+/**
+ * Tests of {@link EngLatnSuffix_2c_er_Factory}.
+ */
+public class EngLatnSuffix_2c_er_FactoryTests {
+
+ /** The object under test. */
+ private EngLatnSuffix_2c_er_Factory out;
+
+ /** A dictionary to use for these tests. */
+ private Dictionary4a dictionary;
+
+ /**
+ * Test setup.
+ */
+ @BeforeEach
+ public void before() {
+ this.out = EngLatnSuffix_2c_er_Factory.getInstance();
+ this.dictionary = Mockito.mock(Dictionary4a.class);
+ Mockito.when(dictionary.getWord("thin")).thenReturn(StringWordTests.WORD_THIN);
+ }
+
+ /**
+ * Test of a String for which the factory should not be able to create an instance.
+ */
+ @Test
+ public void testInvalid() {
+ final EngLatnSuffix_2c_er word = out.makeInstance("thinnest", this.dictionary);
+ AssertionsForClassTypes.assertThat(word).isNull();
+ }
+
+ /**
+ * Test of a String for which the factory should be able to create an instance.
+ */
+ @Test
+ public void testValid() {
+ final EngLatnSuffix_2c_er word = out.makeInstance("thinner", this.dictionary);
+ /* Test for instance equality. */
+ AssertionsForClassTypes.assertThat(word.getWrappedWord()).isSameAs(StringWordTests.WORD_THIN);
+ assertThat(word.getActualContent().toString()).isEqualTo("thinner");
+ }
+
+}
Property changes on: trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_er_FactoryTests.java
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+Author Date Id Rev
\ No newline at end of property
Added: trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_er_Tests.java
===================================================================
--- trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_er_Tests.java (rev 0)
+++ trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_er_Tests.java 2026-07-28 23:34:10 UTC (rev 14941)
@@ -0,0 +1,55 @@
+/*
+ * Copyright 2026 The FOray Project.
+ * http://www.foray.org
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * This work is in part derived from the following work(s), used with the
+ * permission of the licensor:
+ * Apache FOP, licensed by the Apache Software Foundation
+ *
+ */
+
+/*
+ * $LastChangedRevision$
+ * $LastChangedDate$
+ * $LastChangedBy$
+ */
+
+package org.foray.orthography.inflection.eng;
+
+import org.foray.orthography.StringWord;
+import org.foray.orthography.StringWordTests;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import org.junit.jupiter.api.Test;
+
+/**
+ * Tests of {@link EngLatnSuffix_2c_er}.
+ */
+public class EngLatnSuffix_2c_er_Tests {
+
+ /**
+ * Tests for words ending in double-consonant following by "er".
+ */
+ @Test
+ public void test01() {
+ final StringWord word = StringWordTests.WORD_THIN;
+ final EngLatnSuffix_2c_er wrapper = new EngLatnSuffix_2c_er(word);
+
+ assertThat(wrapper.toString()).isEqualTo("thin-ner");
+ assertThat(wrapper.getNormalizedContent()).isEqualTo("thin");
+ assertThat(wrapper.getActualContent().toString()).isEqualTo("thinner");
+ }
+
+}
Property changes on: trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_er_Tests.java
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+Author Date Id Rev
\ No newline at end of property
Modified: trunk/foray/foray-orthography/src/test/resources/orthography-config.xml
===================================================================
--- trunk/foray/foray-orthography/src/test/resources/orthography-config.xml 2026-07-28 23:14:26 UTC (rev 14940)
+++ trunk/foray/foray-orthography/src/test/resources/orthography-config.xml 2026-07-28 23:34:10 UTC (rev 14941)
@@ -28,6 +28,7 @@
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_ing_Factory"/>
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_ing2_Factory"/>
+ <derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_2c_er_Factory"/>
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_er_Factory"/>
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_er2_Factory"/>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <vic...@us...> - 2026-07-28 23:14:29
|
Revision: 14940
http://sourceforge.net/p/foray/code/14940
Author: victormote
Date: 2026-07-28 23:14:26 +0000 (Tue, 28 Jul 2026)
Log Message:
-----------
Normal dictionary editing.
Modified Paths:
--------------
trunk/foray/foray-orthography/src/main/data/dictionaries/eng-Latn-ZZZ.dict.xml
Modified: trunk/foray/foray-orthography/src/main/data/dictionaries/eng-Latn-ZZZ.dict.xml
===================================================================
--- trunk/foray/foray-orthography/src/main/data/dictionaries/eng-Latn-ZZZ.dict.xml 2026-07-28 23:14:04 UTC (rev 14939)
+++ trunk/foray/foray-orthography/src/main/data/dictionaries/eng-Latn-ZZZ.dict.xml 2026-07-28 23:14:26 UTC (rev 14940)
@@ -17440,7 +17440,7 @@
<w><t>blithe-some</t></w>
<w><t>blithe-some-ly</t></w>
<w><t>blithe-some-ness</t></w>
-<w><t>blitz</t></w>
+<w><t>blitz</t><noun><convertible-to-possessive/></noun><verb><regular-root/></verb></w>
<w><t>Blitz</t></w>
<w><t>blitz-krieg</t></w>
<w><t>Blitz-stein</t></w>
@@ -21581,6 +21581,7 @@
</section>
<section description="C">
+<section description="C abbrev">
<w><t>C/A</t></w>
<w><t>c/d</t></w>
<w><t>c/f</t></w>
@@ -21588,6 +21589,9 @@
<w><t>c/n</t></w>
<w><t>c/o</t></w>
<w><t>C=3</t></w>
+</section>
+
+<section description="Ca">
<w><t>Caa-ba</t></w>
<w><t>Ca-an-thus</t></w>
<w><t>CAB</t></w>
@@ -24869,6 +24873,9 @@
<w><t>cay-use</t></w>
<w><t>Caz-e-no-vi-a</t></w>
<w><t>ca-zique</t></w>
+</section>
+
+<section description="Cb to Cd">
<phrase><t>C bat-ter-y</t></phrase>
<w><t>CBC</t></w>
<w><t>CBD</t></w>
@@ -24887,6 +24894,9 @@
<w><t>C-do-va</t></w>
<w><t>Cdr</t></w>
<w><t>CDT</t></w>
+</section>
+
+<section description="Ce to Cg">
<w><t>ce-a-no-thus</t></w>
<w><t>Cea-r</t></w>
<w><t>Ce-a-rá</t></w>
@@ -25548,6 +25558,9 @@
<w><t>CGM</t></w>
<w><t>CGS</t></w>
<phrase><t>cgs u-nits</t></phrase>
+</section>
+
+<section description="Ch">
<w><t>ch.</t><abbrev referenced-word="chapter"/></w>
<w><t>chab-a-zite</t></w>
<w><t>Chab-lis</t></w>
@@ -27924,6 +27937,9 @@
<w><t>chy-mo-tryp-sin-o-gen</t></w>
<w><t>chy-mous</t></w>
<w><t>chypre</t></w>
+</section>
+
+<section description="Ci">
<w><t>CIA</t></w>
<w><t>Cia-no</t></w>
<w><t>ciao</t></w>
@@ -28505,6 +28521,9 @@
<w><t>civ-ism</t></w>
<w><t>civ-vies</t></w>
<w><t>civ-vy</t></w>
+</section>
+
+<section description="Cl">
<w><t>clab-ber</t></w>
<w><t>clab-u-lar-i-a</t></w>
<w><t>clab-u-lar-i-um</t></w>
@@ -29406,6 +29425,9 @@
<w><t>Clyt-i-a</t></w>
<w><t>Cly-ti-ë</t></w>
<w><t>Cly-ti-us</t></w>
+</section>
+
+<section description="Cm to Cn">
<w><t>Cmdr</t></w>
<w><t>CMF</t></w>
<w><t>CMG</t></w>
@@ -29433,6 +29455,7 @@
<w><t>C=note</t></w>
<w><t>CNS</t></w>
<w><t>Cnut</t></w>
+</section>
<section description="Co">
<w><t>CO</t><abbrev referenced-word="Colorado"/></w>
@@ -34803,6 +34826,7 @@
<w><t>cov-et-ous-ly</t></w>
<w><t>cov-et-ous-ness</t></w>
<w><t>cov-ey</t></w>
+<w><t>COVID</t><noun><convertible-to-possessive/></noun></w>
<w><t>cov-in</t></w>
<w><t>Co-vi-na</t></w>
<w><t>cov-ing</t></w>
@@ -34922,6 +34946,7 @@
<w><t>Coz-zens</t></w>
</section>
+<section description="Cp to Cr">
<w><t>cpd</t></w>
<w><t>Cpl</t></w>
<w><t>CPO</t></w>
@@ -36283,6 +36308,9 @@
<phrase><t>crys-tal sys-tem</t></phrase>
<phrase><t>crys-tal vi-o-let</t></phrase>
<w><t>cr-zette</t></w>
+</section>
+
+<section description="Cs to Ct">
<w><t>C’s</t></w>
<w><t>CSB</t></w>
<w><t>csc</t></w>
@@ -36313,6 +36341,9 @@
<w><t>ctr</t></w>
<w><t>cts</t></w>
<w><t>CTV</t></w>
+</section>
+
+<section description="Cu">
<w><t>cua-dril-la</t></w>
<w><t>cua-dril-las</t></w>
<w><t>cua-mu-chil</t></w>
@@ -37018,6 +37049,9 @@
<w><t>Cu-ya-bá</t></w>
<w><t>Cuyp</t></w>
<w><t>Cuz-co</t></w>
+</section>
+
+<section description="Cv to Cz">
<w><t>CVA</t></w>
<w><t>C-vennes</t></w>
<w><t>CVO</t></w>
@@ -37397,6 +37431,7 @@
<w><t>Cz-sto-cho-wa</t></w>
<w><t>C-zur</t></w>
</section>
+</section>
<section description="D">
<w><t>D/A</t></w>
@@ -46668,8 +46703,11 @@
</section>
<section description="E">
+<section description="E abbrev">
<w><t>e.g.</t><abbrev referenced-word="exempli gratia"/><comment>Latin "for example."</comment></w>
<w><t>e. g.</t><abbrev referenced-word="exempli gratia"/><comment>Latin "for example."</comment></w>
+</section>
+<section description="Ea">
<w><t>e-a-bly</t></w>
<w><t>each</t></w>
<phrase><t>each oth-er</t></phrase>
@@ -46921,6 +46959,8 @@
<w><t>eaves-dropped</t></w>
<w><t>eaves-drop-per</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>eaves-drop-ping</t></w>
+</section>
+<section description="Eb">
<w><t>ebb</t><verb><regular-root/></verb></w>
<w><t>EBCDIC</t></w>
<w><t>Eb-e-ne-zer</t></w>
@@ -46952,6 +46992,9 @@
<w><t>e-bul-li-os-co-py</t></w>
<w><t>eb-ul-li-tion</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>e-bur-na-tion</t></w>
+</section>
+
+<section description="Ec">
<w><t>e-cad</t></w>
<w><t>e-cal-ca-rate</t></w>
<w><t>e-car-i-nate</t></w>
@@ -47224,6 +47267,9 @@
<w><t>ec-ze-ma</t></w>
<w><t>ec-ze-ma-toid</t></w>
<w><t>ec-zem-a-tous</t></w>
+</section>
+
+<section description="Ed">
<w><t>ed.</t><abbrev referenced-word="editor, edited"/></w>
<w><t>Ed-a</t></w>
<w><t>e-da-cious</t></w>
@@ -47415,6 +47461,9 @@
<w><t>E-dyie</t></w>
<w><t>E-dyth</t></w>
<w><t>E-dythe</t></w>
+</section>
+
+<section description="Ee">
<w><t>EEC</t></w>
<w><t>EEG</t></w>
<w><t>eel</t></w>
@@ -47437,6 +47486,9 @@
<w><t>Eer-o-te-ma</t></w>
<w><t>ee-ry</t></w>
<w><t>E-ë-ti-on</t></w>
+</section>
+
+<section description="Ef">
<w><t>E-fa-h</t></w>
<w><t>E-fa-han</t></w>
<w><t>eff</t></w>
@@ -47559,6 +47611,9 @@
<w><t>EFTA</t></w>
<w><t>eft-soon</t></w>
<w><t>eft-soons</t></w>
+</section>
+
+<section description="Eg">
<w><t>e-gad</t></w>
<w><t>E-ga-di</t></w>
<w><t>e-gal</t></w>
@@ -47640,6 +47695,9 @@
<w><t>E-gyp-to-log-i-cal</t></w>
<w><t>E-gyp-tol-o-gist</t></w>
<w><t>E-gyp-tol-o-gy</t></w>
+</section>
+
+<section description="Eh to Ei">
<w><t>EHF</t></w>
<w><t>Eh-ren-breit-stein</t></w>
<w><t>Eh-ren-burg</t></w>
@@ -47731,6 +47789,9 @@
<w><t>eis-tedd-fods</t></w>
<w><t>ei-ther</t></w>
<w><t>ei-ther=or</t></w>
+</section>
+
+<section description="Ej to Ek">
<w><t>e-jac-u-late</t><verb><regular-root/></verb></w>
<w><t>e-jac-u-lat-ed</t></w>
<w><t>e-jac-u-lat-ing</t></w>
@@ -47755,6 +47816,9 @@
<w><t>ek-ing</t></w>
<w><t>e-kis-tics</t></w>
<w><t>ek-te-ne</t></w>
+</section>
+
+<section description="El">
<phrase><t>El Aai-un</t></phrase>
<w><t>e-lab-o-rate</t></w>
<w><t>e-lab-o-rat-ed</t></w>
@@ -48509,6 +48573,9 @@
<w><t>El-ze-vier</t></w>
<w><t>El-ze-vir</t></w>
<w><t>El-ze-vir-i-an</t></w>
+</section>
+
+<section description="Em">
<w><t>’em</t><contraction referenced-word="them"/></w>
<w><t>e-ma-ci-ate</t></w>
<w><t>e-ma-ci-at-ed</t></w>
@@ -48515,6 +48582,8 @@
<w><t>e-ma-ci-at-ing</t></w>
<w><t>e-ma-ci-a-tion</t></w>
<w><t>em-a-gram</t></w>
+<w><t>e-mail</t><noun><pluralizable/><convertible-to-possessive/></noun><verb><regular-root/></verb></w>
+<w><t>e=mail</t><noun><pluralizable/><convertible-to-possessive/></noun><verb><regular-root/></verb></w>
<w><t>em-a-nant</t></w>
<w><t>em-a-nate</t><verb><regular-root/></verb></w>
<w><t>em-a-nat-ed</t></w>
@@ -49008,6 +49077,9 @@
<w><t>e-munc-to-ry</t></w>
<w><t>e-mu=wren</t></w>
<w><t>em-yrie</t></w>
+</section>
+
+<section description="En">
<w><t>E-na</t></w>
<w><t>en-a-ble</t><verb><regular-root/></verb></w>
<w><t>en-a-bler</t></w>
@@ -50167,6 +50239,9 @@
<w><t>en-zy-mol-y-sis</t></w>
<w><t>en-zy-mo-lyt-ic</t></w>
<w><t>en-zy-mo-sis</t></w>
+</section>
+
+<section description="Eo">
<w><t>e-o-bi-ont</t></w>
<w><t>E-o-cene</t></w>
<w><t>E-o-gene</t></w>
@@ -50195,6 +50270,9 @@
<w><t>e-o-sin-o-phil-ic</t></w>
<w><t>e-o-si-noph-i-lous</t></w>
<w><t>E-o-zo-ic</t></w>
+</section>
+
+<section description="Ep">
<w><t>e-p</t></w>
<w><t>EPA</t></w>
<w><t>e-pact</t></w>
@@ -50670,6 +50748,9 @@
<w><t>ep-u-lo-nes</t></w>
<w><t>ep-u-ra-tion</t></w>
<w><t>e-pyl-li-on</t></w>
+</section>
+
+<section description="Eq">
<w><t>eq-ua-bil-i-ty</t></w>
<w><t>eq-ua-ble</t></w>
<w><t>eq-ua-ble-ness</t></w>
@@ -50824,6 +50905,9 @@
<w><t>E-quu-le-i</t></w>
<w><t>E-quul-e-us</t></w>
<w><t>E-quu-le-us</t></w>
+</section>
+
+<section description="Er">
<w><t>e-ra</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>e-ra-di-ate</t></w>
<w><t>e-ra-di-at-ed</t></w>
@@ -51138,6 +51222,9 @@
<w><t>Er-ze-rum</t></w>
<w><t>Erz-ge-bir-ge</t></w>
<w><t>Er-zu-rum</t></w>
+</section>
+
+<section description="Es">
<phrase><t>E-sa-ki di-ode</t></phrase>
<w><t>E-sau</t></w>
<w><t>ESB</t></w>
@@ -51481,6 +51568,9 @@
<w><t>e-su-ri-en-cy</t></w>
<w><t>e-su-ri-ent</t></w>
<w><t>e-su-ri-ent-ly</t></w>
+</section>
+
+<section description="Et">
<w><t>ETA</t></w>
<w><t>Et-a</t></w>
<w><t>E-ta</t></w>
@@ -51729,6 +51819,9 @@
<w><t>et-y-mol-o-gy</t></w>
<w><t>et-y-mon</t></w>
<w><t>Et-zel</t></w>
+</section>
+
+<section description="Eu">
<w><t>Eu-aech-me</t></w>
<w><t>eu-bac-te-ri-a</t></w>
<w><t>eu-bac-te-ri-um</t></w>
@@ -52074,6 +52167,9 @@
<w><t>eux-e-nite</t></w>
<w><t>Eux-ine</t></w>
<phrase><t>Eux-ine Sea</t></phrase>
+</section>
+
+<section description="Ev">
<w><t>EVA</t></w>
<w><t>E-va</t></w>
<w><t>e-vac-u-ant</t></w>
@@ -52335,6 +52431,9 @@
<w><t>Ev-voi-a</t></w>
<w><t>Ev-y-leen</t></w>
<w><t>ev-zone</t></w>
+</section>
+
+<section description="Ew to Ex">
<w><t>E-wa</t></w>
<w><t>E-wald</t></w>
<w><t>Ew-an</t></w>
@@ -53581,6 +53680,9 @@
<w><t>ex-u-vi-at-ing</t></w>
<w><t>ex-u-vi-a-tion</t></w>
<phrase><t>ex vo-to</t></phrase>
+</section>
+
+<section description="Ey to Ez">
<w><t>e-ya-let</t></w>
<w><t>ey-as</t></w>
<w><t>ey-ass</t></w>
@@ -53673,6 +53775,7 @@
<w><t>Ez-ra</t></w>
<w><t>Ez-zard</t></w>
</section>
+</section>
<section description="F">
<w><t>fab</t></w>
@@ -54827,8 +54930,8 @@
<w><t>Fe-do-ra</t></w>
<w><t>fee</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>fee-ble</t><adjective><extensible/></adjective></w>
-<w><t>fee-ble=mind-ed</t></w>
-<w><t>fee-ble=mind-ed-ness</t></w>
+<w><t>fee-ble-mind-ed</t></w>
+<w><t>fee-ble-mind-ed-ness</t></w>
<w><t>fee-ble-ness</t></w>
<w><t>fee-ble=voiced</t></w>
<w><t>fee-blish</t></w>
@@ -97653,7 +97756,7 @@
<w><t>mo-lyb-de-num</t></w>
<w><t>mo-lyb-dic</t></w>
<w><t>mo-lyb-dous</t></w>
-<w><t>mom</t></w>
+<w><t>mom</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>Mom-ba-sa</t></w>
<w><t>mome</t></w>
<w><t>Mo-mence</t></w>
@@ -115571,7 +115674,7 @@
<w><t>par-a-chor</t></w>
<w><t>pa-rach-ro-nism</t></w>
<w><t>par-ach-ro-nis-tic</t></w>
-<w><t>par-a-chute</t></w>
+<w><t>par-a-chute</t><noun><pluralizable/><convertible-to-possessive/></noun><verb><regular-root/></verb></w>
<w><t>par-a-chut-ed</t></w>
<w><t>par-a-chut-er</t></w>
<w><t>par-a-chut-ic</t></w>
@@ -119376,7 +119479,7 @@
<w><t>pho-na-tion</t></w>
<w><t>pho-na-to-ry</t></w>
<w><t>phon-au-to-graph</t></w>
-<w><t>phone</t></w>
+<w><t>phone</t><noun><pluralizable/><convertible-to-possessive/></noun><verb><regular-root/></verb></w>
<w><t>pho-ne-mat-ic</t></w>
<w><t>pho-ne-mat-ics</t></w>
<w><t>pho-neme</t></w>
@@ -126619,7 +126722,8 @@
<w><t>pres-by-ter-ies</t></w>
<w><t>pres-by-ter-y</t></w>
<w><t>pre-scho-las-tic</t></w>
-<w><t>pre-school</t></w>
+<w><t>pre-school</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
+<w><t>pre-school-er</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>pres-ci-ence</t></w>
<w><t>pre-sci-ence</t></w>
<w><t>pre-sci-ent</t></w>
@@ -134431,7 +134535,7 @@
<w><t>rec-u-sant</t></w>
<w><t>re-cut</t></w>
<w><t>re-cut-ting</t></w>
-<w><t>re-cy-cle</t></w>
+<w><t>re-cy-cle</t><verb><regular-root/></verb></w>
<w><t>Red</t></w>
<w><t>red</t></w>
<w><t>re-dact</t></w>
@@ -138438,6 +138542,7 @@
<w><t>re-wak-ing</t></w>
<w><t>re-wan</t></w>
<w><t>re-ward</t><noun><pluralizable/><convertible-to-possessive/></noun><verb><regular-root/></verb></w>
+<w><t>re-ward-er</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>re-ward-ing</t></w>
<w><t>re-wa=re-wa</t></w>
<w><t>re-warm</t></w>
@@ -143069,7 +143174,7 @@
<w><t>sconce</t></w>
<w><t>scon-cheon</t></w>
<w><t>sconc-ing</t></w>
-<w><t>scone</t></w>
+<w><t>scone</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>Scone</t></w>
<w><t>scoop</t></w>
<w><t>scoop-er</t></w>
@@ -143328,7 +143433,7 @@
<w><t>scrim-maged</t></w>
<w><t>scrim-mag-er</t></w>
<w><t>scrim-mag-ing</t></w>
-<w><t>scrimp</t></w>
+<w><t>scrimp</t><verb><regular-root/></verb></w>
<w><t>scrimp-i-er</t></w>
<w><t>scrimp-i-est</t></w>
<w><t>scrimp-y</t></w>
@@ -151418,7 +151523,7 @@
<w><t>spar-oid</t></w>
<w><t>spar-ring</t></w>
<phrase><t>spar-ring part-ner</t></phrase>
-<w><t>spar-row</t></w>
+<w><t>spar-row</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>spar-row-grass</t></w>
<w><t>spar-row-hawk</t></w>
<phrase><t>spar-row hawk</t></phrase>
@@ -166748,7 +166853,7 @@
<w><t>Tu-can-a</t></w>
<w><t>Tu-can-ae</t></w>
<w><t>tu-chun</t></w>
-<w><t>tuck</t></w>
+<w><t>tuck</t><verb><regular-root/></verb></w>
<w><t>Tuck</t></w>
<w><t>Tuck-a-hoe</t></w>
<phrase><t>tuck a-way</t></phrase>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <vic...@us...> - 2026-07-28 23:14:06
|
Revision: 14939
http://sourceforge.net/p/foray/code/14939
Author: victormote
Date: 2026-07-28 23:14:04 +0000 (Tue, 28 Jul 2026)
Log Message:
-----------
Convert another XML derivative-pattern to java classes.
Modified Paths:
--------------
trunk/foray/foray-orthography/src/main/data/orthographies/foray-orthography-config.xml
trunk/foray/foray-orthography/src/test/resources/orthography-config.xml
Added Paths:
-----------
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_ing.java
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_ing_Factory.java
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/mods/Full_2c_ing.java
trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_ing_FactoryTests.java
trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_ing_Tests.java
Modified: trunk/foray/foray-orthography/src/main/data/orthographies/foray-orthography-config.xml
===================================================================
--- trunk/foray/foray-orthography/src/main/data/orthographies/foray-orthography-config.xml 2026-07-28 17:18:45 UTC (rev 14938)
+++ trunk/foray/foray-orthography/src/main/data/orthographies/foray-orthography-config.xml 2026-07-28 23:14:04 UTC (rev 14939)
@@ -43,14 +43,6 @@
</match-rule-list>
<derivative-pattern-list id="eng-Latn-derivative-patterns">
- <derivative-pattern desc="ends with certain double consonants, then /-ing/">
- <match>^([a-zæœëéöA-ZÆŒ\-‘’ ]+)([bcdfgklmnprstvz])(\2)ing$</match>
- <replace>$1$2</replace>
- <derivative-rule>
- <verb><regular-root/></verb>
- <derivative-type type="present-participle"/>
- </derivative-rule>
- </derivative-pattern>
<derivative-pattern desc="ends with certain double consonants, then /-er/">
<match>^([a-zæœëéöA-ZÆŒ\-‘’ ]+)([d])(\2)er$</match>
<replace>$1$2</replace>
@@ -104,6 +96,7 @@
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_ed_Factory"/>
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_ed2_Factory"/>
+ <derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_2c_ing_Factory"/>
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_ing_Factory"/>
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_ing2_Factory"/>
Added: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_ing.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_ing.java (rev 0)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_ing.java 2026-07-28 23:14:04 UTC (rev 14939)
@@ -0,0 +1,72 @@
+/*
+ * Copyright 2026 The FOray Project.
+ * http://www.foray.org
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * This work is in part derived from the following work(s), used with the
+ * permission of the licensor:
+ * Apache FOP, licensed by the Apache Software Foundation
+ *
+ */
+
+/*
+ * $LastChangedRevision$
+ * $LastChangedDate$
+ * $LastChangedBy$
+ */
+
+package org.foray.orthography.inflection.eng;
+
+import org.foray.orthography.Word4a;
+import org.foray.orthography.WordSegment4a;
+import org.foray.orthography.inflection.InflectedWord;
+import org.foray.orthography.inflection.mods.Full_2c_ing;
+
+import java.util.regex.Pattern;
+
+/**
+ * Wraps an extensible adjective that ends with a vowel and then a consonant, doubles that consonant, then adds "ing" at
+ * the end.
+ * For example, the English word "beg" would be wrapped to make the word "beg-ging".
+ */
+public class EngLatnSuffix_2c_ing extends InflectedWord {
+
+ /** The pattern to be matched by words with this inflection. */
+ public static final Pattern PATTERN = Pattern.compile("^(" + EngLatn.WORD_CHARS + "+)([bdfgklmnprstvz])(\\2)ing$");
+
+ /** Constant needed for serialization. */
+ private static final long serialVersionUID = -2590657455118804639L;
+
+ /**
+ * Constructor.
+ * @param wrappedWord The wrapped word.
+ */
+ public EngLatnSuffix_2c_ing(final Word4a wrappedWord) {
+ super(wrappedWord);
+ }
+
+ @Override
+ public WordSegment4a getAppendedSegment() {
+ final WordSegment4a lastSegment = getWrappedWord().getLastWordSegment();
+ final int lastIndex = lastSegment.length() - 1;
+ final char lastChar = lastSegment.charAt(lastIndex);
+ return Full_2c_ing.getInstance(lastChar);
+ }
+
+ @Override
+ public WordSegment4a getModifiedSegment() {
+ return null;
+ }
+
+}
Property changes on: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_ing.java
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+Author Date Id Rev
\ No newline at end of property
Added: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_ing_Factory.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_ing_Factory.java (rev 0)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_ing_Factory.java 2026-07-28 23:14:04 UTC (rev 14939)
@@ -0,0 +1,88 @@
+/*
+ * Copyright 2026 The FOray Project.
+ * http://www.foray.org
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * This work is in part derived from the following work(s), used with the
+ * permission of the licensor:
+ * Apache FOP, licensed by the Apache Software Foundation
+ *
+ */
+
+/*
+ * $LastChangedRevision$
+ * $LastChangedDate$
+ * $LastChangedBy$
+ */
+
+package org.foray.orthography.inflection.eng;
+
+import org.foray.orthography.Word4a;
+import org.foray.orthography.inflection.InflectionFactory;
+
+import org.axsl.orthography.PartOfSpeech;
+import org.axsl.orthography.PosQualifier;
+
+import java.util.regex.Matcher;
+
+/**
+ * Factory class for {@link EngLatnSuffix_2c_ing}.
+ */
+public final class EngLatnSuffix_2c_ing_Factory extends InflectionFactory<EngLatnSuffix_2c_ing> {
+
+ /** The singleton instance. */
+ private static final EngLatnSuffix_2c_ing_Factory THE_INSTANCE = new EngLatnSuffix_2c_ing_Factory();
+
+ /**
+ * Private constructor for this singleton class.
+ */
+ private EngLatnSuffix_2c_ing_Factory() { }
+
+ /**
+ * Returns the singleton instance.
+ * @return The singleton instance.
+ */
+ public static EngLatnSuffix_2c_ing_Factory getInstance() {
+ return THE_INSTANCE;
+ }
+
+ @Override
+ public CharSequence findLemmaChars(final CharSequence chars) {
+ final Matcher matcher = EngLatnSuffix_2c_ing.PATTERN.matcher(chars);
+ if (! matcher.matches()) {
+ return null;
+ }
+
+ final String lemmaChars = matcher.group(1) + matcher.group(2);
+ return lemmaChars;
+ }
+
+ @Override
+ public boolean isValidLemma(final Word4a lemma) {
+ if (lemma.isOfQualifiedType(PartOfSpeech.VERB, PosQualifier.REGULAR_ROOT)) {
+ /*
+ <verb><regular-root/></verb>
+ <derivative-type type="present-participle"/>
+ */
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ protected EngLatnSuffix_2c_ing makeInstance(final Word4a lemma) {
+ return new EngLatnSuffix_2c_ing(lemma);
+ }
+
+}
Property changes on: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_ing_Factory.java
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+Author Date Id Rev
\ No newline at end of property
Added: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/mods/Full_2c_ing.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/mods/Full_2c_ing.java (rev 0)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/mods/Full_2c_ing.java 2026-07-28 23:14:04 UTC (rev 14939)
@@ -0,0 +1,112 @@
+/*
+ * Copyright 2026 The FOray Project.
+ * http://www.foray.org
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * This work is in part derived from the following work(s), used with the
+ * permission of the licensor:
+ * Apache FOP, licensed by the Apache Software Foundation
+ *
+ */
+
+/*
+ * $LastChangedRevision$
+ * $LastChangedDate$
+ * $LastChangedBy$
+ */
+
+package org.foray.orthography.inflection.mods;
+
+import org.foray.common.primitive.CodePointUtils;
+import org.foray.orthography.StringWordSegmentLatin1;
+import org.foray.orthography.WordSegment4a;
+
+/**
+ * Full segment composed of a single consonant following by "ing".
+ */
+public final class Full_2c_ing {
+
+ /** Pre-constructed instance staring with "b". */
+ private static final StringWordSegmentLatin1 B_INSTANCE = new StringWordSegmentLatin1("bing");
+
+ /** Pre-constructed instance staring with "d". */
+ private static final StringWordSegmentLatin1 D_INSTANCE = new StringWordSegmentLatin1("ding");
+
+ /** Pre-constructed instance staring with "f". */
+ private static final StringWordSegmentLatin1 F_INSTANCE = new StringWordSegmentLatin1("fing");
+
+ /** Pre-constructed instance staring with "g". */
+ private static final StringWordSegmentLatin1 G_INSTANCE = new StringWordSegmentLatin1("ging");
+
+ /** Pre-constructed instance staring with "k". */
+ private static final StringWordSegmentLatin1 K_INSTANCE = new StringWordSegmentLatin1("king");
+
+ /** Pre-constructed instance staring with "l". */
+ private static final StringWordSegmentLatin1 L_INSTANCE = new StringWordSegmentLatin1("ling");
+
+ /** Pre-constructed instance staring with "m". */
+ private static final StringWordSegmentLatin1 M_INSTANCE = new StringWordSegmentLatin1("ming");
+
+ /** Pre-constructed instance staring with "n". */
+ private static final StringWordSegmentLatin1 N_INSTANCE = new StringWordSegmentLatin1("ning");
+
+ /** Pre-constructed instance staring with "p". */
+ private static final StringWordSegmentLatin1 P_INSTANCE = new StringWordSegmentLatin1("ping");
+
+ /** Pre-constructed instance staring with "r". */
+ private static final StringWordSegmentLatin1 R_INSTANCE = new StringWordSegmentLatin1("ring");
+
+ /** Pre-constructed instance staring with "s". */
+ private static final StringWordSegmentLatin1 S_INSTANCE = new StringWordSegmentLatin1("sing");
+
+ /** Pre-constructed instance staring with "t". */
+ private static final StringWordSegmentLatin1 T_INSTANCE = new StringWordSegmentLatin1("ting");
+
+ /** Pre-constructed instance staring with "v". */
+ private static final StringWordSegmentLatin1 V_INSTANCE = new StringWordSegmentLatin1("ving");
+
+ /** Pre-constructed instance staring with "z". */
+ private static final StringWordSegmentLatin1 Z_INSTANCE = new StringWordSegmentLatin1("zing");
+
+ /**
+ * Private constructor. This is a utility class that should not be instantiated.
+ */
+ private Full_2c_ing() { }
+
+ /**
+ * Gets the segment instance that beings with a specified consonant.
+ * @param consonant The consonant for which the segment instance is needed.
+ * @return The segment instance for {@code consonant}.
+ */
+ public static WordSegment4a getInstance(final int consonant) {
+ switch (consonant) {
+ case 'b': return B_INSTANCE;
+ case 'd': return D_INSTANCE;
+ case 'f': return F_INSTANCE;
+ case 'g': return G_INSTANCE;
+ case 'k': return K_INSTANCE;
+ case 'l': return L_INSTANCE;
+ case 'm': return M_INSTANCE;
+ case 'n': return N_INSTANCE;
+ case 'p': return P_INSTANCE;
+ case 'r': return R_INSTANCE;
+ case 's': return S_INSTANCE;
+ case 't': return T_INSTANCE;
+ case 'v': return V_INSTANCE;
+ case 'z': return Z_INSTANCE;
+ }
+ throw new IllegalArgumentException("Unexpected leading consonant: " + CodePointUtils.toString(consonant));
+ }
+
+}
Property changes on: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/mods/Full_2c_ing.java
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+Author Date Id Rev
\ No newline at end of property
Added: trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_ing_FactoryTests.java
===================================================================
--- trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_ing_FactoryTests.java (rev 0)
+++ trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_ing_FactoryTests.java 2026-07-28 23:14:04 UTC (rev 14939)
@@ -0,0 +1,81 @@
+/*
+ * Copyright 2026 The FOray Project.
+ * http://www.foray.org
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * This work is in part derived from the following work(s), used with the
+ * permission of the licensor:
+ * Apache FOP, licensed by the Apache Software Foundation
+ *
+ */
+
+/*
+ * $LastChangedRevision$
+ * $LastChangedDate$
+ * $LastChangedBy$
+ */
+
+package org.foray.orthography.inflection.eng;
+
+import org.foray.orthography.Dictionary4a;
+import org.foray.orthography.StringWordTests;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import org.assertj.core.api.AssertionsForClassTypes;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.mockito.Mockito;
+
+/**
+ * Tests of {@link EngLatnSuffix_2c_ing_Factory}.
+ */
+public class EngLatnSuffix_2c_ing_FactoryTests {
+
+ /** The object under test. */
+ private EngLatnSuffix_2c_ing_Factory out;
+
+ /** A dictionary to use for these tests. */
+ private Dictionary4a dictionary;
+
+ /**
+ * Test setup.
+ */
+ @BeforeEach
+ public void before() {
+ this.out = EngLatnSuffix_2c_ing_Factory.getInstance();
+ this.dictionary = Mockito.mock(Dictionary4a.class);
+ Mockito.when(dictionary.getWord("plan")).thenReturn(StringWordTests.WORD_PLAN);
+ }
+
+ /**
+ * Test of a String for which the factory should not be able to create an instance.
+ */
+ @Test
+ public void testInvalid() {
+ final EngLatnSuffix_2c_ing word = out.makeInstance("planned", this.dictionary);
+ AssertionsForClassTypes.assertThat(word).isNull();
+ }
+
+ /**
+ * Test of a String for which the factory should be able to create an instance.
+ */
+ @Test
+ public void testValid() {
+ final EngLatnSuffix_2c_ing word = out.makeInstance("planning", this.dictionary);
+ /* Test for instance equality. */
+ AssertionsForClassTypes.assertThat(word.getWrappedWord()).isSameAs(StringWordTests.WORD_PLAN);
+ assertThat(word.getActualContent().toString()).isEqualTo("planning");
+ }
+
+}
Property changes on: trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_ing_FactoryTests.java
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+Author Date Id Rev
\ No newline at end of property
Added: trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_ing_Tests.java
===================================================================
--- trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_ing_Tests.java (rev 0)
+++ trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_ing_Tests.java 2026-07-28 23:14:04 UTC (rev 14939)
@@ -0,0 +1,55 @@
+/*
+ * Copyright 2026 The FOray Project.
+ * http://www.foray.org
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * This work is in part derived from the following work(s), used with the
+ * permission of the licensor:
+ * Apache FOP, licensed by the Apache Software Foundation
+ *
+ */
+
+/*
+ * $LastChangedRevision$
+ * $LastChangedDate$
+ * $LastChangedBy$
+ */
+
+package org.foray.orthography.inflection.eng;
+
+import org.foray.orthography.StringWord;
+import org.foray.orthography.StringWordTests;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import org.junit.jupiter.api.Test;
+
+/**
+ * Tests of {@link EngLatnSuffix_2c_ing}.
+ */
+public class EngLatnSuffix_2c_ing_Tests {
+
+ /**
+ * Tests for words ending in double-consonant following by "ing".
+ */
+ @Test
+ public void test01() {
+ final StringWord word = StringWordTests.WORD_PLAN;
+ final EngLatnSuffix_2c_ing wrapper = new EngLatnSuffix_2c_ing(word);
+
+ assertThat(wrapper.toString()).isEqualTo("plan-ning");
+ assertThat(wrapper.getNormalizedContent()).isEqualTo("plan");
+ assertThat(wrapper.getActualContent().toString()).isEqualTo("planning");
+ }
+
+}
Property changes on: trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_ing_Tests.java
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+Author Date Id Rev
\ No newline at end of property
Modified: trunk/foray/foray-orthography/src/test/resources/orthography-config.xml
===================================================================
--- trunk/foray/foray-orthography/src/test/resources/orthography-config.xml 2026-07-28 17:18:45 UTC (rev 14938)
+++ trunk/foray/foray-orthography/src/test/resources/orthography-config.xml 2026-07-28 23:14:04 UTC (rev 14939)
@@ -24,6 +24,7 @@
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_ed_Factory"/>
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_ed2_Factory"/>
+ <derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_2c_ing_Factory"/>
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_ing_Factory"/>
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_ing2_Factory"/>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <vic...@us...> - 2026-07-28 17:18:48
|
Revision: 14938
http://sourceforge.net/p/foray/code/14938
Author: victormote
Date: 2026-07-28 17:18:45 +0000 (Tue, 28 Jul 2026)
Log Message:
-----------
Convert another XML derivative-pattern to java classes.
Modified Paths:
--------------
trunk/foray/foray-common/src/main/java/org/foray/common/primitive/CodePointUtils.java
trunk/foray/foray-orthography/src/main/data/dictionaries/eng-Latn-ZZZ.dict.xml
trunk/foray/foray-orthography/src/main/data/orthographies/foray-orthography-config.xml
trunk/foray/foray-orthography/src/test/java/org/foray/orthography/StringWordTests.java
trunk/foray/foray-orthography/src/test/resources/orthography-config.xml
Added Paths:
-----------
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_est.java
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_est_Factory.java
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/mods/Full_2c_est.java
trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_est_FactoryTests.java
trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_est_Tests.java
Modified: trunk/foray/foray-common/src/main/java/org/foray/common/primitive/CodePointUtils.java
===================================================================
--- trunk/foray/foray-common/src/main/java/org/foray/common/primitive/CodePointUtils.java 2026-07-28 14:59:23 UTC (rev 14937)
+++ trunk/foray/foray-common/src/main/java/org/foray/common/primitive/CodePointUtils.java 2026-07-28 17:18:45 UTC (rev 14938)
@@ -385,4 +385,14 @@
}
}
+ /**
+ * Converts a Unicode codePoint to a String containing its char(s).
+ * @param codePoint The Unicode codePoint to be converted.
+ * @return A String containing the char(s) in {@code codePoint}.
+ */
+ public static String toString(final int codePoint) {
+ /* TODO: After upgrading to Java 11+, replace use of this method with Character.toString(int codePoint). */
+ return new String(Character.toChars(codePoint));
+ }
+
}
Modified: trunk/foray/foray-orthography/src/main/data/dictionaries/eng-Latn-ZZZ.dict.xml
===================================================================
--- trunk/foray/foray-orthography/src/main/data/dictionaries/eng-Latn-ZZZ.dict.xml 2026-07-28 14:59:23 UTC (rev 14937)
+++ trunk/foray/foray-orthography/src/main/data/dictionaries/eng-Latn-ZZZ.dict.xml 2026-07-28 17:18:45 UTC (rev 14938)
@@ -11146,7 +11146,7 @@
<phrase><t>at-tend-ance cen-tre</t></phrase>
<w><t>at-tend-ant</t><noun><pluralizable/><convertible-to-possessive/></noun><adjective><extensible value="false"/></adjective></w>
<w><t>at-tend-ant-ly</t></w>
-<w><t>at-tend-er</t></w>
+<w><t>at-tend-er</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>at-tend-ing</t></w>
<w><t>at-tend-ing-ly</t></w>
<w><t>at-tent</t></w>
@@ -27265,7 +27265,7 @@
<w><t>chock-er</t></w>
<w><t>chock-stone</t></w>
<w><t>choc-o</t></w>
-<w><t>choc-o-late</t></w>
+<w><t>choc-o-late</t><noun><pluralizable/><convertible-to-possessive/></noun><adjective></adjective></w>
<w><t>choc-o-late=box</t></w>
<w><t>choc-o-late=flow-er</t></w>
<w><t>choc-o-lat-y</t></w>
@@ -55912,7 +55912,7 @@
<phrase><t>fin-ger’s breadth</t></phrase>
<w><t>fin-ger-stall</t></w>
<phrase><t>fin-ger tight</t></phrase>
-<w><t>fin-ger-tip</t></w>
+<w><t>fin-ger-tip</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<phrase><t>fin-ger wave</t></phrase>
<w><t>fin-ger-y</t></w>
<w><t>Fin-go</t></w>
@@ -70447,7 +70447,7 @@
<w><t>hob-bler</t></w>
<phrase><t>hob-ble skirt</t></phrase>
<w><t>Hobbs</t></w>
-<w><t>hob-by</t></w>
+<w><t>hob-by</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>hob-by-horse</t></w>
<w><t>hob-by=horse</t></w>
<w><t>hob-by-ist</t></w>
@@ -89764,7 +89764,7 @@
<w><t>los-sy</t></w>
<w><t>lost</t></w>
<phrase><t>Lost Gen-er-a-tion</t></phrase>
-<w><t>Lot</t></w>
+<w><t>Lot</t><noun><convertible-to-possessive/><proper/></noun></w>
<w><t>lot</t></w>
<w><t>lo-ta</t></w>
<w><t>L’O-tage</t></w>
@@ -111811,7 +111811,7 @@
<w><t>out-raved</t></w>
<w><t>out-rav-ing</t></w>
<w><t>ou-tré</t></w>
-<w><t>out-reach</t></w>
+<w><t>out-reach</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>out-read</t></w>
<w><t>out-read-ing</t></w>
<w><t>out-rea-son</t></w>
@@ -114681,7 +114681,7 @@
<w><t>pain-ful</t></w>
<w><t>pain-ful-ly</t></w>
<w><t>pain-ful-ness</t></w>
-<w><t>pain-kill-er</t></w>
+<w><t>pain-kill-er</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>pain-kil-ler</t></w>
<w><t>pain-less</t></w>
<w><t>pains</t></w>
@@ -180976,6 +180976,7 @@
<w><t>veg-e-ta-tion-al</t></w>
<w><t>veg-e-ta-tion-less</t></w>
<w><t>veg-e-ta-tive</t></w>
+<w><t>veg-gie</t><noun><pluralizable/><convertible-to-possessive/></noun></w>
<w><t>ve-he-mence</t></w>
<w><t>ve-he-men-cy</t></w>
<w><t>ve-he-ment</t></w>
Modified: trunk/foray/foray-orthography/src/main/data/orthographies/foray-orthography-config.xml
===================================================================
--- trunk/foray/foray-orthography/src/main/data/orthographies/foray-orthography-config.xml 2026-07-28 14:59:23 UTC (rev 14937)
+++ trunk/foray/foray-orthography/src/main/data/orthographies/foray-orthography-config.xml 2026-07-28 17:18:45 UTC (rev 14938)
@@ -59,14 +59,6 @@
<derivative-type type="comparative"/>
</derivative-rule>
</derivative-pattern>
- <derivative-pattern desc="ends with certain double consonants, then /-est/">
- <match>^([a-zæœëéöA-ZÆŒ\-‘’ ]+)([d])(\2)est$</match>
- <replace>$1$2</replace>
- <derivative-rule>
- <adjective><extensible/></adjective>
- <derivative-type type="superlative"/>
- </derivative-rule>
- </derivative-pattern>
<derivative-pattern desc="ends with /-ier/, root ends with /-y/">
<match>^([a-zæœëéöA-ZÆŒ\-‘’ ]+)ier$</match>
<replace>$1y</replace>
@@ -118,6 +110,7 @@
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_er_Factory"/>
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_er2_Factory"/>
+ <derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_2c_est_Factory"/>
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_est_Factory"/>
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_est2_Factory"/>
</derivative-factory-list>
Added: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_est.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_est.java (rev 0)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_est.java 2026-07-28 17:18:45 UTC (rev 14938)
@@ -0,0 +1,72 @@
+/*
+ * Copyright 2019 The FOray Project.
+ * http://www.foray.org
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * This work is in part derived from the following work(s), used with the
+ * permission of the licensor:
+ * Apache FOP, licensed by the Apache Software Foundation
+ *
+ */
+
+/*
+ * $LastChangedRevision$
+ * $LastChangedDate$
+ * $LastChangedBy$
+ */
+
+package org.foray.orthography.inflection.eng;
+
+import org.foray.orthography.Word4a;
+import org.foray.orthography.WordSegment4a;
+import org.foray.orthography.inflection.InflectedWord;
+import org.foray.orthography.inflection.mods.Full_2c_est;
+
+import java.util.regex.Pattern;
+
+/**
+ * Wraps an extensible adjective that ends with a vowel and then a consonant, doubles that consonant, then adds "est" at
+ * the end to make it a superlative.
+ * For example, the English word "thin" would be wrapped to make the word "thinnest".
+ */
+public class EngLatnSuffix_2c_est extends InflectedWord {
+
+ /** The pattern to be matched by words with this inflection. */
+ public static final Pattern PATTERN = Pattern.compile("^(" + EngLatn.WORD_CHARS + "+)([dn])(\\2)est$");
+
+ /** Constant needed for serialization. */
+ private static final long serialVersionUID = 8397674653229148700L;
+
+ /**
+ * Constructor.
+ * @param wrappedWord The wrapped word.
+ */
+ public EngLatnSuffix_2c_est(final Word4a wrappedWord) {
+ super(wrappedWord);
+ }
+
+ @Override
+ public WordSegment4a getAppendedSegment() {
+ final WordSegment4a lastSegment = getWrappedWord().getLastWordSegment();
+ final int lastIndex = lastSegment.length() - 1;
+ final char lastChar = lastSegment.charAt(lastIndex);
+ return Full_2c_est.getInstance(lastChar);
+ }
+
+ @Override
+ public WordSegment4a getModifiedSegment() {
+ return null;
+ }
+
+}
Property changes on: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_est.java
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+Author Date Id Rev
\ No newline at end of property
Added: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_est_Factory.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_est_Factory.java (rev 0)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_est_Factory.java 2026-07-28 17:18:45 UTC (rev 14938)
@@ -0,0 +1,88 @@
+/*
+ * Copyright 2019 The FOray Project.
+ * http://www.foray.org
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * This work is in part derived from the following work(s), used with the
+ * permission of the licensor:
+ * Apache FOP, licensed by the Apache Software Foundation
+ *
+ */
+
+/*
+ * $LastChangedRevision$
+ * $LastChangedDate$
+ * $LastChangedBy$
+ */
+
+package org.foray.orthography.inflection.eng;
+
+import org.foray.orthography.Word4a;
+import org.foray.orthography.inflection.InflectionFactory;
+
+import org.axsl.orthography.PartOfSpeech;
+import org.axsl.orthography.PosQualifier;
+
+import java.util.regex.Matcher;
+
+/**
+ * Factory class for {@link EngLatnSuffix_2c_est}.
+ */
+public final class EngLatnSuffix_2c_est_Factory extends InflectionFactory<EngLatnSuffix_2c_est> {
+
+ /** The singleton instance. */
+ private static final EngLatnSuffix_2c_est_Factory THE_INSTANCE = new EngLatnSuffix_2c_est_Factory();
+
+ /**
+ * Private constructor for this singleton class.
+ */
+ private EngLatnSuffix_2c_est_Factory() { }
+
+ /**
+ * Returns the singleton instance.
+ * @return The singleton instance.
+ */
+ public static EngLatnSuffix_2c_est_Factory getInstance() {
+ return THE_INSTANCE;
+ }
+
+ @Override
+ public CharSequence findLemmaChars(final CharSequence chars) {
+ final Matcher matcher = EngLatnSuffix_2c_est.PATTERN.matcher(chars);
+ if (! matcher.matches()) {
+ return null;
+ }
+
+ final String lemmaChars = matcher.group(1) + matcher.group(2);
+ return lemmaChars;
+ }
+
+ @Override
+ public boolean isValidLemma(final Word4a lemma) {
+ if (lemma.isOfQualifiedType(PartOfSpeech.ADJECTIVE, PosQualifier.EXTENSIBLE)) {
+ /*
+ <adjective><extensible/></adjective>
+ <derivative-type type="superlative"/>
+ */
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ protected EngLatnSuffix_2c_est makeInstance(final Word4a lemma) {
+ return new EngLatnSuffix_2c_est(lemma);
+ }
+
+}
Property changes on: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_est_Factory.java
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+Author Date Id Rev
\ No newline at end of property
Added: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/mods/Full_2c_est.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/mods/Full_2c_est.java (rev 0)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/mods/Full_2c_est.java 2026-07-28 17:18:45 UTC (rev 14938)
@@ -0,0 +1,64 @@
+/*
+ * Copyright 2026 The FOray Project.
+ * http://www.foray.org
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * This work is in part derived from the following work(s), used with the
+ * permission of the licensor:
+ * Apache FOP, licensed by the Apache Software Foundation
+ *
+ */
+
+/*
+ * $LastChangedRevision$
+ * $LastChangedDate$
+ * $LastChangedBy$
+ */
+
+package org.foray.orthography.inflection.mods;
+
+import org.foray.common.primitive.CodePointUtils;
+import org.foray.orthography.StringWordSegmentLatin1;
+import org.foray.orthography.WordSegment4a;
+
+/**
+ * Full segment composed of a single consonant following by "est".
+ */
+public final class Full_2c_est {
+
+ /** Pre-constructed instance staring with "d". */
+ private static final StringWordSegmentLatin1 D_INSTANCE = new StringWordSegmentLatin1("dest");
+
+ /** Pre-constructed instance staring with "n". */
+ private static final StringWordSegmentLatin1 N_INSTANCE = new StringWordSegmentLatin1("nest");
+
+ /**
+ * Private constructor. This is a utility class that should not be instantiated.
+ */
+ private Full_2c_est() { }
+
+ /**
+ * Gets the segment instance that beings with a specified consonant.
+ * @param consonant The consonant for which the segment instance is needed.
+ * @return The segment instance for {@code consonant}.
+ */
+ public static WordSegment4a getInstance(final int consonant) {
+ switch (consonant) {
+ case 'd': return D_INSTANCE;
+ case 'n': return N_INSTANCE;
+ }
+ throw new IllegalArgumentException("Unexpected leading consonant: " + CodePointUtils.toString(consonant));
+ }
+
+}
Property changes on: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/mods/Full_2c_est.java
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+Author Date Id Rev
\ No newline at end of property
Modified: trunk/foray/foray-orthography/src/test/java/org/foray/orthography/StringWordTests.java
===================================================================
--- trunk/foray/foray-orthography/src/test/java/org/foray/orthography/StringWordTests.java 2026-07-28 14:59:23 UTC (rev 14937)
+++ trunk/foray/foray-orthography/src/test/java/org/foray/orthography/StringWordTests.java 2026-07-28 17:18:45 UTC (rev 14938)
@@ -136,6 +136,15 @@
/** A verb test word: replied. */
public static final StringWord WORD_REPLIED = new StringWord(REGULAR_VERB, "re", "plied");
+ /** An adjective test word: thin. */
+ public static final StringWord WORD_THIN = new StringWord(EXTENSIBLE_ADJECTIVE, "thin");
+
+ /** An adjective test word: thinner. */
+ public static final StringWord WORD_THINNER = new StringWord(EXTENSIBLE_ADJECTIVE, "thin", "ner");
+
+ /** An adjective test word: thinnest. */
+ public static final StringWord WORD_THINNEST = new StringWord(EXTENSIBLE_ADJECTIVE, "thin", "nest");
+
/**
* Test of {@link StringWord#getWordComponent(int)}.
*/
Added: trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_est_FactoryTests.java
===================================================================
--- trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_est_FactoryTests.java (rev 0)
+++ trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_est_FactoryTests.java 2026-07-28 17:18:45 UTC (rev 14938)
@@ -0,0 +1,81 @@
+/*
+ * Copyright 2026 The FOray Project.
+ * http://www.foray.org
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * This work is in part derived from the following work(s), used with the
+ * permission of the licensor:
+ * Apache FOP, licensed by the Apache Software Foundation
+ *
+ */
+
+/*
+ * $LastChangedRevision$
+ * $LastChangedDate$
+ * $LastChangedBy$
+ */
+
+package org.foray.orthography.inflection.eng;
+
+import org.foray.orthography.Dictionary4a;
+import org.foray.orthography.StringWordTests;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import org.assertj.core.api.AssertionsForClassTypes;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.mockito.Mockito;
+
+/**
+ * Tests of {@link EngLatnSuffix_2c_est_Factory}.
+ */
+public class EngLatnSuffix_2c_est_FactoryTests {
+
+ /** The object under test. */
+ private EngLatnSuffix_2c_est_Factory out;
+
+ /** A dictionary to use for these tests. */
+ private Dictionary4a dictionary;
+
+ /**
+ * Test setup.
+ */
+ @BeforeEach
+ public void before() {
+ this.out = EngLatnSuffix_2c_est_Factory.getInstance();
+ this.dictionary = Mockito.mock(Dictionary4a.class);
+ Mockito.when(dictionary.getWord("thin")).thenReturn(StringWordTests.WORD_THIN);
+ }
+
+ /**
+ * Test of a String for which the factory should not be able to create an instance.
+ */
+ @Test
+ public void testInvalid() {
+ final EngLatnSuffix_2c_est word = out.makeInstance("thinner", this.dictionary);
+ AssertionsForClassTypes.assertThat(word).isNull();
+ }
+
+ /**
+ * Test of a String for which the factory should be able to create an instance.
+ */
+ @Test
+ public void testValid() {
+ final EngLatnSuffix_2c_est word = out.makeInstance("thinnest", this.dictionary);
+ /* Test for instance equality. */
+ AssertionsForClassTypes.assertThat(word.getWrappedWord()).isSameAs(StringWordTests.WORD_THIN);
+ assertThat(word.getActualContent().toString()).isEqualTo("thinnest");
+ }
+
+}
Property changes on: trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_est_FactoryTests.java
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+Author Date Id Rev
\ No newline at end of property
Added: trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_est_Tests.java
===================================================================
--- trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_est_Tests.java (rev 0)
+++ trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_est_Tests.java 2026-07-28 17:18:45 UTC (rev 14938)
@@ -0,0 +1,55 @@
+/*
+ * Copyright 2026 The FOray Project.
+ * http://www.foray.org
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * This work is in part derived from the following work(s), used with the
+ * permission of the licensor:
+ * Apache FOP, licensed by the Apache Software Foundation
+ *
+ */
+
+/*
+ * $LastChangedRevision$
+ * $LastChangedDate$
+ * $LastChangedBy$
+ */
+
+package org.foray.orthography.inflection.eng;
+
+import org.foray.orthography.StringWord;
+import org.foray.orthography.StringWordTests;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import org.junit.jupiter.api.Test;
+
+/**
+ * Tests of {@link EngLatnSuffix_2c_est}.
+ */
+public class EngLatnSuffix_2c_est_Tests {
+
+ /**
+ * Tests for words ending in double-consonant following by "est".
+ */
+ @Test
+ public void test01() {
+ final StringWord word = StringWordTests.WORD_THIN;
+ final EngLatnSuffix_2c_est wrapper = new EngLatnSuffix_2c_est(word);
+
+ assertThat(wrapper.toString()).isEqualTo("thin-nest");
+ assertThat(wrapper.getNormalizedContent()).isEqualTo("thin");
+ assertThat(wrapper.getActualContent().toString()).isEqualTo("thinnest");
+ }
+
+}
Property changes on: trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_est_Tests.java
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+Author Date Id Rev
\ No newline at end of property
Modified: trunk/foray/foray-orthography/src/test/resources/orthography-config.xml
===================================================================
--- trunk/foray/foray-orthography/src/test/resources/orthography-config.xml 2026-07-28 14:59:23 UTC (rev 14937)
+++ trunk/foray/foray-orthography/src/test/resources/orthography-config.xml 2026-07-28 17:18:45 UTC (rev 14938)
@@ -30,6 +30,7 @@
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_er_Factory"/>
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_er2_Factory"/>
+ <derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_2c_est_Factory"/>
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_est_Factory"/>
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_est2_Factory"/>
</derivative-factory-list>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <vic...@us...> - 2026-07-28 14:59:26
|
Revision: 14937
http://sourceforge.net/p/foray/code/14937
Author: victormote
Date: 2026-07-28 14:59:23 +0000 (Tue, 28 Jul 2026)
Log Message:
-----------
Convert another XML derivative-pattern to java classes.
Modified Paths:
--------------
trunk/foray/foray-orthography/src/main/data/orthographies/foray-orthography-config.xml
trunk/foray/foray-orthography/src/test/java/org/foray/orthography/StringWordTests.java
trunk/foray/foray-orthography/src/test/java/org/foray/orthography/WordWrapperTests.java
trunk/foray/foray-orthography/src/test/resources/orthography-config.xml
Added Paths:
-----------
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ied.java
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ied_Factory.java
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/mods/Replace_y_by_ied.java
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/mods/package-info.java
trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ied_FactoryTests.java
trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ied_Tests.java
Modified: trunk/foray/foray-orthography/src/main/data/orthographies/foray-orthography-config.xml
===================================================================
--- trunk/foray/foray-orthography/src/main/data/orthographies/foray-orthography-config.xml 2026-07-28 12:42:36 UTC (rev 14936)
+++ trunk/foray/foray-orthography/src/main/data/orthographies/foray-orthography-config.xml 2026-07-28 14:59:23 UTC (rev 14937)
@@ -43,15 +43,6 @@
</match-rule-list>
<derivative-pattern-list id="eng-Latn-derivative-patterns">
- <derivative-pattern desc="ends with /-ied/, stem ends with /y/">
- <match>^([a-zæœëöA-ZÆŒ\-‘’ ]+)ied$</match>
- <replace>$1y</replace>
- <derivative-rule>
- <verb><regular-root/></verb>
- <derivative-type type="verb-form" desc="past tense"/>
- <derivative-type type="past-participle"/>
- </derivative-rule>
- </derivative-pattern>
<derivative-pattern desc="ends with certain double consonants, then /-ing/">
<match>^([a-zæœëéöA-ZÆŒ\-‘’ ]+)([bcdfgklmnprstvz])(\2)ing$</match>
<replace>$1$2</replace>
@@ -115,13 +106,18 @@
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_es_Factory"/>
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_apos_s_Factory"/>
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_s_Factory"/>
+
+ <derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_ied_Factory"/>
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_2c_ed_Factory"/>
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_ed_Factory"/>
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_ed2_Factory"/>
+
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_ing_Factory"/>
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_ing2_Factory"/>
+
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_er_Factory"/>
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_er2_Factory"/>
+
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_est_Factory"/>
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_est2_Factory"/>
</derivative-factory-list>
Added: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ied.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ied.java (rev 0)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ied.java 2026-07-28 14:59:23 UTC (rev 14937)
@@ -0,0 +1,74 @@
+/*
+ * Copyright 2026 The FOray Project.
+ * http://www.foray.org
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * This work is in part derived from the following work(s), used with the
+ * permission of the licensor:
+ * Apache FOP, licensed by the Apache Software Foundation
+ *
+ */
+
+/*
+ * $LastChangedRevision$
+ * $LastChangedDate$
+ * $LastChangedBy$
+ */
+
+package org.foray.orthography.inflection.eng;
+
+import org.foray.orthography.Word4a;
+import org.foray.orthography.WordSegment4a;
+import org.foray.orthography.inflection.InflectedWord;
+import org.foray.orthography.inflection.mods.Replace_y_by_ied;
+
+import java.util.regex.Pattern;
+
+/**
+ * Wraps a word, usually a regular verb, whose last segment ends in a consonant and a "y", converting the "y" to "ied".
+ * An example of a word where this might be used is to convert "re-ply" to "re-plied".
+ */
+public class EngLatnSuffix_ied extends InflectedWord {
+
+ /** The pattern to be matched by words with this inflection. One or more characters, followed by a single consonant,
+ * followed by "ied". */
+ public static final Pattern PATTERN = Pattern.compile(
+ "^(" + EngLatn.WORD_CHARS + "+" + EngLatn.CONSONANT_CHARS + ")ied$");
+
+ /** Constant needed for serialization. */
+ private static final long serialVersionUID = -5727030865320206765L;
+
+ /** The word segment that replaces the last word segment in the wrapped word. */
+ private WordSegment4a modifiedSegment;
+
+ /**
+ * Constructor.
+ * @param wrappedWord The wrapped word.
+ */
+ public EngLatnSuffix_ied(final Word4a wrappedWord) {
+ super(wrappedWord);
+ this.modifiedSegment = new Replace_y_by_ied(wrappedWord.getLastWordSegment());
+ }
+
+ @Override
+ public WordSegment4a getAppendedSegment() {
+ return null;
+ }
+
+ @Override
+ public WordSegment4a getModifiedSegment() {
+ return this.modifiedSegment;
+ }
+
+}
Property changes on: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ied.java
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+Author Date Id Rev
\ No newline at end of property
Added: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ied_Factory.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ied_Factory.java (rev 0)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ied_Factory.java 2026-07-28 14:59:23 UTC (rev 14937)
@@ -0,0 +1,88 @@
+/*
+ * Copyright 2026 The FOray Project.
+ * http://www.foray.org
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * This work is in part derived from the following work(s), used with the
+ * permission of the licensor:
+ * Apache FOP, licensed by the Apache Software Foundation
+ *
+ */
+
+/*
+ * $LastChangedRevision$
+ * $LastChangedDate$
+ * $LastChangedBy$
+ */
+
+package org.foray.orthography.inflection.eng;
+
+import org.foray.orthography.Word4a;
+import org.foray.orthography.inflection.InflectionFactory;
+
+import org.axsl.orthography.PartOfSpeech;
+import org.axsl.orthography.PosQualifier;
+
+import java.util.regex.Matcher;
+
+/**
+ * Factory class for {@link EngLatnSuffix_ied}.
+ */
+public final class EngLatnSuffix_ied_Factory extends InflectionFactory<EngLatnSuffix_ied> {
+
+ /** The singleton instance. */
+ private static final EngLatnSuffix_ied_Factory THE_INSTANCE = new EngLatnSuffix_ied_Factory();
+
+ /**
+ * Private constructor for this singleton class.
+ */
+ private EngLatnSuffix_ied_Factory() { }
+
+ /**
+ * Returns the singleton instance.
+ * @return The singleton instance.
+ */
+ public static EngLatnSuffix_ied_Factory getInstance() {
+ return THE_INSTANCE;
+ }
+
+ @Override
+ public CharSequence findLemmaChars(final CharSequence chars) {
+ final Matcher matcher = EngLatnSuffix_ied.PATTERN.matcher(chars);
+ if (! matcher.matches()) {
+ return null;
+ }
+
+ final String lemmaChars = matcher.group(1) + "y";
+ return lemmaChars;
+ }
+
+ @Override
+ public boolean isValidLemma(final Word4a lemma) {
+ if (lemma.isOfQualifiedType(PartOfSpeech.VERB, PosQualifier.REGULAR_ROOT)) {
+ /*
+ <derivative-type type="verb-form" desc="past tense"/>
+ <derivative-type type="past-participle"/>
+ */
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ protected EngLatnSuffix_ied makeInstance(final Word4a lemma) {
+ return new EngLatnSuffix_ied(lemma);
+ }
+
+}
Property changes on: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ied_Factory.java
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+Author Date Id Rev
\ No newline at end of property
Added: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/mods/Replace_y_by_ied.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/mods/Replace_y_by_ied.java (rev 0)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/mods/Replace_y_by_ied.java 2026-07-28 14:59:23 UTC (rev 14937)
@@ -0,0 +1,61 @@
+/*
+ * Copyright 2026 The FOray Project.
+ * http://www.foray.org
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * This work is in part derived from the following work(s), used with the
+ * permission of the licensor:
+ * Apache FOP, licensed by the Apache Software Foundation
+ *
+ */
+
+/*
+ * $LastChangedRevision$
+ * $LastChangedDate$
+ * $LastChangedBy$
+ */
+
+package org.foray.orthography.inflection.mods;
+
+import org.foray.orthography.inflection.ModifiedWordSegment;
+
+import org.axsl.orthography.WordSegment;
+
+/**
+ * Replaces a trailing "y" with "ied" in the wrapped word segment.
+ */
+public class Replace_y_by_ied extends ModifiedWordSegment {
+
+ /** Constant needed for serialization. */
+ private static final long serialVersionUID = 3690654458482335436L;
+
+ /**
+ * Constructor.
+ * @param wrappedSegment The wrapped segment.
+ */
+ public Replace_y_by_ied(final WordSegment wrappedSegment) {
+ super(wrappedSegment);
+ }
+
+ @Override
+ public String getNormalForm() {
+ return "y";
+ }
+
+ @Override
+ public String getWrappedForm() {
+ return "ied";
+ }
+
+}
Property changes on: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/mods/Replace_y_by_ied.java
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+Author Date Id Rev
\ No newline at end of property
Added: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/mods/package-info.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/mods/package-info.java (rev 0)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/mods/package-info.java 2026-07-28 14:59:23 UTC (rev 14937)
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2026 The FOray Project.
+ * http://www.foray.org
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * This work is in part derived from the following work(s), used with the
+ * permission of the licensor:
+ * Apache FOP, licensed by the Apache Software Foundation
+ *
+ */
+
+/*
+ * $LastChangedRevision$
+ * $LastChangedDate$
+ * $LastChangedBy$
+ */
+
+/**
+ * <p>Classes modifying word segments for inflected words.</p>
+ */
+
+package org.foray.orthography.inflection.mods;
Property changes on: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/mods/package-info.java
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+Author Date Id Rev
\ No newline at end of property
Modified: trunk/foray/foray-orthography/src/test/java/org/foray/orthography/StringWordTests.java
===================================================================
--- trunk/foray/foray-orthography/src/test/java/org/foray/orthography/StringWordTests.java 2026-07-28 12:42:36 UTC (rev 14936)
+++ trunk/foray/foray-orthography/src/test/java/org/foray/orthography/StringWordTests.java 2026-07-28 14:59:23 UTC (rev 14937)
@@ -128,8 +128,14 @@
public static final StringWord WORD_THRIVED = new StringWord(REGULAR_VERB, "thrived");
/** A verb test word: thriving. */
- public static final StringWord WORD_THRIVING = new StringWord(REGULAR_VERB, "thriv-ing");
+ public static final StringWord WORD_THRIVING = new StringWord(REGULAR_VERB, "thriv", "ing");
+ /** A regular verb test word: reply. */
+ public static final StringWord WORD_REPLY = new StringWord(REGULAR_VERB, "re", "ply");
+
+ /** A verb test word: replied. */
+ public static final StringWord WORD_REPLIED = new StringWord(REGULAR_VERB, "re", "plied");
+
/**
* Test of {@link StringWord#getWordComponent(int)}.
*/
Modified: trunk/foray/foray-orthography/src/test/java/org/foray/orthography/WordWrapperTests.java
===================================================================
--- trunk/foray/foray-orthography/src/test/java/org/foray/orthography/WordWrapperTests.java 2026-07-28 12:42:36 UTC (rev 14936)
+++ trunk/foray/foray-orthography/src/test/java/org/foray/orthography/WordWrapperTests.java 2026-07-28 14:59:23 UTC (rev 14937)
@@ -110,13 +110,11 @@
assertThatThrownBy(() -> {
this.out.charAt(-1);
- }).isInstanceOf(IndexOutOfBoundsException.class)
- .hasMessage("String index out of range: -1");
+ }).isInstanceOf(IndexOutOfBoundsException.class);
assertThatThrownBy(() -> {
this.out.charAt(10);
- }).isInstanceOf(IndexOutOfBoundsException.class)
- .hasMessage("String index out of range: 10");
+ }).isInstanceOf(IndexOutOfBoundsException.class);
}
/**
Added: trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ied_FactoryTests.java
===================================================================
--- trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ied_FactoryTests.java (rev 0)
+++ trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ied_FactoryTests.java 2026-07-28 14:59:23 UTC (rev 14937)
@@ -0,0 +1,80 @@
+/*
+ * Copyright 2026 The FOray Project.
+ * http://www.foray.org
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * This work is in part derived from the following work(s), used with the
+ * permission of the licensor:
+ * Apache FOP, licensed by the Apache Software Foundation
+ *
+ */
+
+/*
+ * $LastChangedRevision$
+ * $LastChangedDate$
+ * $LastChangedBy$
+ */
+
+package org.foray.orthography.inflection.eng;
+
+import org.foray.orthography.Dictionary4a;
+import org.foray.orthography.StringWordTests;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import org.assertj.core.api.AssertionsForClassTypes;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.mockito.Mockito;
+
+/**
+ * Tests of {@link EngLatnSuffix_ied_Factory}.
+ */
+public class EngLatnSuffix_ied_FactoryTests {
+
+ /** The object under test. */
+ private EngLatnSuffix_ied_Factory out;
+
+ /** A dictionary to use for these tests. */
+ private Dictionary4a dictionary;
+
+ /**
+ * Test setup.
+ */
+ @BeforeEach
+ public void before() {
+ this.out = EngLatnSuffix_ied_Factory.getInstance();
+ this.dictionary = Mockito.mock(Dictionary4a.class);
+ Mockito.when(dictionary.getWord("reply")).thenReturn(StringWordTests.WORD_REPLY);
+ }
+
+ /**
+ * Test of a String for which the factory should not be able to create an instance.
+ */
+ @Test
+ public void testInvalid() {
+ AssertionsForClassTypes.assertThat(out.makeInstance("replies", this.dictionary)).isNull();
+ }
+
+ /**
+ * Test of a String for which the factory should be able to create an instance.
+ */
+ @Test
+ public void testValid() {
+ final EngLatnSuffix_ied word = out.makeInstance("replied", this.dictionary);
+ /* Test for instance equality. */
+ AssertionsForClassTypes.assertThat(word.getWrappedWord()).isSameAs(StringWordTests.WORD_REPLY);
+ assertThat(word.getActualContent().toString()).isEqualTo("replied");
+ }
+
+}
Property changes on: trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ied_FactoryTests.java
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+Author Date Id Rev
\ No newline at end of property
Added: trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ied_Tests.java
===================================================================
--- trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ied_Tests.java (rev 0)
+++ trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ied_Tests.java 2026-07-28 14:59:23 UTC (rev 14937)
@@ -0,0 +1,55 @@
+/*
+ * Copyright 2026 The FOray Project.
+ * http://www.foray.org
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * This work is in part derived from the following work(s), used with the
+ * permission of the licensor:
+ * Apache FOP, licensed by the Apache Software Foundation
+ *
+ */
+
+/*
+ * $LastChangedRevision$
+ * $LastChangedDate$
+ * $LastChangedBy$
+ */
+
+package org.foray.orthography.inflection.eng;
+
+import org.foray.orthography.StringWord;
+import org.foray.orthography.StringWordTests;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import org.junit.jupiter.api.Test;
+
+/**
+ * Tests of {@link EngLatnSuffix_ied}.
+ */
+public class EngLatnSuffix_ied_Tests {
+
+ /**
+ * Tests various aspects of word ending in -ied.
+ */
+ @Test
+ public void test01() {
+ final StringWord word = StringWordTests.WORD_REPLY;
+ final EngLatnSuffix_ied wrapper = new EngLatnSuffix_ied(word);
+
+ assertThat(wrapper.toString()).isEqualTo("re-plied");
+ assertThat(wrapper.getNormalizedContent()).isEqualTo("reply");
+ assertThat(wrapper.getActualContent().toString()).isEqualTo("replied");
+ }
+
+}
Property changes on: trunk/foray/foray-orthography/src/test/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ied_Tests.java
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+Author Date Id Rev
\ No newline at end of property
Modified: trunk/foray/foray-orthography/src/test/resources/orthography-config.xml
===================================================================
--- trunk/foray/foray-orthography/src/test/resources/orthography-config.xml 2026-07-28 12:42:36 UTC (rev 14936)
+++ trunk/foray/foray-orthography/src/test/resources/orthography-config.xml 2026-07-28 14:59:23 UTC (rev 14937)
@@ -18,13 +18,18 @@
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_es_Factory"/>
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_apos_s_Factory"/>
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_s_Factory"/>
+
+ <derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_ied_Factory"/>
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_2c_ed_Factory"/>
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_ed_Factory"/>
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_ed2_Factory"/>
+
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_ing_Factory"/>
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_ing2_Factory"/>
+
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_er_Factory"/>
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_er2_Factory"/>
+
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_est_Factory"/>
<derivative-factory class="org.foray.orthography.inflection.eng.EngLatnSuffix_est2_Factory"/>
</derivative-factory-list>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <vic...@us...> - 2026-07-28 12:42:39
|
Revision: 14936
http://sourceforge.net/p/foray/code/14936
Author: victormote
Date: 2026-07-28 12:42:36 +0000 (Tue, 28 Jul 2026)
Log Message:
-----------
Remove no-longer useful abstract subclasses of InflectedWord.
Modified Paths:
--------------
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_ed.java
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_apos_s.java
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ed.java
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ed2.java
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_er.java
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_er2.java
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_es.java
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_est.java
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_est2.java
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ies.java
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ing.java
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ing2.java
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_s.java
Removed Paths:
-------------
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/FinalSegmentAddedWord.java
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/FinalSegmentModifiedWord.java
Deleted: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/FinalSegmentAddedWord.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/FinalSegmentAddedWord.java 2026-07-28 12:37:32 UTC (rev 14935)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/FinalSegmentAddedWord.java 2026-07-28 12:42:36 UTC (rev 14936)
@@ -1,49 +0,0 @@
-/*
- * Copyright 2019 The FOray Project.
- * http://www.foray.org
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * This work is in part derived from the following work(s), used with the
- * permission of the licensor:
- * Apache FOP, licensed by the Apache Software Foundation
- *
- */
-
-/*
- * $LastChangedRevision$
- * $LastChangedDate$
- * $LastChangedBy$
- */
-
-package org.foray.orthography.inflection;
-
-import org.foray.orthography.Word4a;
-
-/**
- * Wraps a word to add a final segment.
- */
-public abstract class FinalSegmentAddedWord extends InflectedWord {
-
- /** Constant needed for serialization. */
- private static final long serialVersionUID = -2950517772926478039L;
-
- /**
- * Constructor.
- * @param wrappedWord The wrapped word.
- */
- public FinalSegmentAddedWord(final Word4a wrappedWord) {
- super(wrappedWord);
- }
-
-}
Deleted: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/FinalSegmentModifiedWord.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/FinalSegmentModifiedWord.java 2026-07-28 12:37:32 UTC (rev 14935)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/FinalSegmentModifiedWord.java 2026-07-28 12:42:36 UTC (rev 14936)
@@ -1,49 +0,0 @@
-/*
- * Copyright 2019 The FOray Project.
- * http://www.foray.org
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * This work is in part derived from the following work(s), used with the
- * permission of the licensor:
- * Apache FOP, licensed by the Apache Software Foundation
- *
- */
-
-/*
- * $LastChangedRevision$
- * $LastChangedDate$
- * $LastChangedBy$
- */
-
-package org.foray.orthography.inflection;
-
-import org.foray.orthography.Word4a;
-
-/**
- * Abstract superclass for word wrappers that modify the final segment of the word.
- */
-public abstract class FinalSegmentModifiedWord extends InflectedWord {
-
- /** Constant needed for serialization. */
- private static final long serialVersionUID = 8075477767144178967L;
-
- /**
- * Constructor.
- * @param wrappedWord The wrapped word.
- */
- protected FinalSegmentModifiedWord(final Word4a wrappedWord) {
- super(wrappedWord);
- }
-
-}
Modified: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_ed.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_ed.java 2026-07-28 12:37:32 UTC (rev 14935)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_ed.java 2026-07-28 12:42:36 UTC (rev 14936)
@@ -30,7 +30,7 @@
import org.foray.orthography.Word4a;
import org.foray.orthography.WordSegment4a;
-import org.foray.orthography.inflection.FinalSegmentModifiedWord;
+import org.foray.orthography.inflection.InflectedWord;
import org.foray.orthography.inflection.mods.Add_2c_ed;
import java.util.regex.Pattern;
@@ -40,7 +40,7 @@
* to make it past tense or a past participle.
* For example, the English word "plan" would be wrapped to make the word "planned".
*/
-public class EngLatnSuffix_2c_ed extends FinalSegmentModifiedWord {
+public class EngLatnSuffix_2c_ed extends InflectedWord {
/** The pattern to be matched by words with this inflection. */
public static final Pattern PATTERN = Pattern.compile("^(" + EngLatn.WORD_CHARS + "+)([bcdfgklmnprstvz])(\\2)ed");
Modified: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_apos_s.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_apos_s.java 2026-07-28 12:37:32 UTC (rev 14935)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_apos_s.java 2026-07-28 12:42:36 UTC (rev 14936)
@@ -30,7 +30,7 @@
import org.foray.orthography.Word4a;
import org.foray.orthography.WordSegment4a;
-import org.foray.orthography.inflection.FinalSegmentModifiedWord;
+import org.foray.orthography.inflection.InflectedWord;
import org.foray.orthography.inflection.mods.Add_apos_s;
import java.util.regex.Pattern;
@@ -38,7 +38,7 @@
/**
* Wraps a singular word and adds the suffix "’s" to make it possessive or a contraction.
*/
-public class EngLatnSuffix_apos_s extends FinalSegmentModifiedWord {
+public class EngLatnSuffix_apos_s extends InflectedWord {
/** The pattern to be matched by words with this inflection. */
public static final Pattern PATTERN = Pattern.compile("^(" + EngLatn.WORD_CHARS + "+)’s$");
Modified: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ed.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ed.java 2026-07-28 12:37:32 UTC (rev 14935)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ed.java 2026-07-28 12:42:36 UTC (rev 14936)
@@ -30,7 +30,7 @@
import org.foray.orthography.Word4a;
import org.foray.orthography.WordSegment4a;
-import org.foray.orthography.inflection.FinalSegmentModifiedWord;
+import org.foray.orthography.inflection.InflectedWord;
import org.foray.orthography.inflection.mods.Add_ed;
import java.util.regex.Pattern;
@@ -39,7 +39,7 @@
* Wraps a word, usually a verb, and adds a syllable "ed" to the end to make it past tense.
* For example, the English word "astonish" would be wrapped to make the word "astonished".
*/
-public class EngLatnSuffix_ed extends FinalSegmentModifiedWord {
+public class EngLatnSuffix_ed extends InflectedWord {
/** The pattern to be matched by words with this inflection. */
public static final Pattern PATTERN = Pattern.compile("^(" + EngLatn.WORD_CHARS + "+)ed$");
Modified: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ed2.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ed2.java 2026-07-28 12:37:32 UTC (rev 14935)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ed2.java 2026-07-28 12:42:36 UTC (rev 14936)
@@ -30,7 +30,7 @@
import org.foray.orthography.Word4a;
import org.foray.orthography.WordSegment4a;
-import org.foray.orthography.inflection.FinalSegmentModifiedWord;
+import org.foray.orthography.inflection.InflectedWord;
import org.foray.orthography.inflection.mods.Add_d;
import java.util.regex.Pattern;
@@ -39,7 +39,7 @@
* Wraps a word, usually a verb ending in "e", and adds a "d" to the end to make it past tense.
* For example, the English word "enable" would be wrapped to make the word "enabled".
*/
-public class EngLatnSuffix_ed2 extends FinalSegmentModifiedWord {
+public class EngLatnSuffix_ed2 extends InflectedWord {
/** The pattern to be matched by words with this inflection. */
public static final Pattern PATTERN = Pattern.compile("^(" + EngLatn.WORD_CHARS + "+e)d$");
Modified: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_er.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_er.java 2026-07-28 12:37:32 UTC (rev 14935)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_er.java 2026-07-28 12:42:36 UTC (rev 14936)
@@ -30,7 +30,7 @@
import org.foray.orthography.Word4a;
import org.foray.orthography.WordSegment4a;
-import org.foray.orthography.inflection.FinalSegmentAddedWord;
+import org.foray.orthography.inflection.InflectedWord;
import java.util.regex.Pattern;
@@ -39,7 +39,7 @@
* than the lemma.
* For example, the English word "hard" would be wrapped to make the word "harder".
*/
-public class EngLatnSuffix_er extends FinalSegmentAddedWord {
+public class EngLatnSuffix_er extends InflectedWord {
/** The pattern to be matched by words with this inflection. */
public static final Pattern PATTERN = Pattern.compile("^(" + EngLatn.WORD_CHARS + "+)er$");
Modified: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_er2.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_er2.java 2026-07-28 12:37:32 UTC (rev 14935)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_er2.java 2026-07-28 12:42:36 UTC (rev 14936)
@@ -30,7 +30,7 @@
import org.foray.orthography.Word4a;
import org.foray.orthography.WordSegment4a;
-import org.foray.orthography.inflection.FinalSegmentAddedWord;
+import org.foray.orthography.inflection.InflectedWord;
import org.foray.orthography.inflection.mods.Delete_e;
import java.util.regex.Pattern;
@@ -40,7 +40,7 @@
* end to make it comparatively greater than the lemma.
* For example, the English word "wise" would be wrapped to make the word "wis-er".
*/
-public class EngLatnSuffix_er2 extends FinalSegmentAddedWord {
+public class EngLatnSuffix_er2 extends InflectedWord {
/** The pattern to be matched by words with this inflection. */
public static final Pattern PATTERN = Pattern.compile("^(" + EngLatn.WORD_CHARS + "+e)r$");
Modified: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_es.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_es.java 2026-07-28 12:37:32 UTC (rev 14935)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_es.java 2026-07-28 12:42:36 UTC (rev 14936)
@@ -31,7 +31,7 @@
import org.foray.orthography.StringWordSegmentUtf16;
import org.foray.orthography.Word4a;
import org.foray.orthography.WordSegment4a;
-import org.foray.orthography.inflection.FinalSegmentAddedWord;
+import org.foray.orthography.inflection.InflectedWord;
import java.util.regex.Pattern;
@@ -45,7 +45,7 @@
* <li>Pluralize a cardinal like "six," converting it to "sixes."</li>
* </ol>
*/
-public class EngLatnSuffix_es extends FinalSegmentAddedWord {
+public class EngLatnSuffix_es extends InflectedWord {
/** The pattern to be matched by words with this inflection. */
public static final Pattern PATTERN = Pattern.compile("^(" + EngLatn.WORD_CHARS + "+)([sxz]|sh|ch)es$");
Modified: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_est.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_est.java 2026-07-28 12:37:32 UTC (rev 14935)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_est.java 2026-07-28 12:42:36 UTC (rev 14936)
@@ -30,7 +30,7 @@
import org.foray.orthography.Word4a;
import org.foray.orthography.WordSegment4a;
-import org.foray.orthography.inflection.FinalSegmentAddedWord;
+import org.foray.orthography.inflection.InflectedWord;
import java.util.regex.Pattern;
@@ -38,7 +38,7 @@
* Wraps a word, usually a one-syllable adjective, and adds a syllable "est" to the end to make it a superlative.
* For example, the English word "great" would be wrapped to make the word "greatest".
*/
-public class EngLatnSuffix_est extends FinalSegmentAddedWord {
+public class EngLatnSuffix_est extends InflectedWord {
/** The pattern to be matched by words with this inflection. */
public static final Pattern PATTERN = Pattern.compile("^(" + EngLatn.WORD_CHARS + "+)est$");
Modified: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_est2.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_est2.java 2026-07-28 12:37:32 UTC (rev 14935)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_est2.java 2026-07-28 12:42:36 UTC (rev 14936)
@@ -30,7 +30,7 @@
import org.foray.orthography.Word4a;
import org.foray.orthography.WordSegment4a;
-import org.foray.orthography.inflection.FinalSegmentAddedWord;
+import org.foray.orthography.inflection.InflectedWord;
import org.foray.orthography.inflection.mods.Delete_e;
import java.util.regex.Pattern;
@@ -40,7 +40,7 @@
* end to make it superlative to the lemma.
* For example, the English word "wise" would be wrapped to make the word "wis-est".
*/
-public class EngLatnSuffix_est2 extends FinalSegmentAddedWord {
+public class EngLatnSuffix_est2 extends InflectedWord {
/** The pattern to be matched by words with this inflection. */
public static final Pattern PATTERN = Pattern.compile("^(" + EngLatn.WORD_CHARS + "+e)st$");
Modified: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ies.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ies.java 2026-07-28 12:37:32 UTC (rev 14935)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ies.java 2026-07-28 12:42:36 UTC (rev 14936)
@@ -30,7 +30,7 @@
import org.foray.orthography.Word4a;
import org.foray.orthography.WordSegment4a;
-import org.foray.orthography.inflection.FinalSegmentModifiedWord;
+import org.foray.orthography.inflection.InflectedWord;
import org.foray.orthography.inflection.mods.Replace_y_by_ies;
import java.util.regex.Pattern;
@@ -40,7 +40,7 @@
* the "y" to "ies", thus making the plural form of the word.
* An example of a word where this might be used is to convert "com-pa-ny" to "com-pa-nies".
*/
-public class EngLatnSuffix_ies extends FinalSegmentModifiedWord {
+public class EngLatnSuffix_ies extends InflectedWord {
/** The pattern to be matched by words with this inflection. One or more characters, followed by a single consonant,
* followed by "ies". */
Modified: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ing.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ing.java 2026-07-28 12:37:32 UTC (rev 14935)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ing.java 2026-07-28 12:42:36 UTC (rev 14936)
@@ -30,7 +30,7 @@
import org.foray.orthography.Word4a;
import org.foray.orthography.WordSegment4a;
-import org.foray.orthography.inflection.FinalSegmentAddedWord;
+import org.foray.orthography.inflection.InflectedWord;
import java.util.regex.Pattern;
@@ -38,7 +38,7 @@
* Wraps a word, usually a verb, and adds a syllable "ing" to the end to make it a present participle.
* For example, the English word "talk" would be wrapped to make the word "talking".
*/
-public class EngLatnSuffix_ing extends FinalSegmentAddedWord {
+public class EngLatnSuffix_ing extends InflectedWord {
/** The pattern to be matched by words with this inflection. */
public static final Pattern PATTERN = Pattern.compile("^(" + EngLatn.WORD_CHARS + "+)ing$");
Modified: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ing2.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ing2.java 2026-07-28 12:37:32 UTC (rev 14935)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ing2.java 2026-07-28 12:42:36 UTC (rev 14936)
@@ -30,7 +30,7 @@
import org.foray.orthography.Word4a;
import org.foray.orthography.WordSegment4a;
-import org.foray.orthography.inflection.FinalSegmentAddedWord;
+import org.foray.orthography.inflection.InflectedWord;
import org.foray.orthography.inflection.mods.Delete_e;
import java.util.regex.Pattern;
@@ -40,7 +40,7 @@
* make it a present participle.
* For example, the English word "thrive" would be wrapped to make the word "thriving".
*/
-public class EngLatnSuffix_ing2 extends FinalSegmentAddedWord {
+public class EngLatnSuffix_ing2 extends InflectedWord {
/** The pattern to be matched by words with this inflection. */
public static final Pattern PATTERN = Pattern.compile("^(" + EngLatn.WORD_CHARS + "+)ing$");
Modified: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_s.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_s.java 2026-07-28 12:37:32 UTC (rev 14935)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_s.java 2026-07-28 12:42:36 UTC (rev 14936)
@@ -30,7 +30,7 @@
import org.foray.orthography.Word4a;
import org.foray.orthography.WordSegment4a;
-import org.foray.orthography.inflection.FinalSegmentModifiedWord;
+import org.foray.orthography.inflection.InflectedWord;
import org.foray.orthography.inflection.mods.Add_s;
import java.util.regex.Pattern;
@@ -38,7 +38,7 @@
/**
* Wraps a singular word and adds the suffix "s" to make it plural.
*/
-public final class EngLatnSuffix_s extends FinalSegmentModifiedWord {
+public final class EngLatnSuffix_s extends InflectedWord {
/** The pattern to be matched by words with this inflection. */
public static final Pattern PATTERN = Pattern.compile("^(" + EngLatn.WORD_CHARS + "+)s$");
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <vic...@us...> - 2026-07-28 12:37:35
|
Revision: 14935
http://sourceforge.net/p/foray/code/14935
Author: victormote
Date: 2026-07-28 12:37:32 +0000 (Tue, 28 Jul 2026)
Log Message:
-----------
Unify wordSegmentAt() method for all InflectedWord subclasses.
Modified Paths:
--------------
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/Word4a.java
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/FinalSegmentAddedWord.java
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/FinalSegmentModifiedWord.java
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/InflectedWord.java
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_ed.java
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_apos_s.java
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ed.java
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ed2.java
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_er2.java
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_est2.java
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ies.java
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ing2.java
trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_s.java
Modified: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/Word4a.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/Word4a.java 2026-07-28 11:36:01 UTC (rev 14934)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/Word4a.java 2026-07-28 12:37:32 UTC (rev 14935)
@@ -213,6 +213,15 @@
@Override
public abstract WordSegment4a wordSegmentAt(int segmentIndex);
+ /**
+ * Convenience method that returns the last segment of this word.
+ * @return The last segment of this word.
+ */
+ public WordSegment4a getLastWordSegment() {
+ final int lastSegmentIndex = qtyWordSegments() - 1;
+ return wordSegmentAt(lastSegmentIndex);
+ }
+
@Override
public Type getKpNodeType() {
return KpNode.Type.BRANCH;
Modified: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/FinalSegmentAddedWord.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/FinalSegmentAddedWord.java 2026-07-28 11:36:01 UTC (rev 14934)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/FinalSegmentAddedWord.java 2026-07-28 12:37:32 UTC (rev 14935)
@@ -29,7 +29,6 @@
package org.foray.orthography.inflection;
import org.foray.orthography.Word4a;
-import org.foray.orthography.WordSegment4a;
/**
* Wraps a word to add a final segment.
@@ -47,15 +46,4 @@
super(wrappedWord);
}
- @Override
- public WordSegment4a wordSegmentAt(final int segmentIndex) {
- if (segmentIndex < getWrappedWord().qtyWordSegments()) {
- return getWrappedWord().wordSegmentAt(segmentIndex);
- }
- if (segmentIndex < qtyWordSegments()) {
- return getAppendedSegment();
- }
- throw new IndexOutOfBoundsException(Integer.toString(segmentIndex));
- }
-
}
Modified: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/FinalSegmentModifiedWord.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/FinalSegmentModifiedWord.java 2026-07-28 11:36:01 UTC (rev 14934)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/FinalSegmentModifiedWord.java 2026-07-28 12:37:32 UTC (rev 14935)
@@ -29,10 +29,7 @@
package org.foray.orthography.inflection;
import org.foray.orthography.Word4a;
-import org.foray.orthography.WordSegment4a;
-import org.axsl.orthography.WordSegment;
-
/**
* Abstract superclass for word wrappers that modify the final segment of the word.
*/
@@ -41,9 +38,6 @@
/** Constant needed for serialization. */
private static final long serialVersionUID = 8075477767144178967L;
- /** The word segment that replaces the last word segment in the wrapped word. */
- private WordSegment4a lastSegment;
-
/**
* Constructor.
* @param wrappedWord The wrapped word.
@@ -50,24 +44,6 @@
*/
protected FinalSegmentModifiedWord(final Word4a wrappedWord) {
super(wrappedWord);
- final int lastSegmentIndex = wrappedWord.qtyWordSegments() - 1;
- final WordSegment unmodifiedSegment = wrappedWord.wordSegmentAt(lastSegmentIndex);
- this.lastSegment = createModifiedSegment(unmodifiedSegment);
}
- @Override
- public WordSegment4a wordSegmentAt(final int segmentIndex) {
- if (segmentIndex == qtyWordSegments() - 1) {
- return this.lastSegment;
- }
- return getWrappedWord().wordSegmentAt(segmentIndex);
- }
-
- /**
- * Returns the segment wrapper that should be treated as the final segment of this word.
- * @param unmodifiedSegment The segment that should be wrapped to create the substitute.
- * @return The segment that replaces the final segment.
- */
- protected abstract WordSegment4a createModifiedSegment(WordSegment unmodifiedSegment);
-
}
Modified: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/InflectedWord.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/InflectedWord.java 2026-07-28 11:36:01 UTC (rev 14934)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/InflectedWord.java 2026-07-28 12:37:32 UTC (rev 14935)
@@ -28,6 +28,7 @@
package org.foray.orthography.inflection;
+import org.foray.common.MarkedIndexOutOfBoundsException;
import org.foray.orthography.Word4a;
import org.foray.orthography.WordSegment4a;
import org.foray.orthography.WordWrapper;
@@ -54,6 +55,32 @@
return getWrappedWord().qtyWordSegments() + addedSegments;
}
+ @Override
+ public WordSegment4a wordSegmentAt(final int segmentIndex) {
+ if (segmentIndex >= qtyWordSegments()) {
+ throw new MarkedIndexOutOfBoundsException(segmentIndex, qtyWordSegments());
+ }
+
+ if (getAppendedSegment() == null) {
+ if (segmentIndex == qtyWordSegments() - 1) {
+ if (getModifiedSegment() != null) {
+ return getModifiedSegment();
+ }
+ }
+ } else {
+ if (segmentIndex == qtyWordSegments() - 1) {
+ return getAppendedSegment();
+ }
+ if (segmentIndex == qtyWordSegments() - 2) {
+ if (getModifiedSegment() != null) {
+ return getModifiedSegment();
+ }
+ }
+ }
+
+ return getWrappedWord().wordSegmentAt(segmentIndex);
+ }
+
/**
* Returns the word segment to be appended, if any.
* @return The segment to be appended, or null if none should be appended.
Modified: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_ed.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_ed.java 2026-07-28 11:36:01 UTC (rev 14934)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_2c_ed.java 2026-07-28 12:37:32 UTC (rev 14935)
@@ -33,8 +33,6 @@
import org.foray.orthography.inflection.FinalSegmentModifiedWord;
import org.foray.orthography.inflection.mods.Add_2c_ed;
-import org.axsl.orthography.WordSegment;
-
import java.util.regex.Pattern;
/**
@@ -50,6 +48,9 @@
/** Constant needed for serialization. */
private static final long serialVersionUID = 8394051902368166495L;
+ /** The word segment that replaces the last word segment in the wrapped word. */
+ private WordSegment4a modifiedSegment;
+
/**
* Constructor.
* @param wrappedWord The wrapped word.
@@ -56,6 +57,7 @@
*/
public EngLatnSuffix_2c_ed(final Word4a wrappedWord) {
super(wrappedWord);
+ this.modifiedSegment = new Add_2c_ed(wrappedWord.getLastWordSegment());
}
@Override
@@ -65,12 +67,7 @@
@Override
public WordSegment4a getModifiedSegment() {
- return null;
+ return this.modifiedSegment;
}
- @Override
- protected WordSegment4a createModifiedSegment(final WordSegment unmodifiedSegment) {
- return new Add_2c_ed(unmodifiedSegment);
- }
-
}
Modified: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_apos_s.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_apos_s.java 2026-07-28 11:36:01 UTC (rev 14934)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_apos_s.java 2026-07-28 12:37:32 UTC (rev 14935)
@@ -33,8 +33,6 @@
import org.foray.orthography.inflection.FinalSegmentModifiedWord;
import org.foray.orthography.inflection.mods.Add_apos_s;
-import org.axsl.orthography.WordSegment;
-
import java.util.regex.Pattern;
/**
@@ -48,6 +46,9 @@
/** Constant needed for serialization. */
private static final long serialVersionUID = 3005622022724534906L;
+ /** The word segment that replaces the last word segment in the wrapped word. */
+ private WordSegment4a modifiedSegment;
+
/**
* Constructor.
* @param wrappedWord The wrapped word.
@@ -54,6 +55,7 @@
*/
public EngLatnSuffix_apos_s(final Word4a wrappedWord) {
super(wrappedWord);
+ this.modifiedSegment = new Add_apos_s(wrappedWord.getLastWordSegment());
}
@Override
@@ -63,12 +65,7 @@
@Override
public WordSegment4a getModifiedSegment() {
- return null;
+ return this.modifiedSegment;
}
- @Override
- protected WordSegment4a createModifiedSegment(final WordSegment unmodifiedSegment) {
- return new Add_apos_s(unmodifiedSegment);
- }
-
}
Modified: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ed.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ed.java 2026-07-28 11:36:01 UTC (rev 14934)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ed.java 2026-07-28 12:37:32 UTC (rev 14935)
@@ -33,8 +33,6 @@
import org.foray.orthography.inflection.FinalSegmentModifiedWord;
import org.foray.orthography.inflection.mods.Add_ed;
-import org.axsl.orthography.WordSegment;
-
import java.util.regex.Pattern;
/**
@@ -49,6 +47,9 @@
/** Constant needed for serialization. */
private static final long serialVersionUID = -6300334484689323279L;
+ /** The word segment that replaces the last word segment in the wrapped word. */
+ private WordSegment4a modifiedSegment;
+
/**
* Constructor.
* @param wrappedWord The wrapped word.
@@ -55,6 +56,7 @@
*/
public EngLatnSuffix_ed(final Word4a wrappedWord) {
super(wrappedWord);
+ this.modifiedSegment = new Add_ed(wrappedWord.getLastWordSegment());
}
@Override
@@ -64,12 +66,7 @@
@Override
public WordSegment4a getModifiedSegment() {
- return null;
+ return this.modifiedSegment;
}
- @Override
- protected WordSegment4a createModifiedSegment(final WordSegment unmodifiedSegment) {
- return new Add_ed(unmodifiedSegment);
- }
-
}
Modified: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ed2.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ed2.java 2026-07-28 11:36:01 UTC (rev 14934)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ed2.java 2026-07-28 12:37:32 UTC (rev 14935)
@@ -33,8 +33,6 @@
import org.foray.orthography.inflection.FinalSegmentModifiedWord;
import org.foray.orthography.inflection.mods.Add_d;
-import org.axsl.orthography.WordSegment;
-
import java.util.regex.Pattern;
/**
@@ -49,6 +47,9 @@
/** Constant needed for serialization. */
private static final long serialVersionUID = -8582365946868677749L;
+ /** The word segment that replaces the last word segment in the wrapped word. */
+ private WordSegment4a modifiedSegment;
+
/**
* Constructor.
* @param wrappedWord The wrapped word.
@@ -55,6 +56,7 @@
*/
public EngLatnSuffix_ed2(final Word4a wrappedWord) {
super(wrappedWord);
+ this.modifiedSegment = new Add_d(wrappedWord.getLastWordSegment());
}
@Override
@@ -64,12 +66,7 @@
@Override
public WordSegment4a getModifiedSegment() {
- return null;
+ return this.modifiedSegment;
}
- @Override
- protected WordSegment4a createModifiedSegment(final WordSegment unmodifiedSegment) {
- return new Add_d(unmodifiedSegment);
- }
-
}
Modified: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_er2.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_er2.java 2026-07-28 11:36:01 UTC (rev 14934)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_er2.java 2026-07-28 12:37:32 UTC (rev 14935)
@@ -48,6 +48,9 @@
/** Constant needed for serialization. */
private static final long serialVersionUID = 844895335860248111L;
+ /** The word segment that replaces the last word segment in the wrapped word. */
+ private WordSegment4a modifiedSegment;
+
/**
* Constructor.
* @param wrappedWord The wrapped word.
@@ -54,6 +57,7 @@
*/
public EngLatnSuffix_er2(final Word4a wrappedWord) {
super(wrappedWord);
+ this.modifiedSegment = new Delete_e(wrappedWord.getLastWordSegment());
}
@Override
@@ -63,23 +67,7 @@
@Override
public WordSegment4a getModifiedSegment() {
- return null;
+ return this.modifiedSegment;
}
- @Override
- public WordSegment4a wordSegmentAt(final int segmentIndex) {
- if (segmentIndex >= qtyWordSegments()) {
- throw new IndexOutOfBoundsException(Integer.toString(segmentIndex));
- }
- if (segmentIndex == qtyWordSegments() - 1) {
- return getAppendedSegment();
- }
- if (segmentIndex == qtyWordSegments() - 2) {
- final WordSegment4a segment = getWrappedWord().wordSegmentAt(segmentIndex);
- final Delete_e replacement = new Delete_e(segment);
- return replacement;
- }
- return getWrappedWord().wordSegmentAt(segmentIndex);
- }
-
}
Modified: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_est2.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_est2.java 2026-07-28 11:36:01 UTC (rev 14934)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_est2.java 2026-07-28 12:37:32 UTC (rev 14935)
@@ -48,6 +48,9 @@
/** Constant needed for serialization. */
private static final long serialVersionUID = 844895335860248111L;
+ /** The word segment that replaces the last word segment in the wrapped word. */
+ private WordSegment4a modifiedSegment;
+
/**
* Constructor.
* @param wrappedWord The wrapped word.
@@ -54,6 +57,7 @@
*/
public EngLatnSuffix_est2(final Word4a wrappedWord) {
super(wrappedWord);
+ this.modifiedSegment = new Delete_e(wrappedWord.getLastWordSegment());
}
@Override
@@ -63,23 +67,7 @@
@Override
public WordSegment4a getModifiedSegment() {
- return null;
+ return this.modifiedSegment;
}
- @Override
- public WordSegment4a wordSegmentAt(final int segmentIndex) {
- if (segmentIndex >= qtyWordSegments()) {
- throw new IndexOutOfBoundsException(Integer.toString(segmentIndex));
- }
- if (segmentIndex == qtyWordSegments() - 1) {
- return getAppendedSegment();
- }
- if (segmentIndex == qtyWordSegments() - 2) {
- final WordSegment4a segment = getWrappedWord().wordSegmentAt(segmentIndex);
- final Delete_e replacement = new Delete_e(segment);
- return replacement;
- }
- return getWrappedWord().wordSegmentAt(segmentIndex);
- }
-
}
Modified: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ies.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ies.java 2026-07-28 11:36:01 UTC (rev 14934)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ies.java 2026-07-28 12:37:32 UTC (rev 14935)
@@ -33,8 +33,6 @@
import org.foray.orthography.inflection.FinalSegmentModifiedWord;
import org.foray.orthography.inflection.mods.Replace_y_by_ies;
-import org.axsl.orthography.WordSegment;
-
import java.util.regex.Pattern;
/**
@@ -52,6 +50,9 @@
/** Constant needed for serialization. */
private static final long serialVersionUID = -7424864981681700754L;
+ /** The word segment that replaces the last word segment in the wrapped word. */
+ private WordSegment4a modifiedSegment;
+
/**
* Constructor.
* @param wrappedWord The wrapped word.
@@ -58,6 +59,7 @@
*/
public EngLatnSuffix_ies(final Word4a wrappedWord) {
super(wrappedWord);
+ this.modifiedSegment = new Replace_y_by_ies(wrappedWord.getLastWordSegment());
}
@Override
@@ -67,12 +69,7 @@
@Override
public WordSegment4a getModifiedSegment() {
- return null;
+ return this.modifiedSegment;
}
- @Override
- protected WordSegment4a createModifiedSegment(final WordSegment unmodifiedSegment) {
- return new Replace_y_by_ies(unmodifiedSegment);
- }
-
}
Modified: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ing2.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ing2.java 2026-07-28 11:36:01 UTC (rev 14934)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_ing2.java 2026-07-28 12:37:32 UTC (rev 14935)
@@ -48,6 +48,9 @@
/** Constant needed for serialization. */
private static final long serialVersionUID = -7846984985428239100L;
+ /** The word segment that replaces the last word segment in the wrapped word. */
+ private WordSegment4a modifiedSegment;
+
/**
* Constructor.
* @param wrappedWord The wrapped word.
@@ -54,6 +57,7 @@
*/
public EngLatnSuffix_ing2(final Word4a wrappedWord) {
super(wrappedWord);
+ this.modifiedSegment = new Delete_e(wrappedWord.getLastWordSegment());
}
@Override
@@ -63,23 +67,7 @@
@Override
public WordSegment4a getModifiedSegment() {
- return null;
+ return this.modifiedSegment;
}
- @Override
- public WordSegment4a wordSegmentAt(final int segmentIndex) {
- if (segmentIndex >= qtyWordSegments()) {
- throw new IndexOutOfBoundsException(Integer.toString(segmentIndex));
- }
- if (segmentIndex == qtyWordSegments() - 1) {
- return getAppendedSegment();
- }
- if (segmentIndex == qtyWordSegments() - 2) {
- final WordSegment4a segment = getWrappedWord().wordSegmentAt(segmentIndex);
- final Delete_e replacement = new Delete_e(segment);
- return replacement;
- }
- return getWrappedWord().wordSegmentAt(segmentIndex);
- }
-
}
Modified: trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_s.java
===================================================================
--- trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_s.java 2026-07-28 11:36:01 UTC (rev 14934)
+++ trunk/foray/foray-orthography/src/main/java/org/foray/orthography/inflection/eng/EngLatnSuffix_s.java 2026-07-28 12:37:32 UTC (rev 14935)
@@ -33,8 +33,6 @@
import org.foray.orthography.inflection.FinalSegmentModifiedWord;
import org.foray.orthography.inflection.mods.Add_s;
-import org.axsl.orthography.WordSegment;
-
import java.util.regex.Pattern;
/**
@@ -48,6 +46,9 @@
/** Constant needed for serialization. */
private static final long serialVersionUID = -7424864981681700754L;
+ /** The word segment that replaces the last word segment in the wrapped word. */
+ private WordSegment4a modifiedSegment;
+
/**
* Constructor.
* @param wrappedWord The wrapped word.
@@ -54,6 +55,7 @@
*/
public EngLatnSuffix_s(final Word4a wrappedWord) {
super(wrappedWord);
+ this.modifiedSegment = new Add_s(wrappedWord.getLastWordSegment());
}
@Override
@@ -63,12 +65,7 @@
@Override
public WordSegment4a getModifiedSegment() {
- return null;
+ return this.modifiedSegment;
}
- @Override
- protected WordSegment4a createModifiedSegment(final WordSegment unmodifiedSegment) {
- return new Add_s(unmodifiedSegment);
- }
-
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|