UNPKG

@diplodoc/transform

Version:

A simple transformer of text in YFM (Yandex Flavored Markdown) to HTML

51 lines 1.84 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.createSourceMapApi = exports.prepareSourceMap = exports.getLineNumber = void 0; const invert_1 = __importDefault(require("lodash/invert")); const DELETED_LINE = Number.MIN_SAFE_INTEGER; function getLineNumber(input, index) { return input.substring(0, index).split('\n').length; } exports.getLineNumber = getLineNumber; function prepareSourceMap(sourceMap) { const newToOldMap = (0, invert_1.default)(sourceMap); delete newToOldMap[DELETED_LINE]; return newToOldMap; } exports.prepareSourceMap = prepareSourceMap; function createSourceMapApi(sourceMap) { const newToOldIndexes = (0, invert_1.default)(sourceMap); const getOriginIndex = (i) => Number(newToOldIndexes[i]); const setSourceMapValue = (i, value) => { sourceMap[getOriginIndex(i)] = value; }; const getSourceMapValue = (i) => sourceMap[getOriginIndex(i)]; const moveLines = ({ start, end, offset, withReplace = false }) => { for (let i = start; i <= end; i++) { const newLineNumber = i + offset; setSourceMapValue(i, newLineNumber); if (withReplace) { setSourceMapValue(newLineNumber, DELETED_LINE); } } }; const removeLine = (i) => { setSourceMapValue(i, DELETED_LINE); }; const removeLines = ({ start, end }) => { for (let i = start; i <= end; i++) { removeLine(i); } }; return { getSourceMapValue, moveLines, removeLines, removeLine, }; } exports.createSourceMapApi = createSourceMapApi; //# sourceMappingURL=sourceMap.js.map