Пример #1
0
        public Walker(string[] baseline)
        {
            _writer = new StringWriter();

            _visitor  = new IntermediateNodeWriter(_writer);
            _baseline = baseline;
        }
    public override void RenderNode(IntermediateNode node, IntermediateNodeWriter writer)
    {
        if (node == null)
        {
            throw new ArgumentNullException(nameof(node));
        }

        if (writer == null)
        {
            throw new ArgumentNullException(nameof(writer));
        }

        _scopes.Add(new ScopeInternal(writer));

        Visitor.Visit(node);

        _scopes.RemoveAt(_scopes.Count - 1);
    }
Пример #3
0
    public static CodeRenderingContext CreateDesignTime(
        string newLineString              = null,
        string suppressUniqueIds          = "test",
        RazorSourceDocument source        = null,
        IntermediateNodeWriter nodeWriter = null)
    {
        var codeWriter   = new CodeWriter();
        var documentNode = new DocumentIntermediateNode();
        var options      = RazorCodeGenerationOptions.CreateDesignTimeDefault();

        if (source == null)
        {
            source = TestRazorSourceDocument.Create();
        }

        var codeDocument = RazorCodeDocument.Create(source);

        if (newLineString != null)
        {
            codeDocument.Items[CodeRenderingContext.NewLineString] = newLineString;
        }

        if (suppressUniqueIds != null)
        {
            codeDocument.Items[CodeRenderingContext.SuppressUniqueIds] = suppressUniqueIds;
        }

        if (nodeWriter == null)
        {
            nodeWriter = new DesignTimeNodeWriter();
        }

        var context = new DefaultCodeRenderingContext(codeWriter, nodeWriter, codeDocument, documentNode, options);

        context.Visitor = new RenderChildrenVisitor(context);

        return(context);
    }
    public override void RenderChildren(IntermediateNode node, IntermediateNodeWriter writer)
    {
        if (node == null)
        {
            throw new ArgumentNullException(nameof(node));
        }

        if (writer == null)
        {
            throw new ArgumentNullException(nameof(writer));
        }

        _scopes.Add(new ScopeInternal(writer));
        _ancestors.Push(node);

        for (var i = 0; i < node.Children.Count; i++)
        {
            Visitor.Visit(node.Children[i]);
        }

        _ancestors.Pop();
        _scopes.RemoveAt(_scopes.Count - 1);
    }
Пример #5
0
 public abstract void RenderChildren(IntermediateNode node, IntermediateNodeWriter writer);
Пример #6
0
 public abstract void RenderNode(IntermediateNode node, IntermediateNodeWriter writer);
 public Walker(TextWriter writer)
 {
     _visitor = new IntermediateNodeWriter(writer);
     _writer  = writer;
 }
 public ScopeInternal(IntermediateNodeWriter writer)
 {
     Writer = writer;
 }
    public DefaultCodeRenderingContext(
        CodeWriter codeWriter,
        IntermediateNodeWriter nodeWriter,
        RazorCodeDocument codeDocument,
        DocumentIntermediateNode documentNode,
        RazorCodeGenerationOptions options)
    {
        if (codeWriter == null)
        {
            throw new ArgumentNullException(nameof(codeWriter));
        }

        if (nodeWriter == null)
        {
            throw new ArgumentNullException(nameof(nodeWriter));
        }

        if (codeDocument == null)
        {
            throw new ArgumentNullException(nameof(codeDocument));
        }

        if (documentNode == null)
        {
            throw new ArgumentNullException(nameof(documentNode));
        }

        if (options == null)
        {
            throw new ArgumentNullException(nameof(options));
        }

        CodeWriter    = codeWriter;
        _codeDocument = codeDocument;
        _documentNode = documentNode;
        Options       = options;

        _ancestors     = new Stack <IntermediateNode>();
        Diagnostics    = new RazorDiagnosticCollection();
        Items          = new ItemCollection();
        SourceMappings = new List <SourceMapping>();
        LinePragmas    = new List <LinePragma>();

        var diagnostics = _documentNode.GetAllDiagnostics();

        for (var i = 0; i < diagnostics.Count; i++)
        {
            Diagnostics.Add(diagnostics[i]);
        }

        var newLineString = codeDocument.Items[NewLineString];

        if (newLineString != null)
        {
            // Set new line character to a specific string regardless of platform, for testing purposes.
            codeWriter.NewLine = (string)newLineString;
        }

        Items[NewLineString]     = codeDocument.Items[NewLineString];
        Items[SuppressUniqueIds] = codeDocument.Items[SuppressUniqueIds];

        _scopes = new List <ScopeInternal>();
        _scopes.Add(new ScopeInternal(nodeWriter));
    }