UNPKG

1.2 kBJavaScriptView Raw
1"use strict";
2
3var matchNewLine = /\r?\n/;
4var matchComments = /^\s*\/\//;
5var matchWhitespace = /^\s*$/;
6var 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
20function isWanted(line) {
21 return matchComments.test(line) === false && matchWhitespace.test(line) === false;
22}
23
24function 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
47module.exports = parsePubSuffixList;
\No newline at end of file