@yuebai008/cli
Version:
Command line interface for rapid qg-minigame development
1 lines • 3.67 kB
JavaScript
import*as Platform from"../../core/platform/platform.js";const MAX_SAFE_INT32=2**31-1;export class TextRange{startLine;startColumn;endLine;endColumn;constructor(t,n,e,i){this.startLine=t,this.startColumn=n,this.endLine=e,this.endColumn=i}static createFromLocation(t,n){return new TextRange(t,n,t,n)}static createUnboundedFromLocation(t,n){return new TextRange(t,n,2147483647,2147483647)}static fromObject(t){return new TextRange(t.startLine,t.startColumn,t.endLine,t.endColumn)}static comparator(t,n){return t.compareTo(n)}static fromEdit(t,n){let e=t.startLine,i=t.startColumn+n.length;const s=Platform.StringUtilities.findLineEndingIndexes(n);if(s.length>1){e=t.startLine+s.length-1;const n=s.length;i=s[n-1]-s[n-2]-1}return new TextRange(t.startLine,t.startColumn,e,i)}isEmpty(){return this.startLine===this.endLine&&this.startColumn===this.endColumn}immediatelyPrecedes(t){return!!t&&(this.endLine===t.startLine&&this.endColumn===t.startColumn)}immediatelyFollows(t){return!!t&&t.immediatelyPrecedes(this)}follows(t){return t.endLine===this.startLine&&t.endColumn<=this.startColumn||t.endLine<this.startLine}get linesCount(){return this.endLine-this.startLine}collapseToEnd(){return new TextRange(this.endLine,this.endColumn,this.endLine,this.endColumn)}collapseToStart(){return new TextRange(this.startLine,this.startColumn,this.startLine,this.startColumn)}normalize(){return this.startLine>this.endLine||this.startLine===this.endLine&&this.startColumn>this.endColumn?new TextRange(this.endLine,this.endColumn,this.startLine,this.startColumn):this.clone()}clone(){return new TextRange(this.startLine,this.startColumn,this.endLine,this.endColumn)}serializeToObject(){return{startLine:this.startLine,startColumn:this.startColumn,endLine:this.endLine,endColumn:this.endColumn}}compareTo(t){return this.startLine>t.startLine?1:this.startLine<t.startLine?-1:this.startColumn>t.startColumn?1:this.startColumn<t.startColumn?-1:0}compareToPosition(t,n){return t<this.startLine||t===this.startLine&&n<this.startColumn?-1:t>this.endLine||t===this.endLine&&n>this.endColumn?1:0}equal(t){return this.startLine===t.startLine&&this.endLine===t.endLine&&this.startColumn===t.startColumn&&this.endColumn===t.endColumn}relativeTo(t,n){const e=this.clone();return this.startLine===t&&(e.startColumn-=n),this.endLine===t&&(e.endColumn-=n),e.startLine-=t,e.endLine-=t,e}relativeFrom(t,n){const e=this.clone();return 0===this.startLine&&(e.startColumn+=n),0===this.endLine&&(e.endColumn+=n),e.startLine+=t,e.endLine+=t,e}rebaseAfterTextEdit(t,n){console.assert(t.startLine===n.startLine),console.assert(t.startColumn===n.startColumn);const e=this.clone();if(!this.follows(t))return e;const i=n.endLine-t.endLine,s=n.endColumn-t.endColumn;return e.startLine+=i,e.endLine+=i,e.startLine===n.endLine&&(e.startColumn+=s),e.endLine===n.endLine&&(e.endColumn+=s),e}toString(){return JSON.stringify(this)}containsLocation(t,n){return this.startLine===this.endLine?this.startLine===t&&this.startColumn<=n&&n<this.endColumn:this.startLine===t?this.startColumn<=n:this.endLine===t?n<this.endColumn:this.startLine<t&&t<this.endLine}get start(){return{lineNumber:this.startLine,columnNumber:this.startColumn}}get end(){return{lineNumber:this.endLine,columnNumber:this.endColumn}}intersection(t){let{startLine:n,startColumn:e}=this;n<t.startLine?(n=t.startLine,e=t.startColumn):n===t.startLine&&(e=Math.max(e,t.startColumn));let{endLine:i,endColumn:s}=this;return i>t.endLine?(i=t.endLine,s=t.endColumn):i===t.endLine&&(s=Math.min(s,t.endColumn)),n>i||n===i&&e>=s?new TextRange(0,0,0,0):new TextRange(n,e,i,s)}}export class SourceRange{offset;length;constructor(t,n){this.offset=t,this.length=n}}