2 var Alphabet
= require("./alphabet");
3 var Bindings
= require("./dan-smith");
4 var makeFontColumn
= require("./column");
6 var tengwar
= exports
.tengwar
= Bindings
.tengwar
;
7 var tehtar
= exports
.tehtar
= Bindings
.tehtar
;
9 var positions
= exports
.positions
= {
208 "hwesta-sindarinwa": {
295 exports
.transcribe
= transcribe
;
296 function transcribe(sections
, options
) {
297 options
= options
|| {};
298 var plain
= options
.plain
|| false;
299 var block
= options
.block
|| false;
300 var beginParagraph
= block
? "<p>" : "";
301 var delimitParagraph
= block
? "<br>" : "";
302 var endParagraph
= block
? "</p>" : "";
303 return sections
.map(function (section
) {
304 return section
.map(function (paragraph
) {
305 return beginParagraph
+ paragraph
.map(function (line
) {
306 return line
.map(function (word
) {
307 return word
.map(function (column
) {
308 var tengwa
= column
.tengwa
|| "anna";
310 if (column
.above
) tehtar
.push(column
.above
);
311 if (column
.below
) tehtar
.push(column
.below
);
312 if (column
.tildeBelow
) tehtar
.push("tilde-below");
313 if (column
.tildeAbove
) tehtar
.push("tilde-above");
314 if (column
.following
) tehtar
.push(column
.following
);
315 var html
= tengwar
[tengwa
] + tehtar
.map(function (tehta
) {
316 return tehtaForTengwa(tengwa
, tehta
);
318 if (column
.errors
&& !plain
) {
319 html
= "<abbr class=\"error\" title=\"" + column
.errors
.join("\n").replace(/"/g, """) + "\">" + html
+ "</abbr>";
324 }).join(delimitParagraph
+ "\n") + endParagraph
;
329 exports
.tehtaForTengwa
= tehtaForTengwa
;
330 function tehtaForTengwa(tengwa
, tehta
) {
331 var tehtaKey
= tehtaKeyForTengwa(tengwa
, tehta
);
332 if (tehtaKey
== null)
335 tehtar
[tehta
][tengwa
] ||
336 tehtar
[tehta
][tehtaKey
] ||
341 var longVowels
= "áéóú";
342 function tehtaKeyForTengwa(tengwa
, tehta
) {
345 if (longVowels
.indexOf(tehta
) !== -1)
347 if (tehtar
[tehta
].special
)
348 return tehtar
[tehta
][tengwa
] || null;
349 if (Alphabet
.barsAndTildes
.indexOf(tehta
) !== -1) {
350 if (tengwa
=== "lambe" || tengwa
=== "alda" && tehtar
[tehta
].length
>= 2)
352 return positions
[tengwa
].wide
? 0 : 1;
354 if (positions
[tengwa
] == null)
356 if (positions
[tengwa
][tehta
] === null)
358 if (positions
[tengwa
][tehta
] != null)
359 return positions
[tengwa
][tehta
];
360 if (positions
[tengwa
].others
!= null)
361 return positions
[tengwa
].others
;
362 return positions
[tengwa
];
365 exports
.makeColumn
= makeColumn
;
366 function makeColumn(tengwa
) {
367 return makeFontColumn(exports
, tengwa
);