123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- /*
- MIT License http://www.opensource.org/licenses/mit-license.php
- Author Tobias Koppers @sokra
- */
- "use strict";
- const getGeneratedSourceInfo = require("./getGeneratedSourceInfo");
- const splitIntoLines = require("./splitIntoLines");
- /** @typedef {import("./getGeneratedSourceInfo").GeneratedSourceInfo} GeneratedSourceInfo */
- /** @typedef {import("./streamChunks").OnChunk} OnChunk */
- /** @typedef {import("./streamChunks").OnName} OnName */
- /** @typedef {import("./streamChunks").OnSource} OnSource */
- /**
- * @param {string} source source
- * @param {OnChunk} onChunk on chunk
- * @param {OnSource} _onSource on source
- * @param {OnName} _onName on name
- * @returns {GeneratedSourceInfo} source info
- */
- const streamChunksOfRawSource = (source, onChunk, _onSource, _onName) => {
- let line = 1;
- const matches = splitIntoLines(source);
- /** @type {undefined | string} */
- let match;
- for (match of matches) {
- onChunk(match, line, 0, -1, -1, -1, -1);
- line++;
- }
- return matches.length === 0 || /** @type {string} */ (match).endsWith("\n")
- ? {
- generatedLine: matches.length + 1,
- generatedColumn: 0,
- }
- : {
- generatedLine: matches.length,
- generatedColumn: /** @type {string} */ (match).length,
- };
- };
- /**
- * @param {string} source source
- * @param {OnChunk} onChunk on chunk
- * @param {OnSource} onSource on source
- * @param {OnName} onName on name
- * @param {boolean} finalSource is final source
- * @returns {GeneratedSourceInfo} source info
- */
- module.exports = (source, onChunk, onSource, onName, finalSource) =>
- finalSource
- ? getGeneratedSourceInfo(source)
- : streamChunksOfRawSource(source, onChunk, onSource, onName);
|