add hw2
This commit is contained in:
		
							
								
								
									
										305
									
								
								node_modules/vscode-languageserver-textdocument/lib/umd/main.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										305
									
								
								node_modules/vscode-languageserver-textdocument/lib/umd/main.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,305 @@ | ||||
| var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) { | ||||
|     if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { | ||||
|         if (ar || !(i in from)) { | ||||
|             if (!ar) ar = Array.prototype.slice.call(from, 0, i); | ||||
|             ar[i] = from[i]; | ||||
|         } | ||||
|     } | ||||
|     return to.concat(ar || Array.prototype.slice.call(from)); | ||||
| }; | ||||
| (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) { | ||||
|     /* -------------------------------------------------------------------------------------------- | ||||
|      * Copyright (c) Microsoft Corporation. All rights reserved. | ||||
|      * Licensed under the MIT License. See License.txt in the project root for license information. | ||||
|      * ------------------------------------------------------------------------------------------ */ | ||||
|     'use strict'; | ||||
|     Object.defineProperty(exports, "__esModule", { value: true }); | ||||
|     exports.TextDocument = void 0; | ||||
|     var FullTextDocument = /** @class */ (function () { | ||||
|         function FullTextDocument(uri, languageId, version, content) { | ||||
|             this._uri = uri; | ||||
|             this._languageId = languageId; | ||||
|             this._version = version; | ||||
|             this._content = content; | ||||
|             this._lineOffsets = undefined; | ||||
|         } | ||||
|         Object.defineProperty(FullTextDocument.prototype, "uri", { | ||||
|             get: function () { | ||||
|                 return this._uri; | ||||
|             }, | ||||
|             enumerable: false, | ||||
|             configurable: true | ||||
|         }); | ||||
|         Object.defineProperty(FullTextDocument.prototype, "languageId", { | ||||
|             get: function () { | ||||
|                 return this._languageId; | ||||
|             }, | ||||
|             enumerable: false, | ||||
|             configurable: true | ||||
|         }); | ||||
|         Object.defineProperty(FullTextDocument.prototype, "version", { | ||||
|             get: function () { | ||||
|                 return this._version; | ||||
|             }, | ||||
|             enumerable: false, | ||||
|             configurable: true | ||||
|         }); | ||||
|         FullTextDocument.prototype.getText = function (range) { | ||||
|             if (range) { | ||||
|                 var start = this.offsetAt(range.start); | ||||
|                 var end = this.offsetAt(range.end); | ||||
|                 return this._content.substring(start, end); | ||||
|             } | ||||
|             return this._content; | ||||
|         }; | ||||
|         FullTextDocument.prototype.update = function (changes, version) { | ||||
|             for (var _i = 0, changes_1 = changes; _i < changes_1.length; _i++) { | ||||
|                 var change = changes_1[_i]; | ||||
|                 if (FullTextDocument.isIncremental(change)) { | ||||
|                     // makes sure start is before end | ||||
|                     var range = getWellformedRange(change.range); | ||||
|                     // update content | ||||
|                     var startOffset = this.offsetAt(range.start); | ||||
|                     var endOffset = this.offsetAt(range.end); | ||||
|                     this._content = this._content.substring(0, startOffset) + change.text + this._content.substring(endOffset, this._content.length); | ||||
|                     // update the offsets | ||||
|                     var startLine = Math.max(range.start.line, 0); | ||||
|                     var endLine = Math.max(range.end.line, 0); | ||||
|                     var lineOffsets = this._lineOffsets; | ||||
|                     var addedLineOffsets = computeLineOffsets(change.text, false, startOffset); | ||||
|                     if (endLine - startLine === addedLineOffsets.length) { | ||||
|                         for (var i = 0, len = addedLineOffsets.length; i < len; i++) { | ||||
|                             lineOffsets[i + startLine + 1] = addedLineOffsets[i]; | ||||
|                         } | ||||
|                     } | ||||
|                     else { | ||||
|                         if (addedLineOffsets.length < 10000) { | ||||
|                             lineOffsets.splice.apply(lineOffsets, __spreadArray([startLine + 1, endLine - startLine], addedLineOffsets, false)); | ||||
|                         } | ||||
|                         else { // avoid too many arguments for splice | ||||
|                             this._lineOffsets = lineOffsets = lineOffsets.slice(0, startLine + 1).concat(addedLineOffsets, lineOffsets.slice(endLine + 1)); | ||||
|                         } | ||||
|                     } | ||||
|                     var diff = change.text.length - (endOffset - startOffset); | ||||
|                     if (diff !== 0) { | ||||
|                         for (var i = startLine + 1 + addedLineOffsets.length, len = lineOffsets.length; i < len; i++) { | ||||
|                             lineOffsets[i] = lineOffsets[i] + diff; | ||||
|                         } | ||||
|                     } | ||||
|                 } | ||||
|                 else if (FullTextDocument.isFull(change)) { | ||||
|                     this._content = change.text; | ||||
|                     this._lineOffsets = undefined; | ||||
|                 } | ||||
|                 else { | ||||
|                     throw new Error('Unknown change event received'); | ||||
|                 } | ||||
|             } | ||||
|             this._version = version; | ||||
|         }; | ||||
|         FullTextDocument.prototype.getLineOffsets = function () { | ||||
|             if (this._lineOffsets === undefined) { | ||||
|                 this._lineOffsets = computeLineOffsets(this._content, true); | ||||
|             } | ||||
|             return this._lineOffsets; | ||||
|         }; | ||||
|         FullTextDocument.prototype.positionAt = function (offset) { | ||||
|             offset = Math.max(Math.min(offset, this._content.length), 0); | ||||
|             var lineOffsets = this.getLineOffsets(); | ||||
|             var low = 0, high = lineOffsets.length; | ||||
|             if (high === 0) { | ||||
|                 return { line: 0, character: offset }; | ||||
|             } | ||||
|             while (low < high) { | ||||
|                 var mid = Math.floor((low + high) / 2); | ||||
|                 if (lineOffsets[mid] > offset) { | ||||
|                     high = mid; | ||||
|                 } | ||||
|                 else { | ||||
|                     low = mid + 1; | ||||
|                 } | ||||
|             } | ||||
|             // low is the least x for which the line offset is larger than the current offset | ||||
|             // or array.length if no line offset is larger than the current offset | ||||
|             var line = low - 1; | ||||
|             offset = this.ensureBeforeEOL(offset, lineOffsets[line]); | ||||
|             return { line: line, character: offset - lineOffsets[line] }; | ||||
|         }; | ||||
|         FullTextDocument.prototype.offsetAt = function (position) { | ||||
|             var lineOffsets = this.getLineOffsets(); | ||||
|             if (position.line >= lineOffsets.length) { | ||||
|                 return this._content.length; | ||||
|             } | ||||
|             else if (position.line < 0) { | ||||
|                 return 0; | ||||
|             } | ||||
|             var lineOffset = lineOffsets[position.line]; | ||||
|             if (position.character <= 0) { | ||||
|                 return lineOffset; | ||||
|             } | ||||
|             var nextLineOffset = (position.line + 1 < lineOffsets.length) ? lineOffsets[position.line + 1] : this._content.length; | ||||
|             var offset = Math.min(lineOffset + position.character, nextLineOffset); | ||||
|             return this.ensureBeforeEOL(offset, lineOffset); | ||||
|         }; | ||||
|         FullTextDocument.prototype.ensureBeforeEOL = function (offset, lineOffset) { | ||||
|             while (offset > lineOffset && isEOL(this._content.charCodeAt(offset - 1))) { | ||||
|                 offset--; | ||||
|             } | ||||
|             return offset; | ||||
|         }; | ||||
|         Object.defineProperty(FullTextDocument.prototype, "lineCount", { | ||||
|             get: function () { | ||||
|                 return this.getLineOffsets().length; | ||||
|             }, | ||||
|             enumerable: false, | ||||
|             configurable: true | ||||
|         }); | ||||
|         FullTextDocument.isIncremental = function (event) { | ||||
|             var candidate = event; | ||||
|             return candidate !== undefined && candidate !== null && | ||||
|                 typeof candidate.text === 'string' && candidate.range !== undefined && | ||||
|                 (candidate.rangeLength === undefined || typeof candidate.rangeLength === 'number'); | ||||
|         }; | ||||
|         FullTextDocument.isFull = function (event) { | ||||
|             var candidate = event; | ||||
|             return candidate !== undefined && candidate !== null && | ||||
|                 typeof candidate.text === 'string' && candidate.range === undefined && candidate.rangeLength === undefined; | ||||
|         }; | ||||
|         return FullTextDocument; | ||||
|     }()); | ||||
|     var TextDocument; | ||||
|     (function (TextDocument) { | ||||
|         /** | ||||
|          * Creates a new text document. | ||||
|          * | ||||
|          * @param uri The document's uri. | ||||
|          * @param languageId  The document's language Id. | ||||
|          * @param version The document's initial version number. | ||||
|          * @param content The document's content. | ||||
|          */ | ||||
|         function create(uri, languageId, version, content) { | ||||
|             return new FullTextDocument(uri, languageId, version, content); | ||||
|         } | ||||
|         TextDocument.create = create; | ||||
|         /** | ||||
|          * Updates a TextDocument by modifying its content. | ||||
|          * | ||||
|          * @param document the document to update. Only documents created by TextDocument.create are valid inputs. | ||||
|          * @param changes the changes to apply to the document. | ||||
|          * @param version the changes version for the document. | ||||
|          * @returns The updated TextDocument. Note: That's the same document instance passed in as first parameter. | ||||
|          * | ||||
|          */ | ||||
|         function update(document, changes, version) { | ||||
|             if (document instanceof FullTextDocument) { | ||||
|                 document.update(changes, version); | ||||
|                 return document; | ||||
|             } | ||||
|             else { | ||||
|                 throw new Error('TextDocument.update: document must be created by TextDocument.create'); | ||||
|             } | ||||
|         } | ||||
|         TextDocument.update = update; | ||||
|         function applyEdits(document, edits) { | ||||
|             var text = document.getText(); | ||||
|             var sortedEdits = mergeSort(edits.map(getWellformedEdit), function (a, b) { | ||||
|                 var diff = a.range.start.line - b.range.start.line; | ||||
|                 if (diff === 0) { | ||||
|                     return a.range.start.character - b.range.start.character; | ||||
|                 } | ||||
|                 return diff; | ||||
|             }); | ||||
|             var lastModifiedOffset = 0; | ||||
|             var spans = []; | ||||
|             for (var _i = 0, sortedEdits_1 = sortedEdits; _i < sortedEdits_1.length; _i++) { | ||||
|                 var e = sortedEdits_1[_i]; | ||||
|                 var startOffset = document.offsetAt(e.range.start); | ||||
|                 if (startOffset < lastModifiedOffset) { | ||||
|                     throw new Error('Overlapping edit'); | ||||
|                 } | ||||
|                 else if (startOffset > lastModifiedOffset) { | ||||
|                     spans.push(text.substring(lastModifiedOffset, startOffset)); | ||||
|                 } | ||||
|                 if (e.newText.length) { | ||||
|                     spans.push(e.newText); | ||||
|                 } | ||||
|                 lastModifiedOffset = document.offsetAt(e.range.end); | ||||
|             } | ||||
|             spans.push(text.substr(lastModifiedOffset)); | ||||
|             return spans.join(''); | ||||
|         } | ||||
|         TextDocument.applyEdits = applyEdits; | ||||
|     })(TextDocument || (exports.TextDocument = TextDocument = {})); | ||||
|     function mergeSort(data, compare) { | ||||
|         if (data.length <= 1) { | ||||
|             // sorted | ||||
|             return data; | ||||
|         } | ||||
|         var p = (data.length / 2) | 0; | ||||
|         var left = data.slice(0, p); | ||||
|         var right = data.slice(p); | ||||
|         mergeSort(left, compare); | ||||
|         mergeSort(right, compare); | ||||
|         var leftIdx = 0; | ||||
|         var rightIdx = 0; | ||||
|         var i = 0; | ||||
|         while (leftIdx < left.length && rightIdx < right.length) { | ||||
|             var ret = compare(left[leftIdx], right[rightIdx]); | ||||
|             if (ret <= 0) { | ||||
|                 // smaller_equal -> take left to preserve order | ||||
|                 data[i++] = left[leftIdx++]; | ||||
|             } | ||||
|             else { | ||||
|                 // greater -> take right | ||||
|                 data[i++] = right[rightIdx++]; | ||||
|             } | ||||
|         } | ||||
|         while (leftIdx < left.length) { | ||||
|             data[i++] = left[leftIdx++]; | ||||
|         } | ||||
|         while (rightIdx < right.length) { | ||||
|             data[i++] = right[rightIdx++]; | ||||
|         } | ||||
|         return data; | ||||
|     } | ||||
|     function computeLineOffsets(text, isAtLineStart, textOffset) { | ||||
|         if (textOffset === void 0) { textOffset = 0; } | ||||
|         var result = isAtLineStart ? [textOffset] : []; | ||||
|         for (var i = 0; i < text.length; i++) { | ||||
|             var ch = text.charCodeAt(i); | ||||
|             if (isEOL(ch)) { | ||||
|                 if (ch === 13 /* CharCode.CarriageReturn */ && i + 1 < text.length && text.charCodeAt(i + 1) === 10 /* CharCode.LineFeed */) { | ||||
|                     i++; | ||||
|                 } | ||||
|                 result.push(textOffset + i + 1); | ||||
|             } | ||||
|         } | ||||
|         return result; | ||||
|     } | ||||
|     function isEOL(char) { | ||||
|         return char === 13 /* CharCode.CarriageReturn */ || char === 10 /* CharCode.LineFeed */; | ||||
|     } | ||||
|     function getWellformedRange(range) { | ||||
|         var start = range.start; | ||||
|         var end = range.end; | ||||
|         if (start.line > end.line || (start.line === end.line && start.character > end.character)) { | ||||
|             return { start: end, end: start }; | ||||
|         } | ||||
|         return range; | ||||
|     } | ||||
|     function getWellformedEdit(textEdit) { | ||||
|         var range = getWellformedRange(textEdit.range); | ||||
|         if (range !== textEdit.range) { | ||||
|             return { newText: textEdit.newText, range: range }; | ||||
|         } | ||||
|         return textEdit; | ||||
|     } | ||||
| }); | ||||
		Reference in New Issue
	
	Block a user
	 nik
					nik