'use strict';
|
|
var UrlHelper = require( './url' );
|
var regexp = require( './regexp' );
|
|
/**
|
* UrlsHelper constructor
|
* @constructor
|
* @param {String} rule CSS rule with many url() blocks.
|
*/
|
var UrlsHelper = function( rule ) {
|
var exports = {};
|
|
if ( !rule.match( regexp.URLS ) ) {
|
return false;
|
}
|
|
if ( ! ( this instanceof UrlsHelper ) ) {
|
return new UrlsHelper( rule );
|
}
|
|
this._originalRule = rule;
|
this._helpers = [];
|
this.URIS = [];
|
|
rule.match( regexp.URLS ).forEach( function( url ) {
|
var urlHelper = new UrlHelper( url );
|
|
this._helpers.push( urlHelper );
|
this.URIS.push( urlHelper.URI );
|
}, this );
|
|
exports.URIS = this.URIS;
|
exports.getOriginalURIS = this.getOriginalURIS.bind( this );
|
exports.getModifiedRule = this.getModifiedRule.bind( this );
|
exports.getOriginalRule = this.getOriginalRule.bind( this );
|
|
return exports;
|
};
|
|
/**
|
* Returns modified rule.
|
* @returns {String} Modified rule.
|
*/
|
UrlsHelper.prototype.getModifiedRule = function() {
|
var rule = this._originalRule;
|
|
this._helpers.forEach( function ( uri ) {
|
rule = rule.replace( uri.getOriginalRule(), uri.getModifiedRule() );
|
} );
|
|
return rule;
|
};
|
|
/**
|
* Returns original rule.
|
* @returns {String} Original rule.
|
*/
|
UrlsHelper.prototype.getOriginalRule = function() {
|
return this._originalRule;
|
};
|
|
/**
|
* Returns array of original URIs.
|
* @returns {String} Original URIs array.
|
*/
|
UrlsHelper.prototype.getOriginalURIS = function () {
|
return this._helpers.map( function( helper ) {
|
return helper.getOriginalURI();
|
} );
|
};
|
|
module.exports = UrlsHelper;
|