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; |