Support for the FreeMonoTengwar font and ConScript encoding
[tengwarjs.git] / trie.js
1
2 module.exports = makeTrie;
3 function makeTrie(table) {
4 var strings = Object.keys(table);
5 var trie = {value: void 0, children: {}};
6 var tables = {};
7 strings.forEach(function (string) {
8 if (string.length === 0) {
9 trie.value = table[string];
10 } else {
11 var character = string[0];
12 if (!tables[character]) {
13 tables[character] = {};
14 }
15 var tail = string.slice(1);
16 tables[character][tail] = table[string];
17 }
18 });
19 var characters = Object.keys(tables);
20 characters.forEach(function (character) {
21 trie.children[character] = makeTrie(tables[character]);
22 });
23 return trie;
24 }
25