UNPKG

@diplodoc/transform

Version:

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

50 lines 1.75 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getLineNumber = getLineNumber; exports.prepareSourceMap = prepareSourceMap; exports.createSourceMapApi = createSourceMapApi; 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; } function prepareSourceMap(sourceMap) { const newToOldMap = (0, invert_1.default)(sourceMap); delete newToOldMap[DELETED_LINE]; return newToOldMap; } 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, }; } //# sourceMappingURL=sourceMap.js.map