Index: abp2blocklist.js |
=================================================================== |
--- a/abp2blocklist.js |
+++ b/abp2blocklist.js |
@@ -27,10 +27,23 @@ |
rl.on("line", line => |
{ |
if (/^\s*[^\[\s]/.test(line)) |
blockerList.addFilter(Filter.fromText(Filter.normalize(line))); |
}); |
rl.on("close", () => |
{ |
- console.log(JSON.stringify(blockerList.generateRules(), null, "\t")); |
+ let rules = blockerList.generateRules(); |
+ |
+ // If the rule set is too huge, JSON.stringify throws |
+ // "RangeError: Invalid string length" on Node.js. As a workaround, print |
+ // each rule individually. |
+ console.log("["); |
+ if (rules.length > 0) |
+ { |
+ let stringifyRule = rule => JSON.stringify(rule, null, "\t"); |
+ for (let i = 0; i < rules.length - 1; i++) |
+ console.log(stringifyRule(rules[i]) + ","); |
+ console.log(stringifyRule(rules[rules.length - 1])); |
+ } |
+ console.log("]"); |
}); |