parse-domain
Version:
Splits an url into sub-domain, domain and effective top-level-domain
47 lines (40 loc) • 1.2 kB
JavaScript
;
var matchNewLine = /\r?\n/;
var matchComments = /^\s*\/\//;
var matchWhitespace = /^\s*$/;
var lists = [{
name: "icann",
markers: {
start: "// ===BEGIN ICANN DOMAINS===",
end: "// ===END ICANN DOMAINS==="
}
}, {
name: "private",
markers: {
start: "// ===BEGIN PRIVATE DOMAINS===",
end: "// ===END PRIVATE DOMAINS==="
}
}];
function isWanted(line) {
return matchComments.test(line) === false && matchWhitespace.test(line) === false;
}
function parsePubSuffixList(listContent) {
return lists.map(function (list) {
var start = listContent.indexOf(list.markers.start);
var end = listContent.indexOf(list.markers.end);
if (start === -1) {
throw new Error("Missing start marker of ".concat(list.name, " list"));
}
if (end === -1) {
throw new Error("Missing end marker of ".concat(list.name, " list"));
}
return listContent.slice(start, end);
}).map(function (listContent) {
return listContent.split(matchNewLine).filter(isWanted);
}).reduce(function (result, lines, i) {
var listName = lists[i].name;
result[listName] = lines;
return result;
}, {});
}
module.exports = parsePubSuffixList;