public override DocumentResults? ExecuteQuery(String input, String text) { try { context = new CompilationContext(workspace, document.WithText(SourceText.From(text))); var csharpBootStrapper = BootstrapperBuilder.Create(bootstrapper) .WithExecutor(new StandardExecutorWithContext(bootstrapper.RunnableManager, context)) .Build(); // var root = this.compiler.Parse(text); var response = input; // + " | convert-to-string"; var controlFlowDescriptor = csharpBootStrapper.Compiler.Parse(response); var controlFlow = csharpBootStrapper.ControlFlowFactory.Create(controlFlowDescriptor); var result = controlFlow.Execute(new[] { context.CurrentDocument.GetSyntaxRootAsync().Result }) as IEnumerable<Object>; var source = context.DocumentEditor.GetChangedDocument().GetSyntaxRootAsync().Result; var documentResults = new DocumentResults() { Source = source.ToFullString(), Results = String.Join(Environment.NewLine, result.OfType<SyntaxNode>().Select(node => node.ToFullString())) }; return documentResults; } catch (Exception exception) { Console.WriteLine($"Error message: {exception.Message}"); Console.WriteLine("Stacktrace: "); Console.WriteLine(exception.StackTrace); return null; } }
/// <summary> /// Initializes a new instance of the <see cref="CsvCompilerModule"/> class. /// </summary> public CSharpCompilerModule(Bootstrapper bootstrapper) : base(bootstrapper) { compiler = new CSharpCompiler(); workspace = new AdhocWorkspace(); project = workspace.AddProject("CSharpProject", LanguageNames.CSharp); document = project.AddDocument("current", ""); context = new CompilationContext(workspace, document); }
public void ChangeMemberVisibility_ShouldChangeVisibilityOfNode_WhenSpecificNodeIsPassed() { // Given var source = @" public void foo() { var a = 10; } "; var underTest = new ChangeMemberVisibilityRunnable { Visibility = "private" }; var workspace = new AdhocWorkspace(); var project = workspace.AddProject(ProjectInfo.Create(ProjectId.CreateNewId(), VersionStamp.Default, "test", "test-asm", LanguageNames.CSharp)); var document = workspace.AddDocument(project.Id, "test-document", SourceText.From(source)); var documentContext = new CompilationContext(workspace, document); var compilationUnit = document.GetSyntaxRootAsync().Result as CompilationUnitSyntax; var memberDeclaration = compilationUnit.DescendantNodes() .OfType<MethodDeclarationSyntax>() .Single(m => m.Identifier.ValueText == "foo"); // When var result = underTest.Run(memberDeclaration, documentContext).ToFullString(); // Then Assert.That(result, Is.Not.Null); }