示例#1
0
 public ClassifiedSpanInternal(SourceSpan span, SourceSpan blockSpan, SpanKindInternal spanKind, BlockKindInternal blockKind, AcceptedCharactersInternal acceptedCharacters)
 {
     Span               = span;
     BlockSpan          = blockSpan;
     SpanKind           = spanKind;
     BlockKind          = blockKind;
     AcceptedCharacters = acceptedCharacters;
 }
示例#2
0
        internal void ImplicitExpressionTest(string input, string expected, AcceptedCharactersInternal acceptedCharacters, params RazorDiagnostic[] errors)
        {
            var factory = CreateSpanFactory();

            ParseBlockTest(SyntaxConstants.TransitionString + input,
                           new ExpressionBlock(
                               factory.CodeTransition(),
                               factory.Code(expected)
                               .AsImplicitExpression(KeywordSet)
                               .Accepts(acceptedCharacters)),
                           errors);
        }
示例#3
0
        public static void RunSingleAtEscapeTest(Action <string, Block> testMethod, AcceptedCharactersInternal lastSpanAcceptedCharacters = AcceptedCharactersInternal.None)
        {
            var factory = new SpanFactory();

            testMethod("<foo>@@bar</foo>",
                       new MarkupBlock(
                           new MarkupTagBlock(
                               factory.Markup("<foo>").Accepts(lastSpanAcceptedCharacters)),
                           factory.Markup("@").Hidden(),
                           factory.Markup("@bar"),
                           new MarkupTagBlock(
                               factory.Markup("</foo>").Accepts(lastSpanAcceptedCharacters))));
        }
示例#4
0
        public Block EscapedMarkupTagBlock(
            string prefix,
            string suffix,
            AcceptedCharactersInternal acceptedCharacters,
            params SyntaxTreeNode[] children)
        {
            var newChildren = new List <SyntaxTreeNode>(
                new SyntaxTreeNode[]
            {
                _factory.Markup(prefix),
                _factory.BangEscape(),
                _factory.Markup(suffix).Accepts(acceptedCharacters)
            });

            newChildren.AddRange(children);

            return(new MarkupTagBlock(newChildren.ToArray()));
        }
示例#5
0
        public static void RunMultiAtEscapeTest(Action <string, Block> testMethod, AcceptedCharactersInternal lastSpanAcceptedCharacters = AcceptedCharactersInternal.None)
        {
            var factory = new SpanFactory();

            testMethod("<foo>@@@@@bar</foo>",
                       new MarkupBlock(
                           new MarkupTagBlock(
                               factory.Markup("<foo>").Accepts(lastSpanAcceptedCharacters)),
                           factory.Markup("@").Hidden(),
                           factory.Markup("@"),
                           factory.Markup("@").Hidden(),
                           factory.Markup("@"),
                           new ExpressionBlock(
                               factory.CodeTransition(),
                               factory.Code("bar")
                               .AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
                               .Accepts(AcceptedCharactersInternal.NonWhiteSpace)),
                           new MarkupTagBlock(
                               factory.Markup("</foo>").Accepts(lastSpanAcceptedCharacters))));
        }
示例#6
0
 public static SpanConstructor Accepts(this SpanConstructor self, AcceptedCharactersInternal accepted)
 {
     return(self.With(eh => eh.AcceptedCharacters = accepted));
 }
示例#7
0
 internal override void SingleSpanBlockTest(string document, BlockKindInternal blockKind, SpanKindInternal spanType, AcceptedCharactersInternal acceptedCharacters, params RazorDiagnostic[] expectedError)
 {
     SingleSpanBlockTest(document, document, blockKind, spanType, acceptedCharacters, 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 void ImplicitExpressionTest(string input, AcceptedCharactersInternal acceptedCharacters, params RazorDiagnostic[] errors)
 {
     ImplicitExpressionTest(input, input, acceptedCharacters, errors);
 }
示例#10
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);
 }
示例#11
0
 internal void ImplicitExpressionTest(string input, string expected, AcceptedCharactersInternal acceptedCharacters, params RazorDiagnostic[] errors)
 {
     ParseBlockTest(SyntaxConstants.TransitionString + input);
 }
示例#12
0
 public AutoCompleteEditHandler(Func <string, IEnumerable <ISymbol> > tokenizer, AcceptedCharactersInternal accepted)
     : base(tokenizer, accepted)
 {
 }
 protected internal void Output(AcceptedCharactersInternal accepts, SyntaxKind syntaxKind = SyntaxKind.Unknown)
 {
     Configure(null, accepts);
     Output(syntaxKind);
 }
示例#14
0
 internal virtual void SingleSpanBlockTest(string document, BlockKindInternal blockKind, SpanKindInternal spanType, AcceptedCharactersInternal acceptedCharacters = AcceptedCharactersInternal.Any)
 {
     SingleSpanBlockTest(document, blockKind, spanType, acceptedCharacters, expectedError: null);
 }
示例#15
0
 public AutoCompleteEditHandler(Func <string, IEnumerable <Syntax.InternalSyntax.SyntaxToken> > tokenizer, AcceptedCharactersInternal accepted)
     : base(tokenizer, accepted)
 {
 }
示例#16
0
 public SpanEditHandler(Func <string, IEnumerable <ISymbol> > tokenizer, AcceptedCharactersInternal accepted)
 {
     AcceptedCharacters = accepted;
     Tokenizer          = tokenizer;
 }
示例#17
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));
        }
示例#18
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());
            }
        }
示例#19
0
 internal virtual void SingleSpanBlockTest(string document, BlockKindInternal blockKind, SpanKindInternal spanType, AcceptedCharactersInternal acceptedCharacters, params RazorError[] expectedError)
 {
     SingleSpanBlockTest(document, document, blockKind, spanType, acceptedCharacters, expectedError);
 }
 protected internal void Output(SpanKindInternal kind, AcceptedCharactersInternal accepts, SyntaxKind syntaxKind = SyntaxKind.Unknown)
 {
     Configure(kind, accepts);
     Output(syntaxKind);
 }
示例#21
0
 protected internal void Output(SpanKindInternal kind, AcceptedCharactersInternal accepts)
 {
     Configure(kind, accepts);
     Output();
 }
示例#22
0
 private void RunRazorCommentBetweenClausesTest(string preComment, string postComment, AcceptedCharactersInternal acceptedCharacters = AcceptedCharactersInternal.Any)
 {
     ParseDocumentTest(preComment + "@* Foo *@ @* Bar *@" + postComment);
 }
示例#23
0
 protected internal void Output(AcceptedCharactersInternal accepts)
 {
     Configure(null, accepts);
     Output();
 }
示例#24
0
 public Block MarkupTagBlock(string content, AcceptedCharactersInternal acceptedCharacters)
 {
     return(new MarkupTagBlock(
                _factory.Markup(content).Accepts(acceptedCharacters)
                ));
 }
示例#25
0
 public SpanEditHandler(Func <string, IEnumerable <Syntax.InternalSyntax.SyntaxToken> > tokenizer, AcceptedCharactersInternal accepted)
 {
     AcceptedCharacters = accepted;
     Tokenizer          = tokenizer;
 }