UNPKG

1.11 kBJavaScriptView Raw
1"use strict";
2
3var SEPARATORS = require("./separators");
4
5function parseTrie(input) {
6 var map = new Map();
7 var parentMaps = [map];
8 var domain = "";
9
10 function setDomain(value) {
11 if (domain === "") {
12 return;
13 }
14
15 map.set(domain, value);
16 domain = "";
17 }
18
19 for (var i = 0; i < input.length; i++) {
20 var _char = input.charAt(i);
21
22 switch (_char) {
23 case SEPARATORS.SAME:
24 {
25 setDomain(true);
26 continue;
27 }
28
29 case SEPARATORS.DOWN:
30 {
31 var childMap = new Map();
32 setDomain(childMap);
33 parentMaps.push(map);
34 map = childMap;
35 continue;
36 }
37
38 case SEPARATORS.RESET:
39 {
40 setDomain(true); // Remove all parent maps but the top most
41
42 parentMaps.length = 1;
43 map = parentMaps[0];
44 continue;
45 }
46
47 case SEPARATORS.UP:
48 {
49 setDomain(true);
50 map = parentMaps.pop();
51 continue;
52 }
53 }
54
55 domain += _char;
56 }
57
58 setDomain(true);
59 return parentMaps[0];
60}
61
62module.exports = parseTrie;
\No newline at end of file