1 | "use strict";
|
2 |
|
3 | var matchNewLine = /\r?\n/;
|
4 | var matchComments = /^\s*\/\//;
|
5 | var matchWhitespace = /^\s*$/;
|
6 | var lists = [{
|
7 | name: "icann",
|
8 | markers: {
|
9 | start: "// ===BEGIN ICANN DOMAINS===",
|
10 | end: "// ===END ICANN DOMAINS==="
|
11 | }
|
12 | }, {
|
13 | name: "private",
|
14 | markers: {
|
15 | start: "// ===BEGIN PRIVATE DOMAINS===",
|
16 | end: "// ===END PRIVATE DOMAINS==="
|
17 | }
|
18 | }];
|
19 |
|
20 | function isWanted(line) {
|
21 | return matchComments.test(line) === false && matchWhitespace.test(line) === false;
|
22 | }
|
23 |
|
24 | function parsePubSuffixList(listContent) {
|
25 | return lists.map(function (list) {
|
26 | var start = listContent.indexOf(list.markers.start);
|
27 | var end = listContent.indexOf(list.markers.end);
|
28 |
|
29 | if (start === -1) {
|
30 | throw new Error("Missing start marker of ".concat(list.name, " list"));
|
31 | }
|
32 |
|
33 | if (end === -1) {
|
34 | throw new Error("Missing end marker of ".concat(list.name, " list"));
|
35 | }
|
36 |
|
37 | return listContent.slice(start, end);
|
38 | }).map(function (listContent) {
|
39 | return listContent.split(matchNewLine).filter(isWanted);
|
40 | }).reduce(function (result, lines, i) {
|
41 | var listName = lists[i].name;
|
42 | result[listName] = lines;
|
43 | return result;
|
44 | }, {});
|
45 | }
|
46 |
|
47 | module.exports = parsePubSuffixList; |
\ | No newline at end of file |