ui
This commit is contained in:
+62
@@ -0,0 +1,62 @@
|
||||
/*
|
||||
* 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;
|
||||
Reference in New Issue
Block a user