예제 #1
0
 public MarkupBlock(
     BlockKindInternal BlockKind,
     IParentChunkGenerator chunkGenerator,
     IReadOnlyList <SyntaxTreeNode> children)
     : base(BlockKind, children, chunkGenerator)
 {
 }
예제 #2
0
 public ClassifiedSpanInternal(SourceSpan span, SourceSpan blockSpan, SpanKindInternal spanKind, BlockKindInternal blockKind, AcceptedCharactersInternal acceptedCharacters)
 {
     Span               = span;
     BlockSpan          = blockSpan;
     SpanKind           = spanKind;
     BlockKind          = blockKind;
     AcceptedCharacters = acceptedCharacters;
 }
예제 #3
0
        /// <summary>
        /// Starts a block of the specified type
        /// </summary>
        /// <param name="blockType">The type of the block to start</param>
        public IDisposable StartBlock(BlockKindInternal blockType)
        {
            var builder = new BlockBuilder()
            {
                Type = blockType
            };

            _blockStack.Push(builder);
            return(new DisposableAction(_endBlock));
        }
예제 #4
0
        internal virtual Block CreateSimpleBlockAndSpan(string spanContent, BlockKindInternal blockKind, SpanKindInternal spanType, AcceptedCharactersInternal acceptedCharacters = AcceptedCharactersInternal.Any)
        {
            var span = Factory.Span(spanType, spanContent, spanType == SpanKindInternal.Markup).Accepts(acceptedCharacters);
            var b    = new BlockBuilder()
            {
                Type = blockKind
            };

            return(ConfigureAndAddSpanToBlock(b, span));
        }
예제 #5
0
    public ClassifiedSpanVisitor(RazorSourceDocument source)
    {
        if (source is null)
        {
            throw new ArgumentNullException(nameof(source));
        }

        _source           = source;
        _spans            = new List <ClassifiedSpanInternal>();
        _currentBlockKind = BlockKindInternal.Markup;
    }
예제 #6
0
        private void WriteBlock <TNode>(TNode node, BlockKindInternal kind, Action <TNode> handler) where TNode : SyntaxNode
        {
            var previousBlock = _currentBlock;
            var previousKind  = _currentBlockKind;

            _currentBlock     = node;
            _currentBlockKind = kind;

            handler(node);

            _currentBlock     = previousBlock;
            _currentBlockKind = previousKind;
        }
예제 #7
0
 internal override void SingleSpanBlockTest(string document, BlockKindInternal blockKind, SpanKindInternal spanType, params RazorError[] expectedError)
 {
     SingleSpanBlockTest(document, document, blockKind, spanType, expectedError);
 }
예제 #8
0
        internal override void SingleSpanBlockTest(string document, string spanContent, BlockKindInternal blockKind, SpanKindInternal spanType, AcceptedCharactersInternal acceptedCharacters, params RazorDiagnostic[] expectedErrors)
        {
            var b = CreateSimpleBlockAndSpan(spanContent, blockKind, spanType, acceptedCharacters);

            ParseBlockTest(document, b, expectedErrors ?? new RazorDiagnostic[0]);
        }
예제 #9
0
 internal override void SingleSpanBlockTest(string document, BlockKindInternal blockKind, SpanKindInternal spanType, AcceptedCharactersInternal acceptedCharacters, params RazorDiagnostic[] expectedError)
 {
     SingleSpanBlockTest(document, document, blockKind, spanType, acceptedCharacters, expectedError);
 }
예제 #10
0
 internal override void SingleSpanBlockTest(string document, string spanContent, BlockKindInternal blockKind, SpanKindInternal spanType, params RazorDiagnostic[] expectedErrors)
 {
     SingleSpanBlockTest(document, spanContent, blockKind, spanType, AcceptedCharactersInternal.Any, expectedErrors ?? new RazorDiagnostic[0]);
 }
예제 #11
0
 internal override void SingleSpanBlockTest(string document, string spanContent, BlockKindInternal blockKind, SpanKindInternal spanType, AcceptedCharactersInternal acceptedCharacters = AcceptedCharactersInternal.Any)
 {
     SingleSpanBlockTest(document, spanContent, blockKind, spanType, acceptedCharacters, expectedErrors: null);
 }
예제 #12
0
 internal virtual void SingleSpanBlockTest(string document, BlockKindInternal blockKind, SpanKindInternal spanType, params RazorDiagnostic[] expectedError)
 {
     SingleSpanBlockTest(document, document, blockKind, spanType, expectedError);
 }
예제 #13
0
 public ClassifiedSpanVisitor(RazorSourceDocument source)
 {
     _source           = source;
     _spans            = new List <ClassifiedSpanInternal>();
     _currentBlockKind = BlockKindInternal.Markup;
 }
        internal virtual void SingleSpanDocumentTest(string document, BlockKindInternal blockKind, SpanKindInternal spanType)
        {
            var b = CreateSimpleBlockAndSpan(document, blockKind, spanType);

            ParseDocumentTest(document, b);
        }
예제 #15
0
 internal virtual void SingleSpanBlockTest(string document, BlockKindInternal blockKind, SpanKindInternal spanType, AcceptedCharactersInternal acceptedCharacters = AcceptedCharactersInternal.Any)
 {
     SingleSpanBlockTest(document, blockKind, spanType, acceptedCharacters, expectedError: null);
 }
예제 #16
0
        internal virtual void SingleSpanBlockTest(string document, string spanContent, BlockKindInternal blockKind, SpanKindInternal spanType, AcceptedCharactersInternal acceptedCharacters, params RazorError[] expectedErrors)
        {
            var result = ParseBlock(document, designTime: false);

            var builder = new BlockBuilder();

            builder.Type = blockKind;
            var expected = ConfigureAndAddSpanToBlock(builder, Factory.Span(spanType, spanContent, spanType == SpanKindInternal.Markup).Accepts(acceptedCharacters));

            if (FixupSpans)
            {
                SpancestryCorrector.Correct(expected);

                var span = expected.FindFirstDescendentSpan();
                span.ChangeStart(SourceLocation.Zero);
            }

            SyntaxTreeVerifier.Verify(result);
            SyntaxTreeVerifier.Verify(expected);

            if (!ReferenceEquals(expected, IgnoreOutput))
            {
                EvaluateResults(result, expected, expectedErrors?.Select(error => RazorDiagnostic.Create(error)).ToList());
            }
        }
예제 #17
0
 internal virtual void SingleSpanBlockTest(string document, BlockKindInternal blockKind, SpanKindInternal spanType, AcceptedCharactersInternal acceptedCharacters, params RazorError[] expectedError)
 {
     SingleSpanBlockTest(document, document, blockKind, spanType, acceptedCharacters, expectedError);
 }