public ImplementsCodeLensRange(IMethod method, ScriptFile script, CodeLensSourceType sourceType, DocRange range) : base(sourceType, range, "ostw.showReferences") { Method = method; _script = script; }
public virtual object Validate(ScriptFile script, IExpression value, DocRange valueRange) => null;
public override void Call(ScriptFile script, DocRange callRange) { base.Call(script, callRange); script.AddDefinitionLink(callRange, DefinedAt); _translateInfo.AddSymbolLink(this, new Location(script.Uri, callRange)); }
public TranslateSettings(Diagnostics diagnostics, ScriptFile root) { Diagnostics = diagnostics; Root = root; }
public TranslateSettings(Diagnostics diagnostics, ScriptFile root, FileGetter fileGetter) : this(diagnostics, root) { FileGetter = fileGetter; }
string GetImportedFile(ScriptFile script, FileImporter importer, DeltinScriptParser.Import_fileContext importFileContext) { DocRange stringRange = DocRange.GetRange(importFileContext.STRINGLITERAL()); ImportResult importResult = importer.Import( stringRange, Extras.RemoveQuotes(importFileContext.STRINGLITERAL().GetText()), script.Uri ); if (!importResult.SuccessfulReference) { return(importResult.Directory); } // Add hover and definition info. script.AddDefinitionLink(stringRange, new Location(importResult.Uri, DocRange.Zero)); script.AddHover(stringRange, importResult.FilePath); if (importResult.ShouldImport) { // Import the file if it should be imported. switch (importResult.FileType) { // Get script file. case ".del": case ".ostw": case ".workshop": ScriptFile importedScript = new ScriptFile(Diagnostics, importResult.Uri, FileGetter.GetScript(importResult.Uri)); CollectScriptFiles(importedScript); break; // Get lobby settings. case ".json": JObject lobbySettings = null; // Make sure the json is in the correct format. try { ImportedScript file = FileGetter.GetImportedFile(importResult.Uri); file.Update(); // Convert the json to a jobject. lobbySettings = JObject.Parse(file.Content); // An exception will be thrown if the jobject cannot be converted to a Ruleset. lobbySettings.ToObject(typeof(Ruleset)); if (!Ruleset.Validate(lobbySettings, script.Diagnostics, stringRange)) { break; } } catch { // Error if the json failed to parse. script.Diagnostics.Error("Failed to parse the settings file.", stringRange); break; } // If no lobby settings were imported yet, set MergedLobbySettings to the jobject. if (MergedLobbySettings == null) { MergedLobbySettings = lobbySettings; } else { // Otherwise, merge current lobby settings. lobbySettings.Merge(MergedLobbySettings, new JsonMergeSettings { MergeArrayHandling = MergeArrayHandling.Union, MergeNullValueHandling = MergeNullValueHandling.Ignore }); MergedLobbySettings = lobbySettings; } break; } } return(importResult.Directory); }
public override void Call(ScriptFile script, DocRange callRange) { base.Call(script, callRange); script.AddDefinitionLink(callRange, DefinedAt); AddLink(new LanguageServer.Location(script.Uri, callRange)); }
public CallInfo(ScriptFile script) { _script = script; }
public NumberAction(ScriptFile script, DeltinScriptParser.NumberContext numberContext) { Value = double.Parse(numberContext.GetText()); }
public virtual void Call(ScriptFile script, DocRange callRange) { script.AddHover(callRange, GetLabel(true)); }
public CallInfo(IRecursiveCallHandler function, ScriptFile script, IValueSolve onCompleted = null) { Function = function; _script = script; OnCompleted = onCompleted ?? new ValueSolveSource(true); }
public CallInfo(IRecursiveCallHandler function, ScriptFile script) { Function = function; Script = script; }
public NumberAction(ScriptFile script, NumberExpression numberContext) { Value = numberContext.Value; }
// ICallable public void Call(ScriptFile script, DocRange callRange) { ThrowIfNotFinalized(); script.AddDefinitionLink(callRange, DefinedAt); parseInfo.TranslateInfo.AddSymbolLink(this, new Location(script.Uri, callRange)); }
public void Call(ScriptFile script, DocRange callRange) { script.AddDefinitionLink(callRange, DefinedAt); script.AddHover(callRange, GetLabel(true)); parseInfo.TranslateInfo.AddSymbolLink(this, new Location(script.Uri, callRange)); }
public BoolAction(ScriptFile script, bool value) { Value = value; }
public CallInfo(IApplyBlock function, ScriptFile script) { Function = function; Script = script; }
string GetImportedFile(ScriptFile script, FileImporter importer, Import importFileContext) { // If the file being imported is being imported as an object, get the variable name. string variableName = importFileContext.Identifier?.Text; DocRange stringRange = importFileContext.File.Range; ImportResult importResult = importer.Import( stringRange, importFileContext.File.Text.RemoveQuotes(), script.Uri ); if (!importResult.SuccessfulReference) { return(importResult.Directory); } // Add hover and definition info. script.AddDefinitionLink(stringRange, new Location(importResult.Uri, DocRange.Zero)); script.AddHover(stringRange, importResult.FilePath); if (importResult.ShouldImport) { // Import the file if it should be imported. if (variableName == null) { switch (importResult.FileType) { // Get script file. case ".del": case ".ostw": case ".workshop": ScriptFile importedScript = new ScriptFile(_diagnostics, _fileGetter.GetScript(importResult.Uri)); CollectScriptFiles(importedScript); break; // Get lobby settings. case ".json": case ".lobby": JObject lobbySettings = null; // Make sure the json is in the correct format. try { ImportedScript file = _fileGetter.GetImportedFile(importResult.Uri); file.Update(); // Convert the json to a jobject. lobbySettings = JObject.Parse(file.Content); // An exception will be thrown if the jobject cannot be converted to a Ruleset. lobbySettings.ToObject(typeof(Ruleset)); if (!Ruleset.Validate(lobbySettings, script.Diagnostics, stringRange)) { break; } } catch { // Error if the json failed to parse. script.Diagnostics.Error("Failed to parse the settings file.", stringRange); break; } // If no lobby settings were imported yet, set MergedLobbySettings to the jobject. if (MergedLobbySettings == null) { MergedLobbySettings = lobbySettings; } else { // Otherwise, merge current lobby settings. lobbySettings.Merge(MergedLobbySettings, new JsonMergeSettings { MergeArrayHandling = MergeArrayHandling.Union, MergeNullValueHandling = MergeNullValueHandling.Ignore }); MergedLobbySettings = lobbySettings; } break; } } else { switch (importResult.FileType) { case ".json": ImportedScript file = _fileGetter.GetImportedFile(importResult.Uri); file.Update(); JObject jsonData = JObject.Parse(file.Content); InternalVar jsonVar = new InternalVar(variableName); jsonVar.CodeType = new JsonType(jsonData); if (((JsonType)jsonVar.CodeType).ContainsDeepArrays()) { script.Diagnostics.Error("JSON Arrays cannot include objects or arrays.", stringRange); } _deltinScript.RulesetScope.AddVariable(jsonVar, script.Diagnostics, importFileContext.Identifier.Range); _deltinScript.DefaultIndexAssigner.Add(jsonVar, new V_Null()); break; } } } return(importResult.Directory); }
public ParseInfo(ScriptFile script, DeltinScript translateInfo) { Script = script; TranslateInfo = translateInfo; }
/// <summary>Calls a type from the specified document range.</summary> /// <param name="script">The script that the type was called from.</param> /// <param name="callRange">The range of the call.</param> public virtual void Call(ScriptFile script, DocRange callRange) { script.AddHover(callRange, HoverHandler.Sectioned(Kind + " " + Name, Description)); }