Skip to content

Commit 03712fd

Browse files
authored
Merge pull request #16 from stscoundrel/feature/younger-futhark-short-and-long-twigs
Younger Futhark: add long branch & short twig variants
2 parents 3d14fc1 + 79c4738 commit 03712fd

File tree

2 files changed

+88
-10
lines changed

2 files changed

+88
-10
lines changed

src/main/java/com/github/stscoundrel/riimut/dialects/YoungerFuthark.java

Lines changed: 56 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import com.github.stscoundrel.riimut.Transform;
66

77
public class YoungerFuthark implements Dialect {
8-
static final HashMap<String, String> LETTERS_TO_RUNES = new HashMap<String, String>() {
8+
static final HashMap<String, String> LETTERS_TO_LONG_BRANCH_RUNES = new HashMap<String, String>() {
99
{
1010
put("a", "ᛅ");
1111
put("á", "ᛅ");
@@ -51,6 +51,52 @@ public class YoungerFuthark implements Dialect {
5151
}
5252
};
5353

54+
static final HashMap<String, String> LETTERS_TO_SHORT_TWIG_RUNES = new HashMap<String, String>() {
55+
{
56+
put("a", "ᛆ");
57+
put("á", "ᛆ");
58+
put("b", "ᛒ");
59+
put("c", "ᛌ");
60+
put("d", "ᛐ");
61+
put("ð", "ᚦ");
62+
put("e", "ᛁ");
63+
put("é", "ᛁ");
64+
put("f", "ᚠ");
65+
put("g", "ᚴ");
66+
put("h", "ᚽ");
67+
put("i", "ᛁ");
68+
put("í", "ᛁ");
69+
put("j", "ᛁ");
70+
put("k", "ᚴ");
71+
put("l", "ᛚ");
72+
put("m", "ᛘ");
73+
put("n", "ᚿ");
74+
put("o", "ᚢ");
75+
put("ó", "ᚢ");
76+
put("p", "ᛒ");
77+
put("q", "ᚴ");
78+
put("r", "ᚱ");
79+
put("s", "ᛌ");
80+
put("t", "ᛐ");
81+
put("þ", "ᚦ");
82+
put("u", "ᚢ");
83+
put("ú", "ᚢ");
84+
put("v", "ᚢ");
85+
put("w", "ᚢ");
86+
put("x", "ᛌ");
87+
put("y", "ᚢ");
88+
put("ý", "ᚢ");
89+
put("z", "ᛌ");
90+
put("å", "ᚢ");
91+
put("ä", "ᛆ");
92+
put("æ", "ᛆ");
93+
put("ö", "ᚢ");
94+
put("ø", "ᚢ");
95+
put("ǫ", "ᚢ");
96+
put(" ", ":");
97+
}
98+
};
99+
54100
static final HashMap<String, String> RUNES_TO_LETTERS = new HashMap<String, String>() {
55101
{
56102
put("ᚠ", "f");
@@ -78,8 +124,16 @@ public class YoungerFuthark implements Dialect {
78124
}
79125
};
80126

127+
public String lettersToLongBranchRunes(String content) {
128+
return Transform.withDictionary(content, LETTERS_TO_LONG_BRANCH_RUNES);
129+
}
130+
131+
public String lettersToShortTwigRunes(String content) {
132+
return Transform.withDictionary(content, LETTERS_TO_SHORT_TWIG_RUNES);
133+
}
134+
81135
public String lettersToRunes(String content) {
82-
return Transform.withDictionary(content, LETTERS_TO_RUNES);
136+
return Transform.withDictionary(content, LETTERS_TO_LONG_BRANCH_RUNES);
83137
}
84138

85139
public String runesToLetters(String content) {

src/test/java/com/github/stscoundrel/riimut/dialects/YoungerFutharkTest.java

Lines changed: 32 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,32 +3,56 @@
33
import junit.framework.TestCase;
44

55
public class YoungerFutharkTest extends TestCase {
6-
public void testTransformsLettersToRunes() {
6+
public void testTransformDefaultsToLongBranch() {
77
String letters = "aábcdðeéfghiíjklmnoópqrstþuúvwxyýzåäæöøǫþ";
88
String runes = "ᛅᛅᛒᛋᛏᚦᛁᛁᚠᚴᚼᛁᛁᛁᚴᛚᛘᚾᚢᚢᛒᚴᚱᛋᛏᚦᚢᚢᚢᚢᛋᚢᚢᛋᚢᛅᛅᚢᚢᚢᚦ";
99

10-
Dialect youngerFuthark = new YoungerFuthark();
10+
YoungerFuthark youngerFuthark = new YoungerFuthark();
1111
String result = youngerFuthark.lettersToRunes(letters);
1212

1313
assertEquals(runes, result);
1414
}
1515

16+
public void testTransformsLettersToLongBranchRunes() {
17+
String letters = "aábcdðeéfghiíjklmnoópqrstþuúvwxyýzåäæöøǫþ";
18+
String runes = "ᛅᛅᛒᛋᛏᚦᛁᛁᚠᚴᚼᛁᛁᛁᚴᛚᛘᚾᚢᚢᛒᚴᚱᛋᛏᚦᚢᚢᚢᚢᛋᚢᚢᛋᚢᛅᛅᚢᚢᚢᚦ";
19+
20+
YoungerFuthark youngerFuthark = new YoungerFuthark();
21+
String result = youngerFuthark.lettersToLongBranchRunes(letters);
22+
23+
assertEquals(runes, result);
24+
}
25+
26+
public void testTransformsLettersToShortTwigRunes() {
27+
String letters = "aábcdðeéfghiíjklmnoópqrstþuúvwxyýzåäæöøǫþ";
28+
String runes = "ᛆᛆᛒᛌᛐᚦᛁᛁᚠᚴᚽᛁᛁᛁᚴᛚᛘᚿᚢᚢᛒᚴᚱᛌᛐᚦᚢᚢᚢᚢᛌᚢᚢᛌᚢᛆᛆᚢᚢᚢᚦ";
29+
30+
YoungerFuthark youngerFuthark = new YoungerFuthark();
31+
String result = youngerFuthark.lettersToShortTwigRunes(letters);
32+
33+
assertEquals(runes, result);
34+
}
35+
1636
public void testTransformsRunesToLetters() {
17-
String runes = "ᚠᚢᚦᚬᚱᚴᚼᚽᚾᚿᛁᛅᛆᛋᛌᛏᛐᛒᛘᛚᛦ:";
37+
// Both long branch & short twig should produce same letters.
38+
String longBranchRunes = "ᚠᚢᚦᚬᚱᚴᚼᚽᚾᚿᛁᛅᛆᛋᛌᛏᛐᛒᛘᛚᛦ:";
39+
String shortTwigRunes = "ᚠᚢᚦᚬᚱᚴᚽᚽᚿᚿᛁᛆᛆᛌᛌᛐᛐᛒᛘᛚᛦ:";
1840
String letters = "fuþorkhhnniaassttbmlR ";
1941

20-
Dialect youngerFuthark = new YoungerFuthark();
21-
String result = youngerFuthark.runesToLetters(runes);
42+
YoungerFuthark youngerFuthark = new YoungerFuthark();
43+
String result1 = youngerFuthark.runesToLetters(longBranchRunes);
44+
String result2 = youngerFuthark.runesToLetters(shortTwigRunes);
2245

23-
assertEquals(letters, result);
46+
assertEquals(letters, result1);
47+
assertEquals(letters, result2);
2448
}
2549

2650
public void testTransformsTextContentToRunes() {
2751
// From Old Groms runestone.
2852
String letters = "auk tani karþi kristna";
2953
String runes = "ᛅᚢᚴ:ᛏᛅᚾᛁ:ᚴᛅᚱᚦᛁ:ᚴᚱᛁᛋᛏᚾᛅ";
3054

31-
Dialect youngerFuthark = new YoungerFuthark();
55+
YoungerFuthark youngerFuthark = new YoungerFuthark();
3256
String result = youngerFuthark.lettersToRunes(letters);
3357

3458
assertEquals(runes, result);
@@ -39,7 +63,7 @@ public void testTransformsRunesToTextContent() {
3963
String runes = "ᛅᚢᚴ:ᛏᛅᚾᛁ:ᚴᛅᚱᚦᛁ:ᚴᚱᛁᛋᛏᚾᛅ";
4064
String letters = "auk tani karþi kristna";
4165

42-
Dialect youngerFuthark = new YoungerFuthark();
66+
YoungerFuthark youngerFuthark = new YoungerFuthark();
4367
String result = youngerFuthark.runesToLetters(runes);
4468

4569
assertEquals(letters, result);

0 commit comments

Comments
 (0)