source: trip-planner-front/node_modules/resolve-url-loader/lib/position-algerbra.js@ 8d391a1

Last change on this file since 8d391a1 was 6a3a178, checked in by Ema <ema_spirova@…>, 3 years ago

initial commit

  • Property mode set to 100644
File size: 1.7 KB
RevLine 
[6a3a178]1/*
2 * MIT License http://opensource.org/licenses/MIT
3 * Author: Ben Holloway @bholloway
4 */
5'use strict';
6
7/**
8 * Given a sourcemap position create a new maybeObject with only line and column properties.
9 *
10 * @param {*|{line: number, column: number}} maybeObj Possible location hash
11 * @returns {{line: number, column: number}} Location hash with possible NaN values
12 */
13function sanitise(maybeObj) {
14 var obj = !!maybeObj && typeof maybeObj === 'object' && maybeObj || {};
15 return {
16 line: isNaN(obj.line) ? NaN : obj.line,
17 column: isNaN(obj.column) ? NaN : obj.column
18 };
19}
20
21exports.sanitise = sanitise;
22
23/**
24 * Infer a line and position delta based on the linebreaks in the given string.
25 *
26 * @param candidate {string} A string with possible linebreaks
27 * @returns {{line: number, column: number}} A position object where line and column are deltas
28 */
29function strToOffset(candidate) {
30 var split = candidate.split(/\r\n|\n/g);
31 var last = split[split.length - 1];
32 return {
33 line: split.length - 1,
34 column: last.length
35 };
36}
37
38exports.strToOffset = strToOffset;
39
40/**
41 * Add together a list of position elements.
42 *
43 * Lines are added. If the new line is zero the column is added otherwise it is overwritten.
44 *
45 * @param {{line: number, column: number}[]} list One or more sourcemap position elements to add
46 * @returns {{line: number, column: number}} Resultant position element
47 */
48function add(list) {
49 return list
50 .slice(1)
51 .reduce(
52 function (accumulator, element) {
53 return {
54 line: accumulator.line + element.line,
55 column: element.line > 0 ? element.column : accumulator.column + element.column,
56 };
57 },
58 list[0]
59 );
60}
61
62exports.add = add;
Note: See TracBrowser for help on using the repository browser.