| Index: lib/subscriptionClasses.js |
| =================================================================== |
| --- a/lib/subscriptionClasses.js |
| +++ b/lib/subscriptionClasses.js |
| @@ -12,15 +12,45 @@ |
| * GNU General Public License for more details. |
| * |
| * You should have received a copy of the GNU General Public License |
| * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. |
| */ |
| "use strict"; |
| -const compiled = require("compiled"); |
| -for (let cls of [ |
| - "Subscription", "SpecialSubscription", "DownloadableSubscription" |
| -]) |
| -{ |
| - exports[cls] = compiled[cls]; |
| -} |
| +const {Subscription, SpecialSubscription, DownloadableSubscription} = |
| + require("compiled"); |
| + |
| +/** |
| + * This property allows iterating over the list of filters. It will delete |
| + * references automatically at the end of the current loop iteration. If you |
| + * need persistent references or element access by position you should use |
| + * Subscription.filterAt() instead. |
| + * @type {Iterable} |
| + */ |
| +Object.defineProperty(Subscription.prototype, "filters", { |
| + enumerable: true, |
| + get() |
| + { |
| + return { |
| + [Symbol.iterator]: function*() |
| + { |
| + for (let i = 0, l = this.filterCount; i < l; i++) |
| + { |
| + let filter = this.filterAt(i); |
| + try |
| + { |
| + yield filter; |
| + } |
| + finally |
| + { |
| + filter.delete(); |
| + } |
| + } |
| + }.bind(this) |
| + }; |
| + } |
| +}); |
| + |
| +exports.Subscription = Subscription; |
| +exports.SpecialSubscription = SpecialSubscription; |
| +exports.DownloadableSubscription = DownloadableSubscription; |