Ejemplo n.º 1
0
        public override object Validate(ParseInfo parseInfo, IExpression value, DocRange valueRange)
        {
            StringAction str = value as StringAction;

            if (str == null)
            {
                parseInfo.Script.Diagnostics.Error("Expected string constant.", valueRange);
            }
            return(str?.Value);
        }
Ejemplo n.º 2
0
        public override object Validate(ParseInfo parseInfo, IExpression value, DocRange valueRange)
        {
            StringAction str = value as StringAction;

            if (str == null)
            {
                parseInfo.Script.Diagnostics.Error("Expected string constant.", valueRange);
                return(null);
            }

            string resultingPath = Extras.CombinePathWithDotNotation(parseInfo.Script.Uri.FilePath(), str.Value);

            if (resultingPath == null)
            {
                parseInfo.Script.Diagnostics.Error("File path contains invalid characters.", valueRange);
                return(null);
            }

            string dir = Path.GetDirectoryName(resultingPath);

            if (Directory.Exists(dir))
            {
                Importer.AddImportCompletion(parseInfo.Script, dir, valueRange);
            }

            if (!File.Exists(resultingPath))
            {
                parseInfo.Script.Diagnostics.Error($"No file was found at '{resultingPath}'.", valueRange);
                return(null);
            }

            if (FileTypes != null && !FileTypes.Contains(Path.GetExtension(resultingPath).ToLower()))
            {
                parseInfo.Script.Diagnostics.Error($"Expected a file with the file type '{string.Join(", ", FileTypes)}'.", valueRange);
                return(null);
            }

            parseInfo.Script.AddDefinitionLink(valueRange, new Location(Extras.Definition(resultingPath), DocRange.Zero));
            parseInfo.Script.AddHover(valueRange, resultingPath);

            return(resultingPath);
        }
        public override object Validate(ScriptFile script, IExpression value, DocRange valueRange)
        {
            StringAction str = value as StringAction;

            if (str == null)
            {
                script.Diagnostics.Error("Expected string constant.", valueRange);
                return(null);
            }

            string resultingPath = Extras.CombinePathWithDotNotation(script.Uri.FilePath(), str.Value);

            if (resultingPath == null)
            {
                script.Diagnostics.Error("File path contains invalid characters.", valueRange);
                return(null);
            }

            string dir = Path.GetDirectoryName(resultingPath);

            if (Directory.Exists(dir))
            {
                DeltinScript.AddImportCompletion(script, dir, valueRange);
            }

            if (!File.Exists(resultingPath))
            {
                script.Diagnostics.Error($"No file was found at '{resultingPath}'.", valueRange);
                return(null);
            }

            if (FileType != null && Path.GetExtension(resultingPath).ToLower() != "." + FileType)
            {
                script.Diagnostics.Error($"Expected a file with the file type '{FileType}'.", valueRange);
                return(null);
            }

            return(resultingPath);
        }
 public void Dispose()
 {
     StringAction.RemoveUnused(Strings);
 }