.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) {
"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",
--- /dev/null
+
+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);
+});
+