@ima/core
Version:
IMA.js framework for isomorphic javascript application
49 lines (48 loc) • 1.43 kB
JavaScript
/**
* Utility for transforming URLs according to the configured replacement rules.
*/ export class UrlTransformer {
_rules;
static get $dependencies() {
return [];
}
/**
* Initializes the URL transformer.
*/ constructor(){
this._rules = {};
}
/**
* Adds the provided replacement rule to the rules used by this URL
* transformer.
*
* @param pattern Regexp patter to look for (must be escaped as if
* for use in the {@link Regexp} constructor).
* @param replacement The replacement of the matched patter in any
* matched URL.
* @return This transformer.
*/ addRule(pattern, replacement) {
this._rules[pattern] = replacement;
return this;
}
/**
* Clears all rules.
*/ clear() {
this._rules = {};
return this;
}
/**
* Applies all rules registered with this URL transformer to the provided
* URL and returns the result. The rules will be applied in the order they
* were registered.
*
* @param url The URL for transformation.
* @return Transformed URL.
*/ transform(url) {
const rulesKey = Object.keys(this._rules);
if (rulesKey.length === 0) {
return url;
}
const reg = new RegExp(rulesKey.join('|'), 'g');
return url.replace(reg, (ruleKey)=>this._rules[ruleKey]);
}
}
//# sourceMappingURL=UrlTransformer.js.map