You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/* MIT License http://www.opensource.org/licenses/mit-license.php
Author Tobias Koppers @sokra */ "use strict";
const SourceNode = require("source-map").SourceNode; const SourceListMap = require("source-list-map").SourceListMap; const Source = require("./Source");
class ConcatSource extends Source { constructor() { super(); this.children = []; for(var i = 0; i < arguments.length; i++) { var item = arguments[i]; if(item instanceof ConcatSource) { var children = item.children; for(var j = 0; j < children.length; j++) this.children.push(children[j]); } else { this.children.push(item); } } }
add(item) { if(item instanceof ConcatSource) { var children = item.children; for(var j = 0; j < children.length; j++) this.children.push(children[j]); } else { this.children.push(item); } }
source() { let source = ""; const children = this.children; for(let i = 0; i < children.length; i++) { const child = children[i]; source += typeof child === "string" ? child : child.source(); } return source; }
size() { let size = 0; const children = this.children; for(let i = 0; i < children.length; i++) { const child = children[i]; size += typeof child === "string" ? child.length : child.size(); } return size; }
node(options) { const node = new SourceNode(null, null, null, this.children.map(function(item) { return typeof item === "string" ? item : item.node(options); })); return node; }
listMap(options) { const map = new SourceListMap(); var children = this.children; for(var i = 0; i < children.length; i++) { var item = children[i]; if(typeof item === "string") map.add(item); else map.add(item.listMap(options)); } return map; }
updateHash(hash) { var children = this.children; for(var i = 0; i < children.length; i++) { var item = children[i]; if(typeof item === "string") hash.update(item); else item.updateHash(hash); } } }
require("./SourceAndMapMixin")(ConcatSource.prototype);
module.exports = ConcatSource;
|