| Index: lib/filterStorage.js |
| =================================================================== |
| --- a/lib/filterStorage.js |
| +++ b/lib/filterStorage.js |
| @@ -23,16 +23,17 @@ |
| */ |
| const {IO} = require("io"); |
| const {Prefs} = require("prefs"); |
| const {Filter, ActiveFilter} = require("./filterClasses"); |
| const {Subscription, SpecialSubscription, |
| ExternalSubscription} = require("./subscriptionClasses"); |
| const {FilterNotifier} = require("./filterNotifier"); |
| +const {INIParser} = require("./iniParser"); |
| /** |
| * Version number of the filter storage file format. |
| * @type {number} |
| */ |
| let formatVersion = 5; |
| /** |
| @@ -675,106 +676,8 @@ |
| function removeSubscriptionFilters(subscription) |
| { |
| if (!FilterStorage.knownSubscriptions.has(subscription.url)) |
| return; |
| for (let filter of subscription.filters) |
| filter.subscriptions.delete(subscription); |
| } |
| - |
| -/** |
| - * Listener returned by FilterStorage.importData(), parses filter data. |
| - * @constructor |
| - */ |
| -function INIParser() |
| -{ |
| - this.fileProperties = this.curObj = {}; |
| - this.subscriptions = []; |
| - this.knownFilters = new Map(); |
| - this.knownSubscriptions = new Map(); |
| -} |
| -INIParser.prototype = |
| -{ |
| - linesProcessed: 0, |
| - subscriptions: null, |
| - knownFilters: null, |
| - knownSubscriptions: null, |
| - wantObj: true, |
| - fileProperties: null, |
| - curObj: null, |
| - curSection: null, |
| - |
| - process(val) |
| - { |
| - let origKnownFilters = Filter.knownFilters; |
| - Filter.knownFilters = this.knownFilters; |
| - let origKnownSubscriptions = Subscription.knownSubscriptions; |
| - Subscription.knownSubscriptions = this.knownSubscriptions; |
| - let match; |
| - try |
| - { |
| - if (this.wantObj === true && (match = /^(\w+)=(.*)$/.exec(val))) |
| - this.curObj[match[1]] = match[2]; |
| - else if (val === null || (match = /^\s*\[(.+)\]\s*$/.exec(val))) |
| - { |
| - if (this.curObj) |
| - { |
| - // Process current object before going to next section |
| - switch (this.curSection) |
| - { |
| - case "filter": |
| - if ("text" in this.curObj) |
| - Filter.fromObject(this.curObj); |
| - break; |
| - case "subscription": { |
| - let subscription = Subscription.fromObject(this.curObj); |
| - if (subscription) |
| - this.subscriptions.push(subscription); |
| - break; |
| - } |
| - case "subscription filters": |
| - if (this.subscriptions.length) |
| - { |
| - let subscription = this.subscriptions[ |
| - this.subscriptions.length - 1 |
| - ]; |
| - for (let text of this.curObj) |
| - { |
| - let filter = Filter.fromText(text); |
| - subscription.filters.push(filter); |
| - filter.subscriptions.add(subscription); |
| - } |
| - } |
| - break; |
| - } |
| - } |
| - |
| - if (val === null) |
| - return; |
| - |
| - this.curSection = match[1].toLowerCase(); |
| - switch (this.curSection) |
| - { |
| - case "filter": |
| - case "subscription": |
| - this.wantObj = true; |
| - this.curObj = {}; |
| - break; |
| - case "subscription filters": |
| - this.wantObj = false; |
| - this.curObj = []; |
| - break; |
| - default: |
| - this.wantObj = null; |
| - this.curObj = null; |
| - } |
| - } |
| - else if (this.wantObj === false && val) |
| - this.curObj.push(val.replace(/\\\[/g, "[")); |
| - } |
| - finally |
| - { |
| - Filter.knownFilters = origKnownFilters; |
| - Subscription.knownSubscriptions = origKnownSubscriptions; |
| - } |
| - } |
| -}; |