Changeset 365
- Timestamp:
- 07/28/09 21:49:15 (3 years ago)
- Files:
-
- lex/trunk/.classpath (modified) (1 diff)
- lex/trunk/.settings/org.eclipse.core.resources.prefs (modified) (2 diffs)
- lex/trunk/etc/Description_of_Lex_for_Leipzig_2006.odt (modified) (previous)
- lex/trunk/src/com/qwirx/lex/controller/ClauseController.java (modified) (4 diffs)
- lex/trunk/src/com/qwirx/lex/controller/ControllerBase.java (modified) (5 diffs)
- lex/trunk/src/com/qwirx/lex/controller/Navigator.java (modified) (1 diff)
- lex/trunk/src/com/qwirx/lex/morph/HebrewMorphemeGenerator.java (modified) (9 diffs)
- lex/trunk/src/com/qwirx/lex/translit/DatabaseTransliterator.java (modified) (2 diffs)
- lex/trunk/test/com/qwirx/lex/ClauseControllerTest.java (modified) (5 diffs)
- lex/trunk/test/com/qwirx/lex/GenExporterTest.java (modified) (3 diffs)
- lex/trunk/test/com/qwirx/lex/NavigatorTest.java (modified) (2 diffs)
- lex/trunk/test/com/qwirx/lex/TransliteratorTest.java (modified) (16 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
lex/trunk/.classpath
r269 r365 1 1 <?xml version="1.0" encoding="UTF-8"?> 2 2 <classpath> 3 <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> 4 <classpathentry kind="src" path="src"/> 5 <classpathentry kind="src" path="properties"/> 6 <classpathentry kind="lib" path="jsp/WEB-INF/lib/junit.jar"/> 7 <classpathentry kind="lib" path="jsp/WEB-INF/lib/jwnl.jar"/> 8 <classpathentry kind="lib" path="jsp/WEB-INF/lib/httpunit.jar"/> 9 <classpathentry kind="lib" path="jsp/WEB-INF/lib/mysql-connector-java-5.1.5-bin.jar"/> 10 <classpathentry excluding="testsuite/simple/" kind="src" path="test"/> 11 <classpathentry kind="lib" path="jsp/WEB-INF/lib/log4j-1.2.8.jar"/> 12 <classpathentry kind="lib" path="jsp/WEB-INF/lib/Tidy.jar"/> 13 <classpathentry kind="lib" path="jsp/WEB-INF/lib/jdom-1.0.jar"/> 14 <classpathentry kind="lib" path="jsp/WEB-INF/lib/jsword-1.0.8.jar"/> 15 <classpathentry kind="lib" path="jsp/WEB-INF/lib/jsword-common-1.0.8.jar"/> 16 <classpathentry combineaccessrules="false" kind="src" path="/jemdros"/> 17 <classpathentry kind="output" path="jsp/WEB-INF/classes"/> 3 <classpathentry path="org.eclipse.jdt.launching.JRE_CONTAINER" kind="con"/> 4 <classpathentry path="src" kind="src"/> 5 <classpathentry path="properties" kind="src"/> 6 <classpathentry path="jsp/WEB-INF/lib/junit.jar" kind="lib"/> 7 <classpathentry path="jsp/WEB-INF/lib/mysql-connector-java-5.1.5-bin.jar" kind="lib"/> 8 <classpathentry excluding="testsuite/simple/" path="test" kind="src"/> 9 <classpathentry path="jsp/WEB-INF/lib/log4j-1.2.8.jar" kind="lib"/> 10 <classpathentry path="jsp/WEB-INF/lib/jdom-1.0.jar" kind="lib"/> 11 <classpathentry path="/jemdros" combineaccessrules="false" kind="src"/> 12 <classpathentry path="/haobackend" combineaccessrules="false" kind="src"/> 13 <classpathentry path="TOMCAT_HOME/common/lib/servlet-api.jar" kind="var"/> 14 <classpathentry path="TOMCAT_HOME/common/lib/jasper-runtime.jar" kind="var"/> 15 <classpathentry path="TOMCAT_HOME/common/lib/jsp-api.jar" kind="var"/> 16 <classpathentry path="/jsword-common" combineaccessrules="false" kind="src"/> 17 <classpathentry path="/jsword-jsword" combineaccessrules="false" kind="src"/> 18 <classpathentry path="/httpunit-1.6.2" combineaccessrules="false" kind="src"/> 19 <classpathentry sourcepath="/haobackend" path="jsp/WEB-INF/lib/org.aptivate.haobackend.jar" kind="lib"/> 20 <classpathentry path="jsp/WEB-INF/lib/jwnl-1.4rc2.jar" kind="lib"/> 21 <classpathentry path="jsp/WEB-INF/classes" kind="output"/> 18 22 </classpath> lex/trunk/.settings/org.eclipse.core.resources.prefs
r259 r365 1 # Wed Jan 02 17:36:47CET 20081 #Sat Jan 05 16:55:05 CET 2008 2 2 eclipse.preferences.version=1 3 3 encoding//jsp/attributes.jsp=UTF-8 … … 19 19 encoding//jsp/rules.jsp=UTF-8 20 20 encoding//jsp/search.jsp=UTF-8 21 encoding//jsp/wordnet.jsp=UTF-8 21 22 encoding/<project>=UTF-8 lex/trunk/src/com/qwirx/lex/controller/ClauseController.java
r360 r365 536 536 } 537 537 538 private Cell getWivuLexiconCell(MatchedObject word, String part_of_speech, 539 boolean canWrite) 538 /** 539 * Public for unit testing only. Not an API, do not call! 540 * @param word 541 * @param canWrite 542 * @return 543 * @throws Exception 544 */ 545 public Cell getWivuLexiconCell(MatchedObject word, boolean canWrite) 540 546 throws Exception 541 { 547 { 542 548 int wivuIndex = 0; 543 549 EMdFValue wivuIndexE = word.getEMdFValue("wivu_lexicon_id"); … … 798 804 if (type.equals("word")) 799 805 { 800 String part_of_speech = word.getFeatureAsString(801 word.getEMdFValueIndex(802 "phrase_dependent_part_of_speech"));803 804 806 Cell cell = new Cell(null); 805 807 cell.label = HebrewConverter.wordTranslitToHtml(word, … … 811 813 cell.subcells.add(getLexiconGlossCell(word)); 812 814 cell.subcells.add(getWivuLexiconCell(word, 813 part_of_speech,canWriteToPhrase));815 canWriteToPhrase)); 814 816 cell.subcells.add(getDibLookupCell(word)); 815 817 cell.subcells.add(getKingJamesGloss(word)); … … 1126 1128 columns.add(cells); 1127 1129 1128 if (morpheme.isGraphicalWordEnd() && 1130 if (!morpheme.isDisplayedWithEquals() && 1131 morpheme.isLastMorpheme() && 1129 1132 (phrases.hasNext() || words.hasNext())) 1130 1133 { lex/trunk/src/com/qwirx/lex/controller/ControllerBase.java
r351 r365 156 156 { 157 157 hebrew.append(morpheme.getSurface()); 158 if (morpheme.isGraphicalWordEnd()) 158 if (morpheme.isLastMorpheme() && 159 !morpheme.isDisplayedWithEquals()) 159 160 { 160 161 hebrew.append(" "); … … 170 171 throws Exception 171 172 { 172 SheafConstIterator phrases = m_Clause.getSheaf().const_iterator(); 173 Sheaf sheaf = m_Clause.getSheaf(); 174 SheafConstIterator phrases = sheaf.const_iterator(); 173 175 HebrewMorphemeGenerator generator = new HebrewMorphemeGenerator(); 174 176 List<MorphEdge> morphEdges = new ArrayList<MorphEdge>(); … … 176 178 while (phrases.hasNext()) 177 179 { 178 MatchedObject phrase = phrases.next().const_iterator().next(); 179 SheafConstIterator words = phrase.getSheaf().const_iterator(); 180 Straw straw = phrases.next(); 181 StrawConstIterator swci = straw.const_iterator(); 182 MatchedObject phrase = swci.next(); 183 Sheaf sheaf2 = phrase.getSheaf(); 184 SheafConstIterator words = sheaf2.const_iterator(); 180 185 181 186 while (words.hasNext()) 182 187 { 183 MatchedObject word = words.next().const_iterator().next(); 184 List<Morpheme> morphemes = generator.parse(word, true, m_Sql, 188 Straw straw2 = words.next(); 189 StrawConstIterator swci2 = straw2.const_iterator(); 190 MatchedObject word = swci2.next(); 191 List<Morpheme> morphemes = new ArrayList<Morpheme>(); 192 193 morphemes = generator.parse(word, true, m_Sql, 185 194 m_Transliterator); 186 195 187 196 for (int i = 0; i < morphemes.size(); i++) 188 197 { … … 190 199 String translit = 191 200 HebrewConverter.toHtml(morpheme.getTranslit()); 192 if (translit.equals("")) translit = "Ø";193 201 194 202 if (i < morphemes.size() - 1) … … 202 210 Map<String, String> attributes = 203 211 new HashMap<String, String>(); 204 205 // not safe, crashes emdros 2.0.6, emailed ulrik 090403206 /*207 StringList features = word.getFeatureList();208 for (StringListConstIterator iter = features.const_iterator();209 iter.hasNext();)210 {211 String feature = iter.next();212 attributes.put("word_" + feature,213 word.getFeatureAsString(214 word.getEMdFValueIndex(feature)));215 }216 */217 218 // also not safe219 /*220 String[] featuresToCopy = new String[]{"person", "number",221 "gender", "tense", "stem"222 };223 for (String feature : featuresToCopy)224 {225 System.out.println(feature);226 attributes.put("word_" + feature,227 word.getFeatureAsString(228 word.getEMdFValueIndex(feature)));229 }230 */231 212 232 213 attributes.put("word_person", lex/trunk/src/com/qwirx/lex/controller/Navigator.java
r360 r365 245 245 } 246 246 247 if (word_iter.hasNext() && 248 morphemes.get(morphemes.size() - 1).isGraphicalWordEnd()) 247 Morpheme lastMorpheme = morphemes.get(morphemes.size() - 1); 248 249 if (word_iter.hasNext() && !lastMorpheme.isDisplayedWithEquals()) 249 250 { 250 251 lexemes.append(" "); lex/trunk/src/com/qwirx/lex/morph/HebrewMorphemeGenerator.java
r360 r365 20 20 { 21 21 private String m_Surface, m_Gloss, m_Symbol, m_Translit; 22 private boolean m_IsLastMorpheme, m_ IsGraphicalWordEnd;22 private boolean m_IsLastMorpheme, m_DisplayWithEquals; 23 23 24 24 public Morpheme(String surface, String gloss, String symbol, 25 boolean isLastMorpheme, boolean isGraphicalWordEnd)25 boolean isLastMorpheme, boolean displayWithEquals) 26 26 { 27 27 m_Surface = surface; … … 29 29 m_Symbol = symbol; 30 30 m_IsLastMorpheme = isLastMorpheme; 31 m_ IsGraphicalWordEnd = isGraphicalWordEnd;31 m_DisplayWithEquals = displayWithEquals; 32 32 } 33 33 … … 35 35 public String getGloss() { return m_Gloss; } 36 36 public String getNodeSymbol() { return m_Symbol; } 37 public boolean isGraphicalWordEnd() { return m_IsGraphicalWordEnd; } 37 public boolean isLastMorpheme() { return m_IsLastMorpheme; } 38 public boolean isDisplayedWithEquals() { return m_DisplayWithEquals; } 38 39 void setTranslit(String translit) { m_Translit = translit; } 39 40 public String getTranslit() { return m_Translit; } … … 52 53 } 53 54 54 if (m_ IsLastMorpheme && !m_IsGraphicalWordEnd)55 if (m_DisplayWithEquals) 55 56 { 56 57 return translit + "="; … … 197 198 else if (gender.equals("feminine")) { gender = "F"; } 198 199 else if (gender.equals("common")) { gender = "="; } 200 else if (gender.equals("unknown")) { gender = "u"; } 199 201 200 202 String number = features.get("number"); … … 278 280 features.get("graphical_verbal_ending_utf8") + 279 281 features.get("graphical_nominal_ending_utf8"), 280 verbEnding, "AG/PSA", false, false));282 verbEnding, "AG/PSA", false, true)); 281 283 } 282 284 else … … 288 290 289 291 convert(results, features, "graphical_verbal_ending_utf8", 290 verbEnding, "AG/PSA", false, false);292 verbEnding, "AG/PSA", false, true); 291 293 } 292 294 293 295 convert(results, features, "graphical_pron_suffix_utf8", 294 suffixGloss, "PRON/DCA", true, true);296 suffixGloss, "PRON/DCA", true, false); 295 297 } 296 298 else if (psp.equals("noun") … … 307 309 false, false); 308 310 convert(results, features, "graphical_nominal_ending_utf8", 309 nounEnding, "N/GNS", false, false);311 nounEnding, "N/GNS", false, true); 310 312 convert(results, features, "graphical_pron_suffix_utf8", 311 suffixGloss, "N/POS", true, true);313 suffixGloss, "N/POS", true, false); 312 314 } 313 315 else if (psp.equals("none")) 314 316 { 315 317 // hack for LexemeTest 316 convert(results, features, "lexeme", "none", "none", true, true);318 convert(results, features, "lexeme", "none", "none", true, false); 317 319 } 318 320 else … … 382 384 boolean hasSuffix = !(suffixText.equals("")); 383 385 convert(results, features, "graphical_lexeme_utf8", type, type, 384 !hasSuffix, isGraphicalWordEnding && !hasSuffix);386 !hasSuffix, !isGraphicalWordEnding && !hasSuffix); 385 387 386 388 if (hasSuffix) 387 389 { 388 390 convert(results, features, "graphical_pron_suffix_utf8", 389 suffixGloss, type + "/SFX", true, isGraphicalWordEnding);391 suffixGloss, type + "/SFX", true, !isGraphicalWordEnding); 390 392 } 391 393 } lex/trunk/src/com/qwirx/lex/translit/DatabaseTransliterator.java
r354 r365 225 225 226 226 StringList features = word.getFeatureList(); 227 /* 227 228 for (StringListConstIterator i = features.const_iterator(); 228 229 i.hasNext();) … … 232 233 attributes.put("word_" + feature, value); 233 234 } 235 */ 234 236 235 237 return transliterate(morphemes, index, attributes); lex/trunk/test/com/qwirx/lex/ClauseControllerTest.java
r360 r365 8 8 import jemdros.Straw; 9 9 import jemdros.StrawConstIterator; 10 11 import org.aptivate.webutils.HtmlIterator; 10 12 11 13 import com.qwirx.lex.controller.ClauseController; … … 41 43 } 42 44 43 public void testWivuGloss () throws Exception45 public void testWivuGlossCell() throws Exception 44 46 { 45 47 ClauseController controller = new ClauseController(getEmdros(), … … 48 50 String gloss = controller.getWivuGloss(word); 49 51 assertEquals("hover", gloss); 52 53 Cell glossCell = controller.getWivuLexiconCell(word, true); 54 HtmlIterator i = new HtmlIterator(glossCell.html); 55 50 56 } 51 57 … … 73 79 List<Cell[]> columns = controller.getWordColumns(); 74 80 String [] firstRow = new String[]{ 75 "wáµ=", "Ã-", "Ã-", "dÄvaq-", "à -", "Ã", "", "báµ=", "ÊiÅ¡-", "t-", "ÃŽ"81 "wáµ=", "Ã-", "Ã-", "dÄvaq-", "Ã=", "Ã", "", "báµ=", "ÊiÅ¡-", "t=", "ÃŽ" 76 82 }; 77 83 String [] secondRow = new String[]{ … … 104 110 assertEquals("P", columns.get(13)[1].html); 105 111 assertEquals("love", columns.get(14)[1].html); 112 assertEquals("Äʰ=", columns.get(15)[0].html); 106 113 assertEquals("FsgAB", columns.get(15)[1].html); 107 114 assertEquals("CLT", columns.get(16)[1].html); lex/trunk/test/com/qwirx/lex/GenExporterTest.java
r359 r365 87 87 "\n" + 88 88 "\\morpheme \n" + 89 "\\trans à -\n" +90 "\\tag tag\n" + 91 "\\gloss 1u nknownsg\n" +89 "\\trans Ã=\n" + 90 "\\tag tag\n" + 91 "\\gloss 1usg\n" + 92 92 "\\lemma lemma\n" + 93 93 "\\re\n" + … … 115 115 "\n" + 116 116 "\\morpheme ÖŽÖ¥××\n" + 117 "\\trans îm -\n" +117 "\\trans îm=\n" + 118 118 "\\tag tag\n" + 119 119 "\\gloss MplAB\n" + … … 136 136 "\n" + 137 137 "\\morpheme ÖžÖœ×\n" + 138 "\\trans Äʰ -\n" +138 "\\trans Äʰ=\n" + 139 139 "\\tag tag\n" + 140 140 "\\gloss FsgAB\n" + lex/trunk/test/com/qwirx/lex/NavigatorTest.java
r360 r365 15 15 Navigator navigator = new Navigator(null, null, getEmdros(), 16 16 userTextAccessSet, new DatabaseTransliterator(getSql())); 17 /* 17 18 assertEquals("<select id=\"book\" name=\"book\" " + 18 19 "onChange=\"document.forms.nav.submit()\">\n" + … … 21 22 "<option value=\"228327\">Numbers</option>\n" + 22 23 "<option value=\"521677\">II_Samuel</option>\n" + 23 "</select>\n", 24 navigator.getObjectNavigator("book", "book")); 24 "</select>\n", 25 */ 26 // don't know what books should be available, but need to call 27 // this method to initialise the next step 28 navigator.getObjectNavigator("book", "book"); 25 29 assertEquals("<select id=\"chapter\" name=\"chapter\" " + 26 30 "onChange=\"document.forms.nav.submit()\">\n" + lex/trunk/test/com/qwirx/lex/TransliteratorTest.java
r364 r365 450 450 addRule("", KHET + PATAH, "$", SUBSCRIPT_A + H_DOT); 451 451 addRule("", PATAH, "", "a"); 452 453 // TODO is this correct? 454 // addRule("^", BET + DAGESH, "", "b-b"); // initial consonant doubled with dash 455 452 456 addRule(VOWEL + OPTIONAL_CANTILLATION, BET + DAGESH, "", "bb"); 453 457 addRule(NOT_VOWEL_BEFORE, BET + DAGESH, "", "b"); … … 455 459 addRule("", SHIN + DAGESH, "", S_CARON + S_CARON); 456 460 addRule("", SHIN, "", S_CARON); 461 462 // TODO should "d" be doubled at the start of the word? 463 // addRule("^", DALET + DAGESH, "", "d-d"); // initial consonant doubled with dash 464 457 465 addRule(VOWEL, DALET + DAGESH, "", "dd"); 458 466 // addRule(NOT_VOWEL_BEFORE, DALET + DAGESH, "", "d"); … … 465 473 "e" + SUPERSCRIPT_Y); 466 474 addRule("", SEGOL, "", "e"); 475 addRule("^", SIN + DAGESH, "", S_ACUTE + "-" + S_ACUTE); // initial consonant doubled with dash 467 476 addRule("", SIN + DAGESH, "", S_ACUTE + S_ACUTE); 468 477 addRule("", SIN, "", S_ACUTE); 478 479 // TODO should gg be doubled at the start of the word? 480 // addRule("^", GIMEL + DAGESH, "", "g-g"); // initial consonant doubled with dash 481 469 482 addRule(VOWEL, GIMEL + DAGESH, "", "gg"); 470 483 // addRule(NOT_VOWEL_BEFORE, GIMEL + DAGESH, "", "g"); … … 473 486 addRule("", HIRIQ + OPTIONAL_CANTILLATION + YOD, "", I_CARET); 474 487 addRule("", HIRIQ, "", "i"); 488 addRule("^", YOD + DAGESH, "", "y-y"); // initial consonant doubled with dash 475 489 addRule("", YOD + DAGESH, "", "yy"); 476 490 addRule("", YOD, "", "y"); 491 492 // TODO initial consonant doubled with dash? 493 // addRule("^", KAPH + DAGESH, "", "k-k"); 494 477 495 addRule(VOWEL + OPTIONAL_CANTILLATION, KAPH + DAGESH, "", "kk"); 478 496 addRule(NOT_VOWEL_BEFORE, KAPH + DAGESH, "", "k"); 479 497 addRule("", KAPH, "", "x"); 480 498 addRule("", FINAL_KAPH, "", "x"); 499 addRule("^", LAMED + DAGESH, "", "l-l"); // initial consonant doubled with dash 481 500 addRule("", LAMED + DAGESH, "", "ll"); 482 501 addRule("", LAMED, "", "l"); 502 addRule("^", MEM + DAGESH, "", "m-m"); // initial consonant doubled with dash 483 503 addRule("", MEM + DAGESH, "", "mm"); 484 504 addRule("", MEM, "", "m"); 485 505 addRule("", FINAL_MEM, "", "m"); 506 addRule("^", NUN + DAGESH, "", "n-n"); // initial consonant doubled with dash 486 507 addRule("", NUN + DAGESH, "", "nn"); 487 508 addRule("", NUN, "", "n"); … … 493 514 // addRule("", HOLAM + HE + DAGESH, "$", O_BAR + "h"); 494 515 addRule("", HOLAM, "", O_BAR); 516 517 // TODO is this correct? 518 // addRule("^", PE + DAGESH, "", "p-p"); // initial consonant doubled with dash 519 495 520 addRule(VOWEL + OPTIONAL_CANTILLATION, PE + DAGESH, "", "pp"); 496 521 addRule(NOT_VOWEL_BEFORE, PE + DAGESH, "", "p"); 497 522 addRule("", PE, "", "f"); 498 523 addRule("", FINAL_PE, "", "f"); 524 addRule("^", QOPH + DAGESH, "", "q-q"); // initial consonant doubled with dash 499 525 addRule("", QOPH + DAGESH, "", "qq"); 500 526 addRule("", QOPH, "", "q"); 501 527 addRule("", RESH, "", "r"); 528 addRule("^", SAMEK + DAGESH, "", "s-s"); // initial consonant doubled with dash 502 529 addRule("", SAMEK + DAGESH, "", "ss"); 503 530 addRule("", SAMEK, "", "s"); 531 532 // TODO is this correct? 533 // addRule("^", TAV + DAGESH, "", "t-t"); // initial consonant doubled with dash 534 504 535 addRule(VOWEL + OPTIONAL_CANTILLATION, TAV + DAGESH, "", "tt"); 505 536 addRule("", TAV, "", "t"); 506 537 addRule("", QIBBUTS, "", "u"); 538 addRule("^", TET + DAGESH, "", T_DOT + "-" + T_DOT); // initial consonant doubled with dash 507 539 addRule("", TET + DAGESH, "", T_DOT + T_DOT); 508 540 addRule("", TET, "", T_DOT); … … 510 542 addRule("", WAW, "", "w"); 511 543 addRule("", KHET, "", H_DOT); 544 addRule("^", TSADE + DAGESH, "", S_DOT + "-" + S_DOT); // initial consonant doubled with dash 512 545 addRule("", TSADE + DAGESH, "", S_DOT + S_DOT); 513 546 addRule("", TSADE, "", S_DOT); 514 547 addRule("", FINAL_TSADE, "", S_DOT); 548 addRule("^", ZAYIN + DAGESH, "", "z-z"); // initial consonant doubled with dash 515 549 addRule("", ZAYIN + DAGESH, "", "zz"); 516 550 addRule("", ZAYIN, "", "z"); … … 518 552 m_trans = new DatabaseTransliterator(m_sql); 519 553 } 520 521 554 522 555 public void testDatabaseTransliterator() throws Exception … … 524 557 addTest("\u05bf", ""); 525 558 addTest("\u05bc", ""); 526 addTest(ALEPH + SHEVA, HOOK_LEFT + SUPERSCRIPT_BACKWARDS_E); 527 addTest(ALEPH + DAGESH + SHEVA, HOOK_LEFT + SUPERSCRIPT_BACKWARDS_E); 528 addTest(ALEPH + DAGESH + SOF_PASUQ + SHEVA, HOOK_LEFT + ":" + SUPERSCRIPT_BACKWARDS_E); 529 addTest(SHEVA + ALEPH, SHEVA + HOOK_LEFT); 559 addTest(ALEPH + SHEVA, 560 HOOK_LEFT + SUPERSCRIPT_BACKWARDS_E); 561 addTest(ALEPH + DAGESH + SHEVA, 562 HOOK_LEFT + SUPERSCRIPT_BACKWARDS_E); 563 addTest(ALEPH + DAGESH + SOF_PASUQ + SHEVA, 564 HOOK_LEFT + ":" + SUPERSCRIPT_BACKWARDS_E); 565 addTest(SHEVA + ALEPH, 566 SHEVA + HOOK_LEFT); 530 567 addTest(SHEVA, ""); 531 568 addTest(ALEPH + ALEPH + SHEVA, HOOK_LEFT + HOOK_LEFT); 532 569 addTest(SHEVA + ALEPH, SHEVA + HOOK_LEFT); 533 addTest(ALEPH + SOF_PASUQ + SHEVA + ALEPH + SOF_PASUQ + 534 SHEVA, HOOK_LEFT + ":" + SUPERSCRIPT_BACKWARDS_E + HOOK_LEFT + ":"); 535 addTest(ALEPH + ALEPH + SOF_PASUQ + SHEVA + 536 ALEPH + SOF_PASUQ + SHEVA, HOOK_LEFT + HOOK_LEFT + ":" + HOOK_LEFT + ":"); 537 addTest(TSERE + ALEPH + SHEVA + ALEPH, E_BAR + SUPERSCRIPT_QUERY + SUPERSCRIPT_BACKWARDS_E + HOOK_LEFT); 538 addTest(QAMETS + SOF_PASUQ + ALEPH + SHEVA + ALEPH, A_BAR + ":" + SUPERSCRIPT_QUERY + SUPERSCRIPT_BACKWARDS_E + 570 addTest(ALEPH + SOF_PASUQ + SHEVA + ALEPH + SOF_PASUQ + SHEVA, 571 HOOK_LEFT + ":" + SUPERSCRIPT_BACKWARDS_E + HOOK_LEFT + ":"); 572 addTest(ALEPH + ALEPH + SOF_PASUQ + SHEVA + ALEPH + SOF_PASUQ + SHEVA, 573 HOOK_LEFT + HOOK_LEFT + ":" + HOOK_LEFT + ":"); 574 addTest(TSERE + ALEPH + SHEVA + ALEPH, 575 E_BAR + SUPERSCRIPT_QUERY + SUPERSCRIPT_BACKWARDS_E + HOOK_LEFT); 576 addTest(QAMETS + SOF_PASUQ + ALEPH + SHEVA + ALEPH, 577 A_BAR + ":" + SUPERSCRIPT_QUERY + SUPERSCRIPT_BACKWARDS_E + 539 578 HOOK_LEFT); 540 addTest(ALEPH + DAGESH + SHEVA + ALEPH, HOOK_LEFT + SUPERSCRIPT_BACKWARDS_E + HOOK_LEFT); 579 addTest(ALEPH + DAGESH + SHEVA + ALEPH, 580 HOOK_LEFT + SUPERSCRIPT_BACKWARDS_E + HOOK_LEFT); 541 581 542 582 assertFalse(sheva1.matches(ALEPH + ALEPH, SHEVA + ALEPH, ms_EmptyMap)); … … 651 691 addTest(PATAH + SOF_PASUQ + BET + DAGESH, "a:bb"); 652 692 addTest(ALEPH + SOF_PASUQ + BET + DAGESH, HOOK_LEFT + ":b"); 693 // TODO addTest(BET + DAGESH, "b-b"); // initial double consonants get a dash 653 694 addTest(ALEPH + BET, HOOK_LEFT + "v"); 654 695 … … 658 699 addTest(PATAH + DALET + DAGESH, "add"); 659 700 addTest(ALEPH + DALET + DAGESH, HOOK_LEFT + "d"); 701 // TODO addTest(DALET + DAGESH, "d-d"); // initial double consonants get a dash 660 702 addTest(DALET, "d"); 661 703 … … 665 707 addTest(SEGOL + ALEPH, "e" + SUPERSCRIPT_QUERY); 666 708 667 addTest(SIN + DAGESH, S_ACUTE + S_ACUTE); 709 addTest(SIN + DAGESH, S_ACUTE + "-" + S_ACUTE); // initial double consonants get a dash 710 addTest(ALEPH + SIN + DAGESH, HOOK_LEFT + S_ACUTE + S_ACUTE); 668 711 addTest(SIN, S_ACUTE); 669 712 addTest(PATAH + GIMEL + DAGESH, "agg"); … … 674 717 addTest(HIRIQ + YOD, I_CARET); 675 718 addTest(HIRIQ, "i"); 676 addTest(YOD + DAGESH, "yy"); 719 addTest(YOD + DAGESH, "y-y"); // initial double consonants get a dash 720 addTest(ALEPH + YOD + DAGESH, HOOK_LEFT + "yy"); 677 721 addTest(YOD, "y"); 678 722 addTest(PATAH + SOF_PASUQ + KAPH + DAGESH, "a:kk"); 723 724 // TODO why is Kaph Dagesh not doubled to kk? 679 725 addTest(ALEPH + KAPH + DAGESH, HOOK_LEFT + "k"); 726 // TODO and therefore k-k at the start? 680 727 addTest(KAPH + DAGESH, "k"); 728 681 729 addTest(ALEPH + KAPH, HOOK_LEFT + "x"); 682 730 addTest(ALEPH + FINAL_KAPH, HOOK_LEFT + "x"); 683 addTest(LAMED + DAGESH, "ll"); 731 addTest(LAMED + DAGESH, "l-l"); // initial double consonants get a dash 732 addTest(ALEPH + LAMED + DAGESH, HOOK_LEFT + "ll"); 684 733 addTest(LAMED, "l"); 685 addTest(MEM + DAGESH, "mm"); 734 addTest(MEM + DAGESH, "m-m"); // initial double consonants get a dash 735 addTest(ALEPH + MEM + DAGESH, HOOK_LEFT + "mm"); 686 736 addTest(MEM, "m"); 687 737 addTest(FINAL_MEM, "m"); 688 addTest(NUN + DAGESH, "nn"); 738 addTest(NUN + DAGESH, "n-n"); // initial double consonants get a dash 739 addTest(ALEPH + NUN + DAGESH, HOOK_LEFT + "nn"); 689 740 addTest(NUN, "n"); 690 741 addTest(FINAL_NUN, "n"); … … 699 750 addTest(ALEPH + PE, HOOK_LEFT + "f"); 700 751 addTest(ALEPH + FINAL_PE, HOOK_LEFT + "f"); 701 addTest(QOPH + DAGESH, "qq"); 752 addTest(QOPH + DAGESH, "q-q"); // initial double consonants get a dash 753 addTest(ALEPH + QOPH + DAGESH, HOOK_LEFT + "qq"); 702 754 addTest(QOPH, "q"); 703 755 addTest(RESH, "r"); 704 addTest(SAMEK + DAGESH, "ss"); 756 addTest(SAMEK + DAGESH, "s-s"); // initial double consonants get a dash 757 addTest(ALEPH + SAMEK + DAGESH, HOOK_LEFT + "ss"); 705 758 addTest(SAMEK, "s"); 706 759 addTest(PATAH + SOF_PASUQ + TAV + DAGESH, "a:tt"); … … 708 761 addTest(TAV, "t"); 709 762 addTest(QIBBUTS, "u"); 710 addTest(TET + DAGESH, T_DOT + T_DOT); 763 addTest(TET + DAGESH, T_DOT + "-" + T_DOT); // initial double consonants get a dash 764 addTest(ALEPH + TET + DAGESH, HOOK_LEFT + T_DOT + T_DOT); 711 765 addTest(TET, T_DOT); 712 766 addTest(WAW + DAGESH, U_CARET); 713 767 addTest(WAW, "w"); 714 768 addTest(KHET, H_DOT); 715 addTest(TSADE + DAGESH, S_DOT + S_DOT); 769 addTest(TSADE + DAGESH, S_DOT + "-" + S_DOT); // initial double consonants get a dash 770 addTest(ALEPH + TSADE + DAGESH, HOOK_LEFT + S_DOT + S_DOT); 716 771 addTest(TSADE, S_DOT); 717 772 addTest(FINAL_TSADE, S_DOT); 718 addTest(ZAYIN + DAGESH, "zz"); 773 addTest(ZAYIN + DAGESH, "z-z"); // initial double consonants get a dash 774 addTest(ALEPH + ZAYIN + DAGESH, HOOK_LEFT + "zz"); 719 775 addTest(ZAYIN, "z"); 720 776 … … 744 800 morphs.add(new Morpheme("ֹת֞Ö×", "FplCS", "N/GNS", true, true)); 745 801 morphs.add(new Morpheme("×", "3Msg", "N/POS", true, true)); 746 assertEquals("á¹£ á¹£alÊ", m_trans.transliterate(morphs, 0, ms_EmptyMap));802 assertEquals("á¹£-á¹£alÊ", m_trans.transliterate(morphs, 0, ms_EmptyMap)); 747 803 assertEquals("ÅtÄÊž", m_trans.transliterate(morphs, 1, ms_EmptyMap)); 748 804 assertEquals("w", m_trans.transliterate(morphs, 2, ms_EmptyMap)); … … 970 1026 } 971 1027 } 1028 972 1029 public static void main(String[] args) 973 1030 {
