| Index: abp2blocklist.js | 
| =================================================================== | 
| --- a/abp2blocklist.js | 
| +++ b/abp2blocklist.js | 
| @@ -17,33 +17,34 @@ | 
|  | 
| "use strict"; | 
|  | 
| let readline = require("readline"); | 
| let Filter = require("filterClasses").Filter; | 
| let ContentBlockerList = require("./lib/abp2blocklist.js").ContentBlockerList; | 
|  | 
| var rl = readline.createInterface({input: process.stdin, terminal: false}); | 
| -var blockerList = new ContentBlockerList(); | 
| +var blockerList = new ContentBlockerList({merge: "all"}); | 
|  | 
| rl.on("line", line => | 
| { | 
| if (/^\s*[^\[\s]/.test(line)) | 
| blockerList.addFilter(Filter.fromText(Filter.normalize(line))); | 
| }); | 
|  | 
| rl.on("close", () => | 
| { | 
| -  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) | 
| +  blockerList.generateRules().then(rules => | 
| { | 
| -    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("]"); | 
| +    // 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("]"); | 
| +  }); | 
| }); | 
|  |