MCPcopy
hub / github.com/witheve/Eve / LanguageService

Class LanguageService

src/ide.ts:2999–3150  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2997type PerformanceRecord = {tag: string[], block: string, average: number, calls: number, color: string, max: number, min: number, percent: number, total: number};
2998
2999class LanguageService {
3000 protected static _requestId = 0;
3001
3002 protected _listeners:{[requestId:number]: (args:any) => void} = {};
3003
3004 findSource(args:FindSourceArgs, callback:(args:FindSourceArgs) => void) {
3005 this.send("findSource", args, callback);
3006 }
3007
3008 unpackSource(callback:(args:SourceRecord[]) => void) {
3009 return (message:FindSourceArgs) => {
3010 let records:SourceRecord[] = [];
3011 for(let source of message.source) {
3012 let span:any = message.span || source.span;
3013 records.push({tag: ["source"], record: message.record, attribute: message.attribute, span, block: source.block});
3014 }
3015 callback(records);
3016 };
3017 }
3018
3019 findRelated(args:FindRelatedArgs, callback:(args:FindRelatedArgs) => void) {
3020 this.send("findRelated", args, callback);
3021 }
3022
3023 unpackRelated(callback:(args:RelatedRecord[]) => void) {
3024 return (message:FindRelatedArgs) => {
3025 let records:RelatedRecord[] = [];
3026 // This isn't really correct, but we're rolling with it for now.
3027 for(let span of message.span) {
3028 records.push({tag: ["related"], span, variable: message.variable});
3029 }
3030 callback(records);
3031 };
3032 }
3033
3034 findValue(args:FindValueArgs, callback:(args:FindValueArgs) => void) {
3035 this.send("findValue", args, callback);
3036 }
3037
3038 unpackValue(callback:(args:ValueRecord[]) => void) {
3039 return (message:FindValueArgs) => {
3040 if(message.totalRows > message.rows.length) {
3041 // @TODO: Turn this into a fact.
3042 console.warn(`Too many possible values, showing {{message.rows.length}} of {{message.totalRows}}`);
3043 }
3044 let mappings = message.variableMappings;
3045 let names = message.variableNames;
3046 let records:ValueRecord[] = [];
3047 for(let rowIx = 0, rowCount = message.rows.length; rowIx < rowCount; rowIx++) {
3048 let row = message.rows[rowIx];
3049 for(let variable in mappings) {
3050 let register = mappings[variable];
3051 records.push({tag: ["value"], row: rowIx + 1, variable, value: row[register], register, name: names[variable]});
3052 }
3053 }
3054 callback(records);
3055 };
3056 }

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected