Special treatment for annotations of doubled vowels in English
authorKris Kowal <kris.kowal@cixar.com>
Sun, 12 Apr 2015 17:08:17 +0000 (10:08 -0700)
committerKris Kowal <kris.kowal@cixar.com>
Sun, 12 Apr 2015 17:08:17 +0000 (10:08 -0700)
general-use.js
test/general-use.js
test/notes-test.js [new file with mode: 0644]

index 5bf0fbc..5bb8eb9 100644 (file)
@@ -306,6 +306,14 @@ function parseColumn(callback, length, options, previous) {
                             .addAbove(tehta, {from: tehtaFrom})
                             .addBelow("s", {from: "s"})
                         ]);
+                    } else if (options.language === "english" && shorterVowels[tehta]) {
+                        // doubled vowels are composed from individual letters,
+                        // not long forms.
+                        return callback([
+                            makeColumn("long-carrier", {from: shorterVowels[tehta]})
+                                .addAbove(shorterVowels[tehta], {from: shorterVowels[tehta]}),
+                            column
+                        ]);
                     } else if (canAddAboveTengwa(tehta) && column.canAddAbove(tehta)) {
                         column.addAbove(tehta, {from: tehtaFrom});
                         return parseTengwaAnnotations(function (column) {
index 38d59fd..ab00f3f 100644 (file)
@@ -36,6 +36,7 @@ module.exports = {
         "cake": "quesse;quesse:a,i-below",
         "cakes": "quesse;quesse:a;silme-nuquerna:e",
         "cats.": "quesse;tinco:a,s-final;full-stop", // regression
+        "green": "ungwe;romen;long-carrier:e;numen",
         "hobbits": "hyarmen;umbar:o,tilde-below;tinco:i,s-final",
         "hobbits'": "hyarmen;umbar:o,tilde-below;tinco:i,s-inverse",
         "hobbits''": "hyarmen;umbar:o,tilde-below;tinco:i,s-extended",
diff --git a/test/notes-test.js b/test/notes-test.js
new file mode 100644 (file)
index 0000000..3fe2421
--- /dev/null
@@ -0,0 +1,39 @@
+
+var GeneralUse = require("../general-use");
+
+it("should render green in english with as from two Es", function () {
+    var actual = GeneralUse.parse("green", {
+        language: "english"
+    })[0][0][0][0].map(function (column) {
+        return {
+            tengwa: column.tengwaNote ? column.tengwaNote.from : "",
+            above: column.aboveNote ? column.aboveNote.from : ""
+        }
+    })
+    var expected = [
+        {tengwa: "g", above: ""},
+        {tengwa: "r", above: ""},
+        {tengwa: "e", above: "e"},
+        {tengwa: "n", above: ""}
+    ];
+    expect(actual).toEqual(expected);
+});
+
+it("should render green in Sindarin with a long E", function () {
+    var actual = GeneralUse.parse("green", {
+        language: "sindarin"
+    })[0][0][0][0].map(function (column) {
+        return {
+            tengwa: column.tengwaNote ? column.tengwaNote.from : "",
+            above: column.aboveNote ? column.aboveNote.from : ""
+        }
+    })
+    var expected = [
+        {tengwa: "g", above: ""},
+        {tengwa: "r", above: ""},
+        {tengwa: "é", above: ""},
+        {tengwa: "n", above: ""}
+    ];
+    expect(actual).toEqual(expected);
+});
+