| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 | 
							- /*
 
- 	MIT License http://www.opensource.org/licenses/mit-license.php
 
- 	Author Tobias Koppers @sokra
 
- */
 
- "use strict";
 
- const base64VLQ = require("./base64-vlq");
 
- const getNumberOfLines = require("./helpers").getNumberOfLines;
 
- const getUnfinishedLine = require("./helpers").getUnfinishedLine;
 
- const LINE_MAPPING = ";AAAA";
 
- class SingleLineNode {
 
- 	constructor(generatedCode, source, originalSource, line) {
 
- 		this.generatedCode = generatedCode;
 
- 		this.originalSource = originalSource;
 
- 		this.source = source;
 
- 		this.line = line || 1;
 
- 		this._numberOfLines = getNumberOfLines(this.generatedCode);
 
- 		this._endsWithNewLine = generatedCode[generatedCode.length - 1] === "\n";
 
- 	}
 
- 	clone() {
 
- 		return new SingleLineNode(this.generatedCode, this.source, this.originalSource, this.line);
 
- 	}
 
- 	getGeneratedCode() {
 
- 		return this.generatedCode;
 
- 	}
 
- 	getMappings(mappingsContext) {
 
- 		if(!this.generatedCode)
 
- 			return "";
 
- 		const lines = this._numberOfLines;
 
- 		const sourceIdx = mappingsContext.ensureSource(this.source, this.originalSource);
 
- 		let mappings = "A"; // generated column 0
 
- 		if(mappingsContext.unfinishedGeneratedLine)
 
- 			mappings = "," + base64VLQ.encode(mappingsContext.unfinishedGeneratedLine);
 
- 		mappings += base64VLQ.encode(sourceIdx - mappingsContext.currentSource); // source index
 
- 		mappings += base64VLQ.encode(this.line - mappingsContext.currentOriginalLine); // original line index
 
- 		mappings += "A"; // original column 0
 
- 		mappingsContext.currentSource = sourceIdx;
 
- 		mappingsContext.currentOriginalLine = this.line;
 
- 		const unfinishedGeneratedLine = mappingsContext.unfinishedGeneratedLine = getUnfinishedLine(this.generatedCode)
 
- 		mappings += Array(lines).join(LINE_MAPPING);
 
- 		if(unfinishedGeneratedLine === 0) {
 
- 			mappings += ";";
 
- 		} else {
 
- 			if(lines !== 0)
 
- 				mappings += LINE_MAPPING;
 
- 		}
 
- 		return mappings;
 
- 	}
 
- 	getNormalizedNodes() {
 
- 		return [this];
 
- 	}
 
- 	mapGeneratedCode(fn) {
 
- 		const generatedCode = fn(this.generatedCode);
 
- 		return new SingleLineNode(generatedCode, this.source, this.originalSource, this.line);
 
- 	}
 
- 	merge(otherNode) {
 
- 		if(otherNode instanceof SingleLineNode) {
 
- 			return this.mergeSingleLineNode(otherNode);
 
- 		}
 
- 		return false;
 
- 	}
 
- 	mergeSingleLineNode(otherNode) {
 
- 		if(this.source === otherNode.source &&
 
- 			this.originalSource === otherNode.originalSource) {
 
- 			if(this.line === otherNode.line) {
 
- 				this.generatedCode += otherNode.generatedCode;
 
- 				this._numberOfLines += otherNode._numberOfLines;
 
- 				this._endsWithNewLine = otherNode._endsWithNewLine;
 
- 				return this;
 
- 			} else if(this.line + 1 === otherNode.line && 
 
- 				this._endsWithNewLine &&
 
- 				this._numberOfLines === 1 && 
 
- 				otherNode._numberOfLines <= 1) {
 
- 				return new SourceNode(this.generatedCode + otherNode.generatedCode, this.source, this.originalSource, this.line);
 
- 			}
 
- 		}
 
- 		return false;
 
- 	}
 
- }
 
- module.exports = SingleLineNode;
 
- const SourceNode = require("./SourceNode"); // circular dependency
 
 
  |