1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- /*
- * MIT License http://opensource.org/licenses/MIT
- * Author: Ben Holloway @bholloway
- */
- 'use strict';
- /**
- * Given a sourcemap position create a new maybeObject with only line and column properties.
- *
- * @param {*|{line: number, column: number}} maybeObj Possible location hash
- * @returns {{line: number, column: number}} Location hash with possible NaN values
- */
- function sanitise(maybeObj) {
- var obj = !!maybeObj && typeof maybeObj === 'object' && maybeObj || {};
- return {
- line: isNaN(obj.line) ? NaN : obj.line,
- column: isNaN(obj.column) ? NaN : obj.column
- };
- }
- exports.sanitise = sanitise;
- /**
- * Infer a line and position delta based on the linebreaks in the given string.
- *
- * @param candidate {string} A string with possible linebreaks
- * @returns {{line: number, column: number}} A position object where line and column are deltas
- */
- function strToOffset(candidate) {
- var split = candidate.split(/\r\n|\n/g);
- var last = split[split.length - 1];
- return {
- line: split.length - 1,
- column: last.length
- };
- }
- exports.strToOffset = strToOffset;
- /**
- * Add together a list of position elements.
- *
- * Lines are added. If the new line is zero the column is added otherwise it is overwritten.
- *
- * @param {{line: number, column: number}[]} list One or more sourcemap position elements to add
- * @returns {{line: number, column: number}} Resultant position element
- */
- function add(list) {
- return list
- .slice(1)
- .reduce(
- function (accumulator, element) {
- return {
- line: accumulator.line + element.line,
- column: element.line > 0 ? element.column : accumulator.column + element.column,
- };
- },
- list[0]
- );
- }
- exports.add = add;
|