public override Stream OpenRead(string resolvedPath)
        {
            if (ScriptParser.TryParseNuGetPackageReference(resolvedPath, out var packageName, out _))
            {
                var scripts = _scriptMap[packageName];
                if (scripts.Count == 1)
                {
                    return(_sourceReferenceResolver.OpenRead(resolvedPath));
                }
                if (scripts.Count > 1)
                {
                    MemoryStream memoryStream = new MemoryStream();
                    StreamWriter streamWriter = new StreamWriter(memoryStream);
                    foreach (var script in scripts)
                    {
                        var loadStatement = $"#load \"{script}\"";
                        streamWriter.WriteLine(loadStatement);
                    }
                    streamWriter.Flush();
                    memoryStream.Position = 0;
                    return(memoryStream);
                }
            }

            return(_sourceReferenceResolver.OpenRead(resolvedPath));
        }
Exemple #2
0
        public override Stream OpenRead(string resolvedPath)
        {
            if (resolvedPath.StartsWith("nuget:", StringComparison.OrdinalIgnoreCase))
            {
                var packageName = PackageNameVersionMatcher.Match(resolvedPath).Groups[1].Value;
                var scripts     = _scriptMap[packageName];
                if (scripts.Count == 1)
                {
                    return(_sourceReferenceResolver.OpenRead(resolvedPath));
                }

                if (scripts.Count > 1)
                {
                    MemoryStream memoryStream = new MemoryStream();
                    StreamWriter streamWriter = new StreamWriter(memoryStream);
                    foreach (var script in scripts)
                    {
                        var loadStatement = $"#load \"{script}\"";
                        streamWriter.WriteLine(loadStatement);
                    }

                    streamWriter.Flush();
                    memoryStream.Position = 0;
                    return(memoryStream);
                }
            }

            return(_sourceReferenceResolver.OpenRead(resolvedPath));
        }
Exemple #3
0
            /// <summary>
            /// Opens a <see cref="T:System.IO.Stream" /> that allows reading the content of the specified file.
            /// </summary>
            /// <param name="resolvedPath">Path returned by <see cref="M:Microsoft.CodeAnalysis.SourceReferenceResolver.ResolveReference(System.String,System.String)" />.</param>
            /// <returns></returns>
            public override Stream OpenRead(string resolvedPath)
            {
                ImportUserTypeCode code;

                if (codeGenCode.TryGetValue(resolvedPath, out code))
                {
                    return(new MemoryStream(Encoding.UTF8.GetBytes(code.Code)));
                }

                ImportUserTypeOptions options = ImportUserTypeOptions.ParseString(resolvedPath);

                if (options != null)
                {
                    code = GenerateCode(options);
                    AddCode(code);
                    return(new MemoryStream(Encoding.UTF8.GetBytes(code.Code)));
                }

                return(originalSourceResolver.OpenRead(resolvedPath));
            }
Exemple #4
0
 public override Stream OpenRead(string resolvedPath)
 {
     return(originalSourceResolver.OpenRead(resolvedPath));
 }
Exemple #5
0
 public override Stream OpenRead(string resolvedPath)
 {
     return(_inner.OpenRead(resolvedPath));
 }