| Index: lib/subscriptionClasses.js |
| =================================================================== |
| --- a/lib/subscriptionClasses.js |
| +++ b/lib/subscriptionClasses.js |
| @@ -122,43 +122,44 @@ |
| filterNotifier.emit("subscription.disabled", this, value, oldValue); |
| } |
| return this._disabled; |
| }, |
| /** |
| * Serializes the subscription to an array of strings for writing |
|
Manish Jethani
2018/10/21 21:51:43
We could remove the "to an array of strings" part
Jon Sonesen
2018/10/22 19:27:47
Acknowledged.
|
| * out on the disk. |
| - * @param {string[]} buffer buffer to push the serialization results into |
| + * @yields {string} |
| */ |
| - serialize(buffer) |
| + *serialize() |
| { |
| - buffer.push("[Subscription]"); |
| - buffer.push("url=" + this.url); |
| - if (this.type) |
| - buffer.push("type=" + this.type); |
| - if (this._title) |
| - buffer.push("title=" + this._title); |
| - if (this._fixedTitle) |
| - buffer.push("fixedTitle=true"); |
| - if (this._disabled) |
| - buffer.push("disabled=true"); |
| + let {url, type, _title, _fixedTitle, _disabled} = this; |
| + |
| + yield "[Subscription]"; |
| + yield "url=" + url; |
| + |
| + if (type) |
| + yield "type=" + type; |
| + if (_title) |
| + yield "title=" + _title; |
| + if (_fixedTitle) |
| + yield "fixedTitle=true"; |
| + if (_disabled) |
| + yield "disabled=true"; |
| }, |
| - serializeFilters(buffer) |
| + *serializeFilters() |
| { |
| for (let filter of this.filters) |
|
Jon Sonesen
2018/10/22 19:32:40
I noticed this method goes against our pattern els
Manish Jethani
2018/10/22 20:18:01
Just for the sake of consistency, I wouldn't mind
Jon Sonesen
2018/10/23 02:04:24
Done.
|
| - buffer.push(filter.text.replace(/\[/g, "\\[")); |
| + yield filter.text.replace(/\[/g, "\\["); |
| }, |
| toString() |
| { |
| - let buffer = []; |
| - this.serialize(buffer); |
| - return buffer.join("\n"); |
| + return [...this.serialize()].join("\n"); |
| } |
| }; |
| /** |
| * Cache for known filter subscriptions, maps URL to subscription objects. |
| * @type {Map.<string,Subscription>} |
| */ |
| Subscription.knownSubscriptions = new Map(); |
| @@ -276,29 +277,31 @@ |
| return false; |
| }, |
| /** |
| * See Subscription.serialize() |
| * @inheritdoc |
| */ |
| - serialize(buffer) |
| + *serialize() |
| { |
| - Subscription.prototype.serialize.call(this, buffer); |
| - if (this.defaults && this.defaults.length) |
| + let {defaults, _lastDownload} = this; |
| + |
| + yield* Subscription.prototype.serialize.call(this); |
| + |
| + if (defaults && defaults.length) |
| { |
| - buffer.push("defaults=" + |
| - this.defaults.filter( |
| - type => SpecialSubscription.defaultsMap.has(type) |
| - ).join(" ") |
| - ); |
| + yield "defaults=" + |
| + defaults.filter( |
| + type => SpecialSubscription.defaultsMap.has(type) |
| + ).join(" "); |
| } |
| - if (this._lastDownload) |
| - buffer.push("lastDownload=" + this._lastDownload); |
| + if (_lastDownload) |
| + yield "lastDownload=" + _lastDownload; |
| } |
| }); |
| SpecialSubscription.defaultsMap = new Map([ |
| ["whitelist", WhitelistFilter], |
| ["blocking", BlockingFilter], |
| ["elemhide", ElemHideBase] |
| ]); |
| @@ -394,23 +397,26 @@ |
| } |
| return this._lastDownload; |
| }, |
| /** |
| * See Subscription.serialize() |
| * @inheritdoc |
| */ |
| - serialize(buffer) |
| + *serialize() |
| { |
| - Subscription.prototype.serialize.call(this, buffer); |
| - if (this._homepage) |
| - buffer.push("homepage=" + this._homepage); |
| - if (this._lastDownload) |
| - buffer.push("lastDownload=" + this._lastDownload); |
| + let {_homepage, _lastDownload} = this; |
| + |
| + yield* Subscription.prototype.serialize.call(this); |
| + |
| + if (_homepage) |
| + yield "homepage=" + _homepage; |
| + if (_lastDownload) |
| + yield "lastDownload=" + _lastDownload; |
| } |
| }); |
| /** |
| * Class for filter subscriptions updated externally (by other extension) |
| * @param {string} url see {@link Subscription Subscription()} |
| * @param {string} [title] see {@link Subscription Subscription()} |
| * @constructor |
| @@ -422,17 +428,17 @@ |
| } |
| exports.ExternalSubscription = ExternalSubscription; |
| ExternalSubscription.prototype = extend(RegularSubscription, { |
| /** |
| * See Subscription.serialize() |
| * @inheritdoc |
| */ |
| - serialize(buffer) |
| + *serialize() // eslint-disable-line require-yield |
| { |
| throw new Error( |
| "Unexpected call, external subscriptions should not be serialized" |
| ); |
| } |
| }); |
| /** |
| @@ -547,31 +553,36 @@ |
| * @type {number} |
| */ |
| downloadCount: 0, |
| /** |
| * See Subscription.serialize() |
| * @inheritdoc |
| */ |
| - serialize(buffer) |
| + *serialize() |
| { |
| - RegularSubscription.prototype.serialize.call(this, buffer); |
| - if (this.downloadStatus) |
| - buffer.push("downloadStatus=" + this.downloadStatus); |
| - if (this.lastSuccess) |
| - buffer.push("lastSuccess=" + this.lastSuccess); |
| - if (this.lastCheck) |
| - buffer.push("lastCheck=" + this.lastCheck); |
| - if (this.expires) |
| - buffer.push("expires=" + this.expires); |
| - if (this.softExpiration) |
| - buffer.push("softExpiration=" + this.softExpiration); |
| - if (this.errors) |
| - buffer.push("errors=" + this.errors); |
| - if (this.version) |
| - buffer.push("version=" + this.version); |
| - if (this.requiredVersion) |
| - buffer.push("requiredVersion=" + this.requiredVersion); |
| - if (this.downloadCount) |
| - buffer.push("downloadCount=" + this.downloadCount); |
| + let {downloadStatus, lastSuccess, lastCheck, expires, |
| + softExpiration, errors, version, requiredVersion, |
| + downloadCount} = this; |
| + |
| + yield* RegularSubscription.prototype.serialize.call(this); |
| + |
| + if (downloadStatus) |
| + yield "downloadStatus=" + downloadStatus; |
| + if (lastSuccess) |
| + yield "lastSuccess=" + lastSuccess; |
| + if (lastCheck) |
| + yield "lastCheck=" + lastCheck; |
| + if (expires) |
| + yield "expires=" + expires; |
| + if (softExpiration) |
| + yield "softExpiration=" + softExpiration; |
| + if (errors) |
| + yield "errors=" + errors; |
| + if (version) |
| + yield "version=" + version; |
| + if (requiredVersion) |
| + yield "requiredVersion=" + requiredVersion; |
| + if (downloadCount) |
| + yield "downloadCount=" + downloadCount; |
| } |
| }); |