This commit is contained in:
99
node_modules/yaml-language-server/lib/umd/languageservice/utils/arrUtils.js
generated
vendored
Normal file
99
node_modules/yaml-language-server/lib/umd/languageservice/utils/arrUtils.js
generated
vendored
Normal file
@@ -0,0 +1,99 @@
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Red Hat, Inc. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
(function (factory) {
|
||||
if (typeof module === "object" && typeof module.exports === "object") {
|
||||
var v = factory(require, exports);
|
||||
if (v !== undefined) module.exports = v;
|
||||
}
|
||||
else if (typeof define === "function" && define.amd) {
|
||||
define(["require", "exports"], factory);
|
||||
}
|
||||
})(function (require, exports) {
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.isArrayEqual = exports.filterInvalidCustomTags = exports.matchOffsetToDocument = exports.removeDuplicatesObj = exports.getLineOffsets = void 0;
|
||||
function getLineOffsets(textDocString) {
|
||||
const lineOffsets = [];
|
||||
const text = textDocString;
|
||||
let isLineStart = true;
|
||||
for (let i = 0; i < text.length; i++) {
|
||||
if (isLineStart) {
|
||||
lineOffsets.push(i);
|
||||
isLineStart = false;
|
||||
}
|
||||
const ch = text.charAt(i);
|
||||
isLineStart = ch === '\r' || ch === '\n';
|
||||
if (ch === '\r' && i + 1 < text.length && text.charAt(i + 1) === '\n') {
|
||||
i++;
|
||||
}
|
||||
}
|
||||
if (isLineStart && text.length > 0) {
|
||||
lineOffsets.push(text.length);
|
||||
}
|
||||
return lineOffsets;
|
||||
}
|
||||
exports.getLineOffsets = getLineOffsets;
|
||||
function removeDuplicatesObj(objArray) {
|
||||
const nonDuplicateSet = new Set();
|
||||
const nonDuplicateArr = [];
|
||||
for (const obj in objArray) {
|
||||
const currObj = objArray[obj];
|
||||
const stringifiedObj = JSON.stringify(currObj);
|
||||
if (!nonDuplicateSet.has(stringifiedObj)) {
|
||||
nonDuplicateArr.push(currObj);
|
||||
nonDuplicateSet.add(stringifiedObj);
|
||||
}
|
||||
}
|
||||
return nonDuplicateArr;
|
||||
}
|
||||
exports.removeDuplicatesObj = removeDuplicatesObj;
|
||||
function matchOffsetToDocument(offset, jsonDocuments) {
|
||||
for (const jsonDoc of jsonDocuments.documents) {
|
||||
if (jsonDoc.internalDocument && jsonDoc.internalDocument.range[0] <= offset && jsonDoc.internalDocument.range[2] >= offset) {
|
||||
return jsonDoc;
|
||||
}
|
||||
}
|
||||
if (jsonDocuments.documents.length === 1) {
|
||||
return jsonDocuments.documents[0];
|
||||
}
|
||||
return null;
|
||||
}
|
||||
exports.matchOffsetToDocument = matchOffsetToDocument;
|
||||
function filterInvalidCustomTags(customTags) {
|
||||
const validCustomTags = ['mapping', 'scalar', 'sequence'];
|
||||
if (!customTags) {
|
||||
return [];
|
||||
}
|
||||
return customTags.filter((tag) => {
|
||||
if (typeof tag === 'string') {
|
||||
const typeInfo = tag.split(' ');
|
||||
const type = (typeInfo[1] && typeInfo[1].toLowerCase()) || 'scalar';
|
||||
// We need to check if map is a type because map will throw an error within the yaml-ast-parser
|
||||
if (type === 'map') {
|
||||
return false;
|
||||
}
|
||||
return validCustomTags.indexOf(type) !== -1;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
}
|
||||
exports.filterInvalidCustomTags = filterInvalidCustomTags;
|
||||
function isArrayEqual(fst, snd) {
|
||||
if (!snd || !fst) {
|
||||
return false;
|
||||
}
|
||||
if (snd.length !== fst.length) {
|
||||
return false;
|
||||
}
|
||||
for (let index = fst.length - 1; index >= 0; index--) {
|
||||
if (fst[index] !== snd[index]) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
exports.isArrayEqual = isArrayEqual;
|
||||
});
|
||||
//# sourceMappingURL=arrUtils.js.map
|
||||
Reference in New Issue
Block a user