Api Cleanup for language services

Created internal + public versions of
- BlockKind
- SpanKind
- AcceptedCharacters

That way these types are only exposed through the VS apis and not
through the runtime API surface.

Also deleted RazorEditorParser. Yep. It's going to take significant work
to just port it to the language services assembly. Let's reevaluate this
when we get closer to the next foundational update.
This commit is contained in:
Ryan Nowak 2017-05-17 22:02:08 -07:00
parent 94aaa3db9e
commit 5a1090f324
69 changed files with 1817 additions and 4477 deletions

View File

@ -54,7 +54,7 @@ namespace Microsoft.AspNetCore.Razor.Language
{
if (_nestedLevel > 0)
{
var directiveStart = block.Children.First(child => !child.IsBlock && ((Span)child).Kind == SpanKind.Transition).Start;
var directiveStart = block.Children.First(child => !child.IsBlock && ((Span)child).Kind == SpanKindInternal.Transition).Start;
var errorLength = /* @ */ 1 + CSharpCodeParser.SectionDirectiveDescriptor.Name.Length;
_errorSink.OnError(
directiveStart,

View File

@ -0,0 +1,22 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
[Flags]
internal enum AcceptedCharactersInternal
{
None = 0,
NewLine = 1,
WhiteSpace = 2,
NonWhiteSpace = 4,
AllWhiteSpace = NewLine | WhiteSpace,
Any = AllWhiteSpace | NonWhiteSpace,
AnyExceptNewline = NonWhiteSpace | WhiteSpace
}
}

View File

@ -22,7 +22,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
AutoCompleteAtEndOfSpan = autoCompleteAtEndOfSpan;
}
public AutoCompleteEditHandler(Func<string, IEnumerable<ISymbol>> tokenizer, AcceptedCharacters accepted)
public AutoCompleteEditHandler(Func<string, IEnumerable<ISymbol>> tokenizer, AcceptedCharactersInternal accepted)
: base(tokenizer, accepted)
{
}

View File

@ -1,447 +0,0 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Threading;
namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
internal class BackgroundParser : IDisposable
{
private MainThreadState _main;
private BackgroundThread _bg;
public BackgroundParser(RazorTemplateEngine templateEngine, string fileName)
{
_main = new MainThreadState(fileName);
_bg = new BackgroundThread(_main, templateEngine, fileName);
_main.ResultsReady += (sender, args) => OnResultsReady(args);
}
/// <summary>
/// Fired on the main thread.
/// </summary>
public event EventHandler<DocumentParseCompleteEventArgs> ResultsReady;
public bool IsIdle
{
get { return _main.IsIdle; }
}
public void Start()
{
_bg.Start();
}
public void Cancel()
{
_main.Cancel();
}
#pragma warning disable CS0612 // Type or member is obsolete
public void QueueChange(TextChange change)
#pragma warning restore CS0612 // Type or member is obsolete
{
_main.QueueChange(change);
}
public void Dispose()
{
_main.Cancel();
}
public IDisposable SynchronizeMainThreadState()
{
return _main.Lock();
}
protected virtual void OnResultsReady(DocumentParseCompleteEventArgs args)
{
var handler = ResultsReady;
if (handler != null)
{
handler(this, args);
}
}
#pragma warning disable CS0612 // Type or member is obsolete
internal static bool TreesAreDifferent(RazorSyntaxTree leftTree, RazorSyntaxTree rightTree, IEnumerable<TextChange> changes, CancellationToken cancelToken)
#pragma warning restore CS0612 // Type or member is obsolete
{
return TreesAreDifferent(leftTree.Root, rightTree.Root, changes, cancelToken);
}
#pragma warning disable CS0612 // Type or member is obsolete
internal static bool TreesAreDifferent(Block leftTree, Block rightTree, IEnumerable<TextChange> changes)
#pragma warning restore CS0612 // Type or member is obsolete
{
return TreesAreDifferent(leftTree, rightTree, changes, CancellationToken.None);
}
#pragma warning disable CS0612 // Type or member is obsolete
internal static bool TreesAreDifferent(Block leftTree, Block rightTree, IEnumerable<TextChange> changes, CancellationToken cancelToken)
#pragma warning restore CS0612 // Type or member is obsolete
{
// Apply all the pending changes to the original tree
// PERF: If this becomes a bottleneck, we can probably do it the other way around,
// i.e. visit the tree and find applicable changes for each node.
#pragma warning disable CS0612 // Type or member is obsolete
foreach (var change in changes)
#pragma warning restore CS0612 // Type or member is obsolete
{
cancelToken.ThrowIfCancellationRequested();
var sourceChange = change.AsSourceChange();
var changeOwner = leftTree.LocateOwner(sourceChange);
// Apply the change to the tree
if (changeOwner == null)
{
return true;
}
var result = changeOwner.EditHandler.ApplyChange(changeOwner, sourceChange, force: true);
changeOwner.ReplaceWith(result.EditedSpan);
}
// Now compare the trees
var treesDifferent = !leftTree.EquivalentTo(rightTree);
return treesDifferent;
}
private abstract class ThreadStateBase
{
#if DEBUG
private int _id = -1;
#endif
protected ThreadStateBase()
{
}
[Conditional("DEBUG")]
protected void SetThreadId(int id)
{
#if DEBUG
_id = id;
#endif
}
[Conditional("DEBUG")]
protected void EnsureOnThread()
{
#if DEBUG
Debug.Assert(_id != -1, "SetThreadId was never called!");
Debug.Assert(Thread.CurrentThread.ManagedThreadId == _id, "Called from an unexpected thread!");
#endif
}
[Conditional("DEBUG")]
protected void EnsureNotOnThread()
{
#if DEBUG
Debug.Assert(_id != -1, "SetThreadId was never called!");
Debug.Assert(Thread.CurrentThread.ManagedThreadId != _id, "Called from an unexpected thread!");
#endif
}
}
private class MainThreadState : ThreadStateBase, IDisposable
{
private readonly CancellationTokenSource _cancelSource = new CancellationTokenSource();
private readonly ManualResetEventSlim _hasParcel = new ManualResetEventSlim(false);
private CancellationTokenSource _currentParcelCancelSource;
private string _fileName;
private readonly object _stateLock = new object();
#pragma warning disable CS0612 // Type or member is obsolete
private IList<TextChange> _changes = new List<TextChange>();
#pragma warning restore CS0612 // Type or member is obsolete
public MainThreadState(string fileName)
{
_fileName = fileName;
SetThreadId(Thread.CurrentThread.ManagedThreadId);
}
public event EventHandler<DocumentParseCompleteEventArgs> ResultsReady;
public CancellationToken CancelToken
{
get { return _cancelSource.Token; }
}
public bool IsIdle
{
get
{
lock (_stateLock)
{
return _currentParcelCancelSource == null;
}
}
}
public void Cancel()
{
EnsureOnThread();
_cancelSource.Cancel();
}
public IDisposable Lock()
{
Monitor.Enter(_stateLock);
return new DisposableAction(() => Monitor.Exit(_stateLock));
}
#pragma warning disable CS0612 // Type or member is obsolete
public void QueueChange(TextChange change)
#pragma warning restore CS0612 // Type or member is obsolete
{
EnsureOnThread();
lock (_stateLock)
{
// CurrentParcel token source is not null ==> There's a parse underway
if (_currentParcelCancelSource != null)
{
_currentParcelCancelSource.Cancel();
}
_changes.Add(change);
_hasParcel.Set();
}
}
public WorkParcel GetParcel()
{
EnsureNotOnThread(); // Only the background thread can get a parcel
_hasParcel.Wait(_cancelSource.Token);
_hasParcel.Reset();
lock (_stateLock)
{
// Create a cancellation source for this parcel
_currentParcelCancelSource = new CancellationTokenSource();
var changes = _changes;
#pragma warning disable CS0612 // Type or member is obsolete
_changes = new List<TextChange>();
#pragma warning restore CS0612 // Type or member is obsolete
return new WorkParcel(changes, _currentParcelCancelSource.Token);
}
}
public void ReturnParcel(DocumentParseCompleteEventArgs args)
{
lock (_stateLock)
{
// Clear the current parcel cancellation source
if (_currentParcelCancelSource != null)
{
_currentParcelCancelSource.Dispose();
_currentParcelCancelSource = null;
}
// If there are things waiting to be parsed, just don't fire the event because we're already out of date
if (_changes.Any())
{
return;
}
}
var handler = ResultsReady;
if (handler != null)
{
handler(this, args);
}
}
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
if (disposing)
{
if (_currentParcelCancelSource != null)
{
_currentParcelCancelSource.Dispose();
_currentParcelCancelSource = null;
}
_cancelSource.Dispose();
_hasParcel.Dispose();
}
}
}
private class BackgroundThread : ThreadStateBase
{
private MainThreadState _main;
private Thread _backgroundThread;
private CancellationToken _shutdownToken;
private RazorTemplateEngine _templateEngine;
private string _fileName;
private RazorSyntaxTree _currentSyntaxTree;
#pragma warning disable CS0612 // Type or member is obsolete
private IList<TextChange> _previouslyDiscarded = new List<TextChange>();
#pragma warning restore CS0612 // Type or member is obsolete
public BackgroundThread(MainThreadState main, RazorTemplateEngine templateEngine, string fileName)
{
// Run on MAIN thread!
_main = main;
_shutdownToken = _main.CancelToken;
_templateEngine = templateEngine;
_fileName = fileName;
_backgroundThread = new Thread(WorkerLoop);
SetThreadId(_backgroundThread.ManagedThreadId);
}
// **** ANY THREAD ****
public void Start()
{
_backgroundThread.Start();
}
// **** BACKGROUND THREAD ****
private void WorkerLoop()
{
var fileNameOnly = Path.GetFileName(_fileName);
try
{
EnsureOnThread();
#if NETSTANDARD1_3
var spinWait = new SpinWait();
#endif
while (!_shutdownToken.IsCancellationRequested)
{
// Grab the parcel of work to do
var parcel = _main.GetParcel();
if (parcel.Changes.Any())
{
try
{
DocumentParseCompleteEventArgs args = null;
using (var linkedCancel = CancellationTokenSource.CreateLinkedTokenSource(_shutdownToken, parcel.CancelToken))
{
if (!linkedCancel.IsCancellationRequested)
{
// Collect ALL changes
#pragma warning disable CS0612 // Type or member is obsolete
List<TextChange> allChanges;
#pragma warning restore CS0612 // Type or member is obsolete
if (_previouslyDiscarded != null)
{
allChanges = Enumerable.Concat(_previouslyDiscarded, parcel.Changes).ToList();
}
else
{
allChanges = parcel.Changes.ToList();
}
var finalChange = allChanges.Last();
var results = ParseChange(finalChange.NewBuffer, linkedCancel.Token);
if (results != null && !linkedCancel.IsCancellationRequested)
{
// Clear discarded changes list
_previouslyDiscarded = null;
var treeStructureChanged = _currentSyntaxTree == null || TreesAreDifferent(_currentSyntaxTree, results.GetSyntaxTree(), allChanges, parcel.CancelToken);
_currentSyntaxTree = results.GetSyntaxTree();
// Build Arguments
args = new DocumentParseCompleteEventArgs()
{
GeneratorResults = results,
SourceChange = finalChange,
TreeStructureChanged = treeStructureChanged
};
}
else
{
// Parse completed but we were cancelled in the mean time. Add these to the discarded changes set
_previouslyDiscarded = allChanges;
}
}
}
if (args != null)
{
_main.ReturnParcel(args);
}
}
catch (OperationCanceledException)
{
}
}
else
{
#if NETSTANDARD1_3
// This does the equivalent of thread.yield under the covers.
spinWait.SpinOnce();
#else
// No Yield in CoreCLR
Thread.Yield();
#endif
}
}
}
catch (OperationCanceledException)
{
// Do nothing. Just shut down.
}
finally
{
// Clean up main thread resources
_main.Dispose();
}
}
private RazorCodeDocument ParseChange(ITextBuffer buffer, CancellationToken token)
{
EnsureOnThread();
// Seek the buffer to the beginning
buffer.Position = 0;
var sourceDocument = LegacySourceDocument.Create(buffer, _fileName);
var imports = _templateEngine.GetImports(_fileName);
var codeDocument = RazorCodeDocument.Create(sourceDocument, imports);
_templateEngine.GenerateCode(codeDocument);
return codeDocument;
}
}
private class WorkParcel
{
#pragma warning disable CS0612 // Type or member is obsolete
public WorkParcel(IList<TextChange> changes, CancellationToken cancelToken)
#pragma warning restore CS0612 // Type or member is obsolete
{
Changes = changes;
CancelToken = cancelToken;
}
public CancellationToken CancelToken { get; private set; }
#pragma warning disable CS0612 // Type or member is obsolete
public IList<TextChange> Changes { get; private set; }
#pragma warning restore CS0612 // Type or member is obsolete
}
}
}
#pragma warning restore CS0618

View File

@ -17,7 +17,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
source.Reset();
}
protected Block(BlockKind? type, IReadOnlyList<SyntaxTreeNode> children, IParentChunkGenerator generator)
protected Block(BlockKindInternal? type, IReadOnlyList<SyntaxTreeNode> children, IParentChunkGenerator generator)
{
if (type == null)
{
@ -36,7 +36,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
}
public IParentChunkGenerator ChunkGenerator { get; }
public BlockKind Type { get; }
public BlockKindInternal Type { get; }
public IReadOnlyList<SyntaxTreeNode> Children { get; }

View File

@ -21,7 +21,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
public IParentChunkGenerator ChunkGenerator { get; set; }
public BlockKind? Type { get; set; }
public BlockKindInternal? Type { get; set; }
public List<SyntaxTreeNode> Children { get; private set; }

View File

@ -0,0 +1,24 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
public enum BlockKindInternal
{
// Code
Statement,
Directive,
Functions,
Expression,
Helper,
// Markup
Markup,
Section,
Template,
// Special
Comment,
Tag
}
}

View File

@ -190,7 +190,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Span.Start = CurrentLocation;
// Unless changed, the block is a statement block
using (Context.Builder.StartBlock(BlockKind.Statement))
using (Context.Builder.StartBlock(BlockKindInternal.Statement))
{
NextToken();
@ -218,7 +218,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
if (Span.Symbols.Count > 0)
{
Output(SpanKind.Code);
Output(SpanKindInternal.Code);
}
AtTransition(current);
}
@ -228,7 +228,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
AfterTransition();
}
Output(SpanKind.Code);
Output(SpanKindInternal.Code);
}
}
}
@ -243,11 +243,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
Debug.Assert(current.Type == CSharpSymbolType.Transition);
Accept(current);
Span.EditHandler.AcceptedCharacters = AcceptedCharacters.None;
Span.EditHandler.AcceptedCharacters = AcceptedCharactersInternal.None;
Span.ChunkGenerator = SpanChunkGenerator.Null;
// Output the "@" span and continue here
Output(SpanKind.Transition);
Output(SpanKindInternal.Transition);
AfterTransition();
}
@ -263,7 +263,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
if (CurrentSymbol.Type == CSharpSymbolType.LeftParenthesis)
{
Context.Builder.CurrentBlock.Type = BlockKind.Expression;
Context.Builder.CurrentBlock.Type = BlockKindInternal.Expression;
Context.Builder.CurrentBlock.ChunkGenerator = new ExpressionChunkGenerator();
ExplicitExpression();
return;
@ -290,7 +290,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
CurrentSymbol.Content.Length);
}
Context.Builder.CurrentBlock.Type = BlockKind.Expression;
Context.Builder.CurrentBlock.Type = BlockKindInternal.Expression;
Context.Builder.CurrentBlock.ChunkGenerator = new ExpressionChunkGenerator();
ImplicitExpression();
return;
@ -318,7 +318,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
}
// Invalid character
Context.Builder.CurrentBlock.Type = BlockKind.Expression;
Context.Builder.CurrentBlock.Type = BlockKindInternal.Expression;
Context.Builder.CurrentBlock.ChunkGenerator = new ExpressionChunkGenerator();
AddMarkerSymbolIfNecessary();
Span.ChunkGenerator = new ExpressionChunkGenerator();
@ -327,7 +327,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
CurrentKeywords,
acceptTrailingDot: IsNested)
{
AcceptedCharacters = AcceptedCharacters.NonWhiteSpace
AcceptedCharacters = AcceptedCharactersInternal.NonWhiteSpace
};
if (At(CSharpSymbolType.WhiteSpace) || At(CSharpSymbolType.NewLine))
{
@ -367,9 +367,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
AcceptAndMoveNext();
// Set up the "{" span and output
Span.EditHandler.AcceptedCharacters = AcceptedCharacters.None;
Span.EditHandler.AcceptedCharacters = AcceptedCharactersInternal.None;
Span.ChunkGenerator = SpanChunkGenerator.Null;
Output(SpanKind.MetaCode);
Output(SpanKindInternal.MetaCode);
// Set up auto-complete and parse the code block
var editHandler = new AutoCompleteEditHandler(Language.TokenizeString);
@ -382,12 +382,12 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
editHandler.AutoCompleteString = "}";
}
Output(SpanKind.Code);
Output(SpanKindInternal.Code);
if (Optional(CSharpSymbolType.RightBrace))
{
// Set up the "}" span
Span.EditHandler.AcceptedCharacters = AcceptedCharacters.None;
Span.EditHandler.AcceptedCharacters = AcceptedCharactersInternal.None;
Span.ChunkGenerator = SpanChunkGenerator.Null;
}
@ -401,24 +401,24 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
}
}
Output(SpanKind.MetaCode);
Output(SpanKindInternal.MetaCode);
}
private void ImplicitExpression()
{
ImplicitExpression(AcceptedCharacters.NonWhiteSpace);
ImplicitExpression(AcceptedCharactersInternal.NonWhiteSpace);
}
// Async implicit expressions include the "await" keyword and therefore need to allow spaces to
// separate the "await" and the following code.
private void AsyncImplicitExpression()
{
ImplicitExpression(AcceptedCharacters.AnyExceptNewline);
ImplicitExpression(AcceptedCharactersInternal.AnyExceptNewline);
}
private void ImplicitExpression(AcceptedCharacters acceptedCharacters)
private void ImplicitExpression(AcceptedCharactersInternal acceptedCharacters)
{
Context.Builder.CurrentBlock.Type = BlockKind.Expression;
Context.Builder.CurrentBlock.Type = BlockKindInternal.Expression;
Context.Builder.CurrentBlock.ChunkGenerator = new ExpressionChunkGenerator();
using (PushSpanConfig(span =>
@ -441,11 +441,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
while (MethodCallOrArrayIndex(acceptedCharacters));
PutCurrentBack();
Output(SpanKind.Code);
Output(SpanKindInternal.Code);
}
}
private bool MethodCallOrArrayIndex(AcceptedCharacters acceptedCharacters)
private bool MethodCallOrArrayIndex(AcceptedCharactersInternal acceptedCharacters)
{
if (!EndOfFile)
{
@ -453,7 +453,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
CurrentSymbol.Type == CSharpSymbolType.LeftBracket)
{
// If we end within "(", whitespace is fine
Span.EditHandler.AcceptedCharacters = AcceptedCharacters.Any;
Span.EditHandler.AcceptedCharacters = AcceptedCharactersInternal.Any;
CSharpSymbolType right;
bool success;
@ -461,7 +461,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
using (PushSpanConfig((span, prev) =>
{
prev(span);
span.EditHandler.AcceptedCharacters = AcceptedCharacters.Any;
span.EditHandler.AcceptedCharacters = AcceptedCharactersInternal.Any;
}))
{
right = Language.FlipBracket(CurrentSymbol.Type);
@ -555,7 +555,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
protected void CompleteBlock(bool insertMarkerIfNecessary, bool captureWhitespaceToEndOfLine)
{
if (insertMarkerIfNecessary && Context.Builder.LastAcceptedCharacters != AcceptedCharacters.Any)
if (insertMarkerIfNecessary && Context.Builder.LastAcceptedCharacters != AcceptedCharactersInternal.Any)
{
AddMarkerSymbolIfNecessary();
}
@ -565,7 +565,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
// Read whitespace, but not newlines
// If we're not inserting a marker span, we don't need to capture whitespace
if (!Context.WhiteSpaceIsSignificantToAncestorBlock &&
Context.Builder.CurrentBlock.Type != BlockKind.Expression &&
Context.Builder.CurrentBlock.Type != BlockKindInternal.Expression &&
captureWhitespaceToEndOfLine &&
!Context.DesignTimeMode &&
!IsNested)
@ -605,9 +605,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
var block = new Block(LegacyResources.BlockName_ExplicitExpression, CurrentStart);
Assert(CSharpSymbolType.LeftParenthesis);
AcceptAndMoveNext();
Span.EditHandler.AcceptedCharacters = AcceptedCharacters.None;
Span.EditHandler.AcceptedCharacters = AcceptedCharactersInternal.None;
Span.ChunkGenerator = SpanChunkGenerator.Null;
Output(SpanKind.MetaCode);
Output(SpanKindInternal.MetaCode);
using (PushSpanConfig(ConfigureExplicitExpressionSpan))
{
var success = Balance(
@ -634,30 +634,30 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
}
// Output the content span and then capture the ")"
Output(SpanKind.Code);
Output(SpanKindInternal.Code);
}
Optional(CSharpSymbolType.RightParenthesis);
if (!EndOfFile)
{
PutCurrentBack();
}
Span.EditHandler.AcceptedCharacters = AcceptedCharacters.None;
Span.EditHandler.AcceptedCharacters = AcceptedCharactersInternal.None;
Span.ChunkGenerator = SpanChunkGenerator.Null;
CompleteBlock(insertMarkerIfNecessary: false);
Output(SpanKind.MetaCode);
Output(SpanKindInternal.MetaCode);
}
private void Template()
{
if (Context.Builder.ActiveBlocks.Any(block => block.Type == BlockKind.Template))
if (Context.Builder.ActiveBlocks.Any(block => block.Type == BlockKindInternal.Template))
{
Context.ErrorSink.OnError(
CurrentStart,
LegacyResources.ParseError_InlineMarkup_Blocks_Cannot_Be_Nested,
length: 1 /* @ */);
}
Output(SpanKind.Code);
using (Context.Builder.StartBlock(BlockKind.Template))
Output(SpanKindInternal.Code);
using (Context.Builder.StartBlock(BlockKindInternal.Template))
{
Context.Builder.CurrentBlock.ChunkGenerator = new TemplateBlockChunkGenerator();
PutCurrentBack();
@ -677,7 +677,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
private void NestedBlock()
{
Output(SpanKind.Code);
Output(SpanKindInternal.Code);
var wasNested = IsNested;
IsNested = true;
@ -759,18 +759,18 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
LegacyResources.FormatParseError_ReservedWord(CurrentSymbol.Content),
CurrentSymbol.Content.Length);
AcceptAndMoveNext();
Span.EditHandler.AcceptedCharacters = AcceptedCharacters.None;
Span.EditHandler.AcceptedCharacters = AcceptedCharactersInternal.None;
Span.ChunkGenerator = SpanChunkGenerator.Null;
Context.Builder.CurrentBlock.Type = BlockKind.Directive;
Context.Builder.CurrentBlock.Type = BlockKindInternal.Directive;
CompleteBlock();
Output(SpanKind.MetaCode);
Output(SpanKindInternal.MetaCode);
}
private void KeywordBlock(bool topLevel)
{
HandleKeyword(topLevel, () =>
{
Context.Builder.CurrentBlock.Type = BlockKind.Expression;
Context.Builder.CurrentBlock.Type = BlockKindInternal.Expression;
Context.Builder.CurrentBlock.ChunkGenerator = new ExpressionChunkGenerator();
ImplicitExpression();
});
@ -799,7 +799,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
private void WhileClause()
{
Span.EditHandler.AcceptedCharacters = AcceptedCharacters.Any;
Span.EditHandler.AcceptedCharacters = AcceptedCharactersInternal.Any;
var whitespace = SkipToNextImportantToken();
if (At(CSharpKeyword.While))
@ -810,7 +810,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
AcceptWhile(IsSpacingToken(includeNewLines: true, includeComments: true));
if (AcceptCondition() && Optional(CSharpSymbolType.Semicolon))
{
Span.EditHandler.AcceptedCharacters = AcceptedCharacters.None;
Span.EditHandler.AcceptedCharacters = AcceptedCharactersInternal.None;
}
}
else
@ -858,7 +858,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
private void UsingDeclaration()
{
// Set block type to directive
Context.Builder.CurrentBlock.Type = BlockKind.Directive;
Context.Builder.CurrentBlock.Type = BlockKindInternal.Directive;
var start = CurrentStart;
if (At(CSharpSymbolType.Identifier))
@ -892,7 +892,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
NamespaceOrTypeName();
}
Span.EditHandler.AcceptedCharacters = AcceptedCharacters.AnyExceptNewline;
Span.EditHandler.AcceptedCharacters = AcceptedCharactersInternal.AnyExceptNewline;
Span.ChunkGenerator = new AddImportChunkGenerator(new LocationTagged<string>(
string.Concat(Span.Symbols.Skip(1).Select(s => s.Content)),
start));
@ -1028,7 +1028,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
// Return whitespace and end the block
PutCurrentBack();
PutBack(whitespace);
Span.EditHandler.AcceptedCharacters = AcceptedCharacters.Any;
Span.EditHandler.AcceptedCharacters = AcceptedCharactersInternal.Any;
}
}
@ -1049,7 +1049,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
// No else, return whitespace
PutCurrentBack();
PutBack(whitespace);
Span.EditHandler.AcceptedCharacters = AcceptedCharacters.Any;
Span.EditHandler.AcceptedCharacters = AcceptedCharactersInternal.Any;
}
}
@ -1190,7 +1190,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
private void Statement(Block block)
{
Span.EditHandler.AcceptedCharacters = AcceptedCharacters.Any;
Span.EditHandler.AcceptedCharacters = AcceptedCharactersInternal.Any;
// Accept whitespace but always keep the last whitespace node so we can put it back if necessary
var lastWhitespace = AcceptWhiteSpaceInLines();
@ -1249,7 +1249,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
}
// Markup block
Output(SpanKind.Code);
Output(SpanKindInternal.Code);
if (Context.DesignTimeMode && CurrentSymbol != null &&
(CurrentSymbol.Type == CSharpSymbolType.LessThan || CurrentSymbol.Type == CSharpSymbolType.Transition))
{
@ -1269,7 +1269,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
switch (type)
{
case CSharpSymbolType.RazorCommentTransition:
Output(SpanKind.Code);
Output(SpanKindInternal.Code);
RazorComment();
Statement(block);
break;
@ -1310,12 +1310,12 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
if (At(CSharpSymbolType.Transition))
{
// Escaped "@"
Output(SpanKind.Code);
Output(SpanKindInternal.Code);
// Output "@" as hidden span
Accept(transition);
Span.ChunkGenerator = SpanChunkGenerator.Null;
Output(SpanKind.Code);
Output(SpanKindInternal.Code);
Assert(CSharpSymbolType.Transition);
AcceptAndMoveNext();
@ -1376,7 +1376,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
else if (At(CSharpSymbolType.Transition) && (NextIs(CSharpSymbolType.LessThan, CSharpSymbolType.Colon)))
{
Accept(read);
Output(SpanKind.Code);
Output(SpanKindInternal.Code);
Template();
}
else if (At(CSharpSymbolType.RazorCommentTransition))
@ -1430,7 +1430,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
else if (acceptTerminatingBrace)
{
Assert(CSharpSymbolType.RightBrace);
Span.EditHandler.AcceptedCharacters = AcceptedCharacters.None;
Span.EditHandler.AcceptedCharacters = AcceptedCharactersInternal.None;
AcceptAndMoveNext();
}
}
@ -1456,7 +1456,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
if (At(CSharpSymbolType.RazorCommentTransition))
{
Accept(whitespace);
Span.EditHandler.AcceptedCharacters = AcceptedCharacters.Any;
Span.EditHandler.AcceptedCharacters = AcceptedCharactersInternal.Any;
RazorComment();
}
else
@ -1471,7 +1471,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
protected override void OutputSpanBeforeRazorComment()
{
AddMarkerSymbolIfNecessary();
Output(SpanKind.Code);
Output(SpanKindInternal.Code);
}
private void SetUpExpressions()
@ -1521,12 +1521,12 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
private void HandleDirective(DirectiveDescriptor descriptor)
{
Context.Builder.CurrentBlock.Type = BlockKind.Directive;
Context.Builder.CurrentBlock.Type = BlockKindInternal.Directive;
Context.Builder.CurrentBlock.ChunkGenerator = new DirectiveChunkGenerator(descriptor);
AssertDirective(descriptor.Name);
AcceptAndMoveNext();
Output(SpanKind.MetaCode, AcceptedCharacters.None);
Output(SpanKindInternal.MetaCode, AcceptedCharactersInternal.None);
for (var i = 0; i < descriptor.Tokens.Count; i++)
{
@ -1538,12 +1538,12 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
tokenDescriptor.Kind == DirectiveTokenKind.Type)
{
Span.ChunkGenerator = SpanChunkGenerator.Null;
Output(SpanKind.Code, AcceptedCharacters.WhiteSpace);
Output(SpanKindInternal.Code, AcceptedCharactersInternal.WhiteSpace);
}
else
{
Span.ChunkGenerator = SpanChunkGenerator.Null;
Output(SpanKind.Markup, AcceptedCharacters.WhiteSpace);
Output(SpanKindInternal.Markup, AcceptedCharactersInternal.WhiteSpace);
}
if (tokenDescriptor.Optional && (EndOfFile || At(CSharpSymbolType.NewLine)))
@ -1559,7 +1559,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
return;
}
var outputKind = SpanKind.Markup;
var outputKind = SpanKindInternal.Markup;
switch (tokenDescriptor.Kind)
{
case DirectiveTokenKind.Type:
@ -1573,7 +1573,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
return;
}
outputKind = SpanKind.Code;
outputKind = SpanKindInternal.Code;
break;
case DirectiveTokenKind.Namespace:
@ -1587,7 +1587,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
return;
}
outputKind = SpanKind.Code;
outputKind = SpanKindInternal.Code;
break;
case DirectiveTokenKind.Member:
@ -1604,7 +1604,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
return;
}
outputKind = SpanKind.Code;
outputKind = SpanKindInternal.Code;
break;
case DirectiveTokenKind.String:
@ -1624,7 +1624,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
}
Span.ChunkGenerator = new DirectiveTokenChunkGenerator(tokenDescriptor);
Output(outputKind, AcceptedCharacters.NonWhiteSpace);
Output(outputKind, AcceptedCharactersInternal.NonWhiteSpace);
}
AcceptWhile(IsSpacingToken(includeNewLines: false, includeComments: true));
@ -1648,11 +1648,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
CurrentSymbol.Content.Length);
}
Output(SpanKind.Markup, AcceptedCharacters.WhiteSpace);
Output(SpanKindInternal.Markup, AcceptedCharactersInternal.WhiteSpace);
break;
case DirectiveKind.RazorBlock:
AcceptWhile(IsSpacingToken(includeNewLines: true, includeComments: true));
Output(SpanKind.Markup, AcceptedCharacters.AllWhiteSpace);
Output(SpanKindInternal.Markup, AcceptedCharactersInternal.AllWhiteSpace);
ParseDirectiveBlock(descriptor, parseChildren: (startingBraceLocation) =>
{
@ -1677,14 +1677,14 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
break;
case DirectiveKind.CodeBlock:
AcceptWhile(IsSpacingToken(includeNewLines: true, includeComments: true));
Output(SpanKind.Markup, AcceptedCharacters.AllWhiteSpace);
Output(SpanKindInternal.Markup, AcceptedCharactersInternal.AllWhiteSpace);
ParseDirectiveBlock(descriptor, parseChildren: (startingBraceLocation) =>
{
NextToken();
Balance(BalancingModes.NoErrorOnFailure, CSharpSymbolType.LeftBrace, CSharpSymbolType.RightBrace, startingBraceLocation);
Span.ChunkGenerator = new StatementChunkGenerator();
Output(SpanKind.Code);
Output(SpanKindInternal.Code);
});
break;
}
@ -1713,7 +1713,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
var startingBraceLocation = CurrentStart;
Accept(CurrentSymbol);
Span.ChunkGenerator = SpanChunkGenerator.Null;
Output(SpanKind.MetaCode, AcceptedCharacters.None);
Output(SpanKindInternal.MetaCode, AcceptedCharactersInternal.None);
parseChildren(startingBraceLocation);
@ -1728,11 +1728,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
}
else
{
Span.EditHandler.AcceptedCharacters = AcceptedCharacters.None;
Span.EditHandler.AcceptedCharacters = AcceptedCharactersInternal.None;
}
CompleteBlock(insertMarkerIfNecessary: false, captureWhitespaceToEndOfLine: true);
Span.ChunkGenerator = SpanChunkGenerator.Null;
Output(SpanKind.MetaCode, AcceptedCharacters.None);
Output(SpanKindInternal.MetaCode, AcceptedCharactersInternal.None);
}
}
@ -1769,7 +1769,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
var keywordStartLocation = Span.Start;
// Set the block type
Context.Builder.CurrentBlock.Type = BlockKind.Directive;
Context.Builder.CurrentBlock.Type = BlockKindInternal.Directive;
var keywordLength = Span.End.AbsoluteIndex - Span.Start.AbsoluteIndex;
@ -1778,10 +1778,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
if (Span.Symbols.Count > 1)
{
Span.EditHandler.AcceptedCharacters = AcceptedCharacters.None;
Span.EditHandler.AcceptedCharacters = AcceptedCharactersInternal.None;
}
Output(SpanKind.MetaCode);
Output(SpanKindInternal.MetaCode);
if (remainingWhitespace != null)
{
@ -1814,7 +1814,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
// Output the span and finish the block
CompleteBlock();
Output(SpanKind.Code, AcceptedCharacters.AnyExceptNewline);
Output(SpanKindInternal.Code, AcceptedCharactersInternal.AnyExceptNewline);
}
private void TagHelperDirective(string keyword, Func<string, ISpanChunkGenerator> chunkGeneratorFactory)
@ -1826,7 +1826,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
AcceptAndMoveNext();
// Set the block type
Context.Builder.CurrentBlock.Type = BlockKind.Directive;
Context.Builder.CurrentBlock.Type = BlockKindInternal.Directive;
var keywordLength = Span.End.AbsoluteIndex - Span.Start.AbsoluteIndex;
@ -1835,7 +1835,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
// If we found whitespace then any content placed within the whitespace MAY cause a destructive change
// to the document. We can't accept it.
Output(SpanKind.MetaCode, foundWhitespace ? AcceptedCharacters.None : AcceptedCharacters.AnyExceptNewline);
Output(SpanKindInternal.MetaCode, foundWhitespace ? AcceptedCharactersInternal.None : AcceptedCharactersInternal.AnyExceptNewline);
ISpanChunkGenerator chunkGenerator;
if (EndOfFile || At(CSharpSymbolType.NewLine))
@ -1876,7 +1876,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
// Output the span and finish the block
CompleteBlock();
Output(SpanKind.Code, AcceptedCharacters.AnyExceptNewline);
Output(SpanKindInternal.Code, AcceptedCharactersInternal.AnyExceptNewline);
}
protected class Block

View File

@ -1,31 +0,0 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
/// <summary>
/// Arguments for the DocumentParseComplete event in RazorEditorParser
/// </summary>
public class DocumentParseCompleteEventArgs : EventArgs
{
/// <summary>
/// Indicates if the tree structure has actually changed since the previous re-parse.
/// </summary>
public bool TreeStructureChanged { get; set; }
/// <summary>
/// The result of the parsing and code generation.
/// </summary>
public RazorCodeDocument GeneratorResults { get; set; }
/// <summary>
/// The TextChange which triggered the re-parse
/// </summary>
#pragma warning disable CS0612 // Type or member is obsolete
public TextChange SourceChange { get; set; }
#pragma warning restore CS0612 // Type or member is obsolete
}
}

View File

@ -60,14 +60,14 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
public override void BuildSpan(SpanBuilder span, SourceLocation start, string content)
{
span.Kind = SpanKind.Markup;
span.Kind = SpanKindInternal.Markup;
span.ChunkGenerator = new MarkupChunkGenerator();
base.BuildSpan(span, start, content);
}
protected override void OutputSpanBeforeRazorComment()
{
Output(SpanKind.Markup);
Output(SpanKindInternal.Markup);
}
protected void SkipToAndParseCode(HtmlSymbolType type)
@ -91,7 +91,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
AcceptAndMoveNext();
}
Output(SpanKind.Markup);
Output(SpanKindInternal.Markup);
}
else if (At(HtmlSymbolType.NewLine))
{
@ -116,10 +116,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Accept(last);
last = null;
}
Output(SpanKind.Markup);
Output(SpanKindInternal.Markup);
Accept(transition);
Span.ChunkGenerator = SpanChunkGenerator.Null;
Output(SpanKind.Markup);
Output(SpanKindInternal.Markup);
AcceptAndMoveNext();
continue; // while
}
@ -161,7 +161,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
AddMarkerSymbolIfNecessary();
// Output the symbols that may have been accepted prior to the whitespace.
Output(SpanKind.Markup);
Output(SpanKindInternal.Markup);
Span.ChunkGenerator = SpanChunkGenerator.Null;
}
@ -171,7 +171,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
}
AddMarkerSymbolIfNecessary();
Output(SpanKind.Markup);
Output(SpanKindInternal.Markup);
RazorComment();
@ -183,7 +183,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
AcceptWhile(IsSpacingToken(includeNewLines: false));
AcceptAndMoveNext();
Span.ChunkGenerator = SpanChunkGenerator.Null;
Output(SpanKind.Markup);
Output(SpanKindInternal.Markup);
}
}
else
@ -218,7 +218,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
private void OtherParserBlock()
{
AddMarkerSymbolIfNecessary();
Output(SpanKind.Markup);
Output(SpanKindInternal.Markup);
using (PushSpanConfig())
{
@ -251,7 +251,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
if (IsBangEscape(lookahead: 0))
{
Output(SpanKind.Markup);
Output(SpanKindInternal.Markup);
// Accept the parser escape character '!'.
Assert(HtmlSymbolType.Bang);
@ -259,7 +259,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
// Setup the metacode span that we will be outputing.
Span.ChunkGenerator = SpanChunkGenerator.Null;
Output(SpanKind.MetaCode, AcceptedCharacters.None);
Output(SpanKindInternal.MetaCode, AcceptedCharactersInternal.None);
}
}
@ -272,7 +272,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
using (PushSpanConfig(DefaultMarkupSpan))
{
using (Context.Builder.StartBlock(BlockKind.Markup))
using (Context.Builder.StartBlock(BlockKindInternal.Markup))
{
Span.Start = CurrentLocation;
@ -291,19 +291,19 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
else if (CurrentSymbol.Type == HtmlSymbolType.Transition)
{
// "@" => Explicit Tag/Single Line Block OR Template
Output(SpanKind.Markup);
Output(SpanKindInternal.Markup);
// Definitely have a transition span
Assert(HtmlSymbolType.Transition);
AcceptAndMoveNext();
Span.EditHandler.AcceptedCharacters = AcceptedCharacters.None;
Span.EditHandler.AcceptedCharacters = AcceptedCharactersInternal.None;
Span.ChunkGenerator = SpanChunkGenerator.Null;
Output(SpanKind.Transition);
Output(SpanKindInternal.Transition);
if (At(HtmlSymbolType.Transition))
{
Span.ChunkGenerator = SpanChunkGenerator.Null;
AcceptAndMoveNext();
Output(SpanKind.MetaCode);
Output(SpanKindInternal.MetaCode);
}
AfterTransition();
}
@ -314,7 +314,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
LegacyResources.ParseError_MarkupBlock_Must_Start_With_Tag,
CurrentSymbol.Content.Length);
}
Output(SpanKind.Markup);
Output(SpanKindInternal.Markup);
}
}
}
@ -322,7 +322,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
private void DefaultMarkupSpan(SpanBuilder span)
{
span.ChunkGenerator = new MarkupChunkGenerator();
span.EditHandler = new SpanEditHandler(Language.TokenizeString, AcceptedCharacters.Any);
span.EditHandler = new SpanEditHandler(Language.TokenizeString, AcceptedCharactersInternal.Any);
}
private void AfterTransition()
@ -336,7 +336,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
// The first part (left) is added to this span and we return a MetaCode span
Accept(split.Item1);
Span.ChunkGenerator = SpanChunkGenerator.Null;
Output(SpanKind.MetaCode);
Output(SpanKindInternal.MetaCode);
if (split.Item2 != null)
{
Accept(split.Item2);
@ -361,11 +361,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
if (!EndOfFile && CurrentSymbol.Type == HtmlSymbolType.NewLine)
{
AcceptAndMoveNext();
Span.EditHandler.AcceptedCharacters = AcceptedCharacters.None;
Span.EditHandler.AcceptedCharacters = AcceptedCharactersInternal.None;
}
PutCurrentBack();
Context.WhiteSpaceIsSignificantToAncestorBlock = old;
Output(SpanKind.Markup);
Output(SpanKindInternal.Markup);
}
private void TagBlock(Stack<Tuple<HtmlSymbol, SourceLocation>> tags)
@ -377,7 +377,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
SkipToAndParseCode(HtmlSymbolType.OpenAngle);
// Output everything prior to the OpenAngle into a markup span
Output(SpanKind.Markup);
Output(SpanKindInternal.Markup);
// Do not want to start a new tag block if we're at the end of the file.
IDisposable tagBlockWrapper = null;
@ -388,7 +388,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
if (!EndOfFile && !atSpecialTag)
{
// Start a Block tag. This is used to wrap things like <p> or <a class="btn"> etc.
tagBlockWrapper = Context.Builder.StartBlock(BlockKind.Tag);
tagBlockWrapper = Context.Builder.StartBlock(BlockKindInternal.Tag);
}
if (EndOfFile)
@ -416,11 +416,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
if (complete)
{
// Completed tags have no accepted characters inside of blocks.
Span.EditHandler.AcceptedCharacters = AcceptedCharacters.None;
Span.EditHandler.AcceptedCharacters = AcceptedCharactersInternal.None;
}
// Output the contents of the tag into its own markup span.
Output(SpanKind.Markup);
Output(SpanKindInternal.Markup);
}
finally
{
@ -498,7 +498,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
AcceptAndMoveNext();
Span.EditHandler.AcceptedCharacters = AcceptedCharacters.Any;
Span.EditHandler.AcceptedCharacters = AcceptedCharactersInternal.Any;
while (!EndOfFile)
{
SkipToAndParseCode(HtmlSymbolType.DoubleHyphen);
@ -638,17 +638,17 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
LegacyResources.ParseError_TextTagCannotContainAttributes,
length: 4 /* text */);
Span.EditHandler.AcceptedCharacters = AcceptedCharacters.Any;
Span.EditHandler.AcceptedCharacters = AcceptedCharactersInternal.Any;
RecoverTextTag();
}
else
{
Span.EditHandler.AcceptedCharacters = AcceptedCharacters.None;
Span.EditHandler.AcceptedCharacters = AcceptedCharactersInternal.None;
}
Span.ChunkGenerator = SpanChunkGenerator.Null;
CompleteTagBlockWithSpan(tagBlockWrapper, Span.EditHandler.AcceptedCharacters, SpanKind.Transition);
CompleteTagBlockWithSpan(tagBlockWrapper, Span.EditHandler.AcceptedCharacters, SpanKindInternal.Transition);
return seenCloseAngle;
}
@ -765,13 +765,13 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
// Output anything prior to the attribute, in most cases this will be the tag name:
// |<input| checked />. If in-between other attributes this will noop or output malformed attribute
// content (if the previous attribute was malformed).
Output(SpanKind.Markup);
Output(SpanKindInternal.Markup);
using (Context.Builder.StartBlock(BlockKind.Markup))
using (Context.Builder.StartBlock(BlockKindInternal.Markup))
{
Accept(whitespace);
Accept(name);
Output(SpanKind.Markup);
Output(SpanKindInternal.Markup);
}
return;
@ -779,10 +779,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
// Not a minimized attribute, parse as if it were well-formed (if attribute turns out to be malformed we
// will go into recovery).
Output(SpanKind.Markup);
Output(SpanKindInternal.Markup);
// Start a new markup block for the attribute
using (Context.Builder.StartBlock(BlockKind.Markup))
using (Context.Builder.StartBlock(BlockKindInternal.Markup))
{
AttributePrefix(whitespace, name, whitespaceAfterAttributeName);
}
@ -828,7 +828,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
if (attributeCanBeConditional)
{
Span.ChunkGenerator = SpanChunkGenerator.Null; // The block chunk generator will render the prefix
Output(SpanKind.Markup);
Output(SpanKindInternal.Markup);
// Read the attribute value only if the value is quoted
// or if there is no whitespace between '=' and the unquoted value.
@ -853,7 +853,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
// Again, block chunk generator will render the suffix
Span.ChunkGenerator = SpanChunkGenerator.Null;
Output(SpanKind.Markup);
Output(SpanKindInternal.Markup);
}
// Create the block chunk generator
@ -863,7 +863,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
else
{
// Output the attribute name, the equals and optional quote. Ex: foo="
Output(SpanKind.Markup);
Output(SpanKindInternal.Markup);
if (quote == HtmlSymbolType.Unknown && whitespaceAfterEquals.Any())
{
@ -874,13 +874,13 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
SkipToAndParseCode(sym => IsEndOfAttributeValue(quote, sym));
// Output the attribute value (will include everything in-between the attribute's quotes).
Output(SpanKind.Markup);
Output(SpanKindInternal.Markup);
if (quote != HtmlSymbolType.Unknown)
{
Optional(quote);
}
Output(SpanKind.Markup);
Output(SpanKindInternal.Markup);
}
}
@ -894,7 +894,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
if (NextIs(HtmlSymbolType.Transition))
{
// Wrapping this in a block so that the ConditionalAttributeCollapser doesn't rewrite it.
using (Context.Builder.StartBlock(BlockKind.Markup))
using (Context.Builder.StartBlock(BlockKindInternal.Markup))
{
Accept(prefix);
@ -903,11 +903,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new LocationTagged<string>(string.Concat(prefix.Select(s => s.Content)), prefixStart),
new LocationTagged<string>(CurrentSymbol.Content, CurrentStart));
AcceptAndMoveNext();
Output(SpanKind.Markup, AcceptedCharacters.None);
Output(SpanKindInternal.Markup, AcceptedCharactersInternal.None);
Span.ChunkGenerator = SpanChunkGenerator.Null;
AcceptAndMoveNext();
Output(SpanKind.Markup, AcceptedCharacters.None);
Output(SpanKindInternal.Markup, AcceptedCharactersInternal.None);
}
}
else
@ -920,7 +920,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Span.ChunkGenerator = SpanChunkGenerator.Null;
// Dynamic value, start a new block and set the chunk generator
using (Context.Builder.StartBlock(BlockKind.Markup))
using (Context.Builder.StartBlock(BlockKindInternal.Markup))
{
Context.Builder.CurrentBlock.ChunkGenerator =
new DynamicAttributeBlockChunkGenerator(
@ -952,7 +952,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new LocationTagged<string>(string.Concat(prefix.Select(s => s.Content)), prefixStart),
new LocationTagged<string>(string.Concat(value.Select(s => s.Content)), valueStart));
}
Output(SpanKind.Markup);
Output(SpanKindInternal.Markup);
}
private bool IsEndOfAttributeValue(HtmlSymbolType quote, HtmlSymbol sym)
@ -1063,7 +1063,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
// <!text> tags are treated like any other escaped HTML start tag.
string.Equals(tag.Item1.Content, SyntaxConstants.TextTagName, StringComparison.OrdinalIgnoreCase))
{
Output(SpanKind.Markup);
Output(SpanKindInternal.Markup);
Span.ChunkGenerator = SpanChunkGenerator.Null;
Accept(_bufferedOpenAngle);
@ -1098,7 +1098,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
else
{
Accept(tokens);
Span.EditHandler.AcceptedCharacters = AcceptedCharacters.None;
Span.EditHandler.AcceptedCharacters = AcceptedCharactersInternal.None;
}
if (!empty)
@ -1106,7 +1106,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
tags.Push(tag);
}
CompleteTagBlockWithSpan(tagBlockWrapper, Span.EditHandler.AcceptedCharacters, SpanKind.Transition);
CompleteTagBlockWithSpan(tagBlockWrapper, Span.EditHandler.AcceptedCharacters, SpanKindInternal.Transition);
return true;
}
@ -1154,7 +1154,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
var tagName = tag.Item1.Content.Trim();
if (VoidElements.Contains(tagName))
{
CompleteTagBlockWithSpan(tagBlockWrapper, AcceptedCharacters.None, SpanKind.Markup);
CompleteTagBlockWithSpan(tagBlockWrapper, AcceptedCharactersInternal.None, SpanKindInternal.Markup);
// Technically, void elements like "meta" are not allowed to have end tags. Just in case they do,
// we need to look ahead at the next set of tokens. If we see "<", "/", tag name, accept it and the ">" following it
@ -1176,9 +1176,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
// Accept up to here
Accept(whiteSpace);
Output(SpanKind.Markup); // Output the whitespace
Output(SpanKindInternal.Markup); // Output the whitespace
using (Context.Builder.StartBlock(BlockKind.Tag))
using (Context.Builder.StartBlock(BlockKindInternal.Tag))
{
Accept(openAngle);
Accept(solidus);
@ -1191,11 +1191,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
if (complete)
{
Span.EditHandler.AcceptedCharacters = AcceptedCharacters.None;
Span.EditHandler.AcceptedCharacters = AcceptedCharactersInternal.None;
}
// Output the closing void element
Output(SpanKind.Markup);
Output(SpanKindInternal.Markup);
return complete;
}
@ -1210,9 +1210,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
if (!CurrentScriptTagExpectsHtml())
{
CompleteTagBlockWithSpan(tagBlockWrapper, AcceptedCharacters.None, SpanKind.Markup);
CompleteTagBlockWithSpan(tagBlockWrapper, AcceptedCharactersInternal.None, SpanKindInternal.Markup);
SkipToEndScriptAndParseCode(endTagAcceptedCharacters: AcceptedCharacters.None);
SkipToEndScriptAndParseCode(endTagAcceptedCharacters: AcceptedCharactersInternal.None);
}
else
{
@ -1230,7 +1230,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
return seenClose;
}
private void SkipToEndScriptAndParseCode(AcceptedCharacters endTagAcceptedCharacters = AcceptedCharacters.Any)
private void SkipToEndScriptAndParseCode(AcceptedCharactersInternal endTagAcceptedCharacters = AcceptedCharactersInternal.Any)
{
// Special case for <script>: Skip to end of script tag and parse code
var seenEndScript = false;
@ -1265,9 +1265,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
if (seenEndScript)
{
Output(SpanKind.Markup);
Output(SpanKindInternal.Markup);
using (Context.Builder.StartBlock(BlockKind.Tag))
using (Context.Builder.StartBlock(BlockKindInternal.Tag))
{
Span.EditHandler.AcceptedCharacters = endTagAcceptedCharacters;
@ -1281,7 +1281,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
LegacyResources.FormatParseError_UnfinishedTag(ScriptTagName),
ScriptTagName.Length);
}
Output(SpanKind.Markup);
Output(SpanKindInternal.Markup);
}
}
else
@ -1292,8 +1292,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
}
private void CompleteTagBlockWithSpan(IDisposable tagBlockWrapper,
AcceptedCharacters acceptedCharacters,
SpanKind spanKind)
AcceptedCharactersInternal acceptedCharacters,
SpanKindInternal spanKind)
{
Debug.Assert(tagBlockWrapper != null,
"Tag block wrapper should not be null when attempting to complete a block");
@ -1316,7 +1316,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
}
}
Debug.Assert(EndOfFile);
Span.EditHandler.AcceptedCharacters = AcceptedCharacters.Any;
Span.EditHandler.AcceptedCharacters = AcceptedCharactersInternal.Any;
return false;
}
@ -1366,14 +1366,14 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
}
else if (complete)
{
Span.EditHandler.AcceptedCharacters = AcceptedCharacters.None;
Span.EditHandler.AcceptedCharacters = AcceptedCharactersInternal.None;
}
tags.Clear();
if (!Context.DesignTimeMode)
{
var shouldAcceptWhitespaceAndNewLine = true;
if (Context.Builder.LastSpan.Kind == SpanKind.Transition)
if (Context.Builder.LastSpan.Kind == SpanKindInternal.Transition)
{
var symbols = ReadWhile(
f => (f.Type == HtmlSymbolType.WhiteSpace) || (f.Type == HtmlSymbolType.NewLine));
@ -1398,7 +1398,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Optional(HtmlSymbolType.NewLine);
}
}
else if (Span.EditHandler.AcceptedCharacters == AcceptedCharacters.Any)
else if (Span.EditHandler.AcceptedCharacters == AcceptedCharactersInternal.Any)
{
AcceptWhile(HtmlSymbolType.WhiteSpace);
Optional(HtmlSymbolType.NewLine);
@ -1409,7 +1409,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
AddMarkerSymbolIfNecessary();
}
Output(SpanKind.Markup);
Output(SpanKindInternal.Markup);
}
internal static bool IsValidAttributeNameSymbol(HtmlSymbol symbol)
@ -1444,7 +1444,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
using (PushSpanConfig(DefaultMarkupSpan))
{
using (Context.Builder.StartBlock(BlockKind.Markup))
using (Context.Builder.StartBlock(BlockKindInternal.Markup))
{
Span.Start = CurrentLocation;
@ -1455,7 +1455,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ScanTagInDocumentContext();
}
AddMarkerSymbolIfNecessary();
Output(SpanKind.Markup);
Output(SpanKindInternal.Markup);
}
}
}
@ -1488,10 +1488,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
return;
}
Output(SpanKind.Markup);
Output(SpanKindInternal.Markup);
// Start tag block
var tagBlock = Context.Builder.StartBlock(BlockKind.Tag);
var tagBlock = Context.Builder.StartBlock(BlockKindInternal.Tag);
AcceptAndMoveNext(); // Accept '<'
@ -1511,7 +1511,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
// the end script tag. Don't want to incorrectly parse a "var tag = '<input />';" as an HTML tag.
if (scriptTag && !CurrentScriptTagExpectsHtml())
{
Output(SpanKind.Markup);
Output(SpanKindInternal.Markup);
tagBlock.Dispose();
SkipToEndScriptAndParseCode();
@ -1531,7 +1531,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Optional(HtmlSymbolType.CloseAngle);
}
Output(SpanKind.Markup);
Output(SpanKindInternal.Markup);
// End tag block
tagBlock.Dispose();
@ -1598,7 +1598,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
Span.Start = CurrentLocation;
using (Context.Builder.StartBlock(BlockKind.Markup))
using (Context.Builder.StartBlock(BlockKindInternal.Markup))
{
NextToken();
CaseSensitive = caseSensitive;
@ -1611,7 +1611,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
NestingSection(nestingSequences);
}
AddMarkerSymbolIfNecessary();
Output(SpanKind.Markup);
Output(SpanKindInternal.Markup);
}
}
}

View File

@ -3,7 +3,7 @@
namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
public interface ITextBuffer
internal interface ITextBuffer
{
int Length { get; }
int Position { get; set; }

View File

@ -63,7 +63,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
protected override PartialParseResult CanAcceptChange(Span target, SourceChange change)
{
if (AcceptedCharacters == AcceptedCharacters.Any)
if (AcceptedCharacters == AcceptedCharactersInternal.Any)
{
return PartialParseResult.Rejected;
}

View File

@ -64,7 +64,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
protected void FillSpan(SpanBuilder builder, SourceLocation start, string content)
{
builder.Kind = SpanKind.Markup;
builder.Kind = SpanKindInternal.Markup;
builder.ChunkGenerator = new MarkupChunkGenerator();
foreach (ISymbol sym in HtmlLanguageCharacteristics.Instance.TokenizeString(start, content))

View File

@ -22,7 +22,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
/// Provisional may NOT be set with Rejected and SpanContextChanged may NOT be set with Accepted.
/// </remarks>
[Flags]
public enum PartialParseResult
internal enum PartialParseResult
{
/// <summary>
/// Indicates that the edit could not be accepted and that a reparse is underway.

View File

@ -1,268 +0,0 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Diagnostics;
#pragma warning disable CS0618 // TextChange is Obsolete
namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
/// <summary>
/// Parser used by editors to avoid reparsing the entire document on each text change.
/// </summary>
/// <remarks>
/// <para>
/// This parser is designed to allow editors to avoid having to worry about incremental parsing.
/// The <see cref="CheckForStructureChanges"/> method can be called with every change made by a user in an editor
/// and the parser will provide a result indicating if it was able to incrementally apply the change.
/// </para>
/// <para>
/// The general workflow for editors with this parser is:
/// <list type="number">
/// <item><description>User edits document.</description></item>
/// <item><description>Editor builds a <see cref="TextChange"/> structure describing the edit and providing a
/// reference to the <em>updated</em> text buffer.</description></item>
/// <item><description>Editor calls <see cref="CheckForStructureChanges"/> passing in that change.
/// </description></item>
/// <item><description>Parser determines if the change can be simply applied to an existing parse tree node.
/// </description></item>
/// <list type="number">
/// <item><description>If it can, the Parser updates its parse tree and returns
/// <see cref="PartialParseResult.Accepted"/>.</description></item>
/// <item><description>If it cannot, the Parser starts a background parse task and returns
/// <see cref="PartialParseResult.Rejected"/>.</description></item>
/// </list>
/// </list>
/// NOTE: Additional flags can be applied to the <see cref="PartialParseResult"/>, see that <c>enum</c> for more
/// details. However, the <see cref="PartialParseResult.Accepted"/> or <see cref="PartialParseResult.Rejected"/>
/// flags will ALWAYS be present.
/// </para>
/// <para>
/// A change can only be incrementally parsed if a single, unique, span (seein the syntax tree can be identified
/// as owning the entire change. For example, if a change overlaps with multiple <see cref="Span"/>s, the change
/// cannot be parsed incrementally and a full reparse is necessary. A <see cref="Span"/> "owns" a change if the
/// change occurs either a) entirely within it's boundaries or b) it is a pure insertion
/// (see <see cref="TextChange"/>) at the end of a <see cref="Span"/> whose <see cref="Span.EditHandler"/> can
/// accept the change (see <see cref="SpanEditHandler.CanAcceptChange"/>).
/// </para>
/// <para>
/// When the <see cref="RazorEditorParser"/> returns <see cref="PartialParseResult.Accepted"/>, it updates
/// <see cref="CurrentSyntaxTree"/> immediately. However, the editor is expected to update it's own data structures
/// independently. It can use <see cref="CurrentSyntaxTree"/> to do this, as soon as the editor returns from
/// <see cref="CheckForStructureChanges"/>, but it should (ideally) have logic for doing so without needing the new
/// tree.
/// </para>
/// <para>
/// When <see cref="PartialParseResult.Rejected"/> is returned by <see cref="CheckForStructureChanges"/>, a
/// background parse task has <em>already</em> been started. When that task finishes, the
/// <see cref="DocumentParseComplete"/> event will be fired containing the new generated code, parse tree and a
/// reference to the original <see cref="TextChange"/> that caused the reparse, to allow the editor to resolve the
/// new tree against any changes made since calling <see cref="CheckForStructureChanges"/>.
/// </para>
/// <para>
/// If a call to <see cref="CheckForStructureChanges"/> occurs while a reparse is already in-progress, the reparse
/// is canceled IMMEDIATELY and <see cref="PartialParseResult.Rejected"/> is returned without attempting to
/// reparse. This means that if a consumer calls <see cref="CheckForStructureChanges"/>, which returns
/// <see cref="PartialParseResult.Rejected"/>, then calls it again before <see cref="DocumentParseComplete"/> is
/// fired, it will only receive one <see cref="DocumentParseComplete"/> event, for the second change.
/// </para>
/// </remarks>
public class RazorEditorParser : IDisposable
{
// Lock for this document
private Span _lastChangeOwner;
private Span _lastAutoCompleteSpan;
private BackgroundParser _parser;
private RazorSyntaxTree _currentSyntaxTree;
public RazorEditorParser(RazorTemplateEngine templateEngine, string sourceFileName)
{
if (templateEngine == null)
{
throw new ArgumentNullException(nameof(templateEngine));
}
if (string.IsNullOrEmpty(sourceFileName))
{
throw new ArgumentException(Resources.ArgumentCannotBeNullOrEmpty, nameof(sourceFileName));
}
TemplateEngine = templateEngine;
FileName = sourceFileName;
_parser = new BackgroundParser(templateEngine, sourceFileName);
_parser.ResultsReady += (sender, args) => OnDocumentParseComplete(args);
_parser.Start();
}
/// <summary>
/// Event fired when a full reparse of the document completes.
/// </summary>
public event EventHandler<DocumentParseCompleteEventArgs> DocumentParseComplete;
public RazorTemplateEngine TemplateEngine { get; private set; }
public string FileName { get; private set; }
public bool LastResultProvisional { get; private set; }
public RazorSyntaxTree CurrentSyntaxTree => _currentSyntaxTree;
public virtual string GetAutoCompleteString()
{
if (_lastAutoCompleteSpan != null)
{
var editHandler = _lastAutoCompleteSpan.EditHandler as AutoCompleteEditHandler;
if (editHandler != null)
{
return editHandler.AutoCompleteString;
}
}
return null;
}
// Type or member is obsolete
/// <summary>
/// Determines if a change will cause a structural change to the document and if not, applies it to the
/// existing tree. If a structural change would occur, automatically starts a reparse.
/// </summary>
/// <remarks>
/// NOTE: The initial incremental parsing check and actual incremental parsing (if possible) occurs
/// on the caller's thread. However, if a full reparse is needed, this occurs on a background thread.
/// </remarks>
/// <param name="change">The change to apply to the parse tree.</param>
/// <returns>A <see cref="PartialParseResult"/> value indicating the result of the incremental parse.</returns>
#pragma warning disable CS0612
public virtual PartialParseResult CheckForStructureChanges(TextChange change)
#pragma warning restore CS0612 // Type or member is obsolete
{
var result = PartialParseResult.Rejected;
using (_parser.SynchronizeMainThreadState())
{
// Check if we can partial-parse
if (CurrentSyntaxTree != null && _parser.IsIdle)
{
result = TryPartialParse(change);
}
}
// If partial parsing failed or there were outstanding parser tasks, start a full reparse
if ((result & PartialParseResult.Rejected) == PartialParseResult.Rejected)
{
_parser.QueueChange(change);
}
// Otherwise, remember if this was provisionally accepted for next partial parse
LastResultProvisional = (result & PartialParseResult.Provisional) == PartialParseResult.Provisional;
VerifyFlagsAreValid(result);
return result;
}
/// <summary>
/// Disposes of this parser. Should be called when the editor window is closed and the document is unloaded.
/// </summary>
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
if (disposing)
{
_parser.Dispose();
}
}
#pragma warning disable CS0612 // Type or member is obsolete
private PartialParseResult TryPartialParse(TextChange change)
#pragma warning restore CS0612 // Type or member is obsolete
{
var sourceChange = change.AsSourceChange();
var result = PartialParseResult.Rejected;
// Try the last change owner
if (_lastChangeOwner != null && _lastChangeOwner.EditHandler.OwnsChange(_lastChangeOwner, sourceChange))
{
var editResult = _lastChangeOwner.EditHandler.ApplyChange(_lastChangeOwner, sourceChange);
result = editResult.Result;
if ((editResult.Result & PartialParseResult.Rejected) != PartialParseResult.Rejected)
{
_lastChangeOwner.ReplaceWith(editResult.EditedSpan);
}
return result;
}
// Locate the span responsible for this change
_lastChangeOwner = CurrentSyntaxTree.Root.LocateOwner(sourceChange);
if (LastResultProvisional)
{
// Last change owner couldn't accept this, so we must do a full reparse
result = PartialParseResult.Rejected;
}
else if (_lastChangeOwner != null)
{
var editResult = _lastChangeOwner.EditHandler.ApplyChange(_lastChangeOwner, sourceChange);
result = editResult.Result;
if ((editResult.Result & PartialParseResult.Rejected) != PartialParseResult.Rejected)
{
_lastChangeOwner.ReplaceWith(editResult.EditedSpan);
}
if ((result & PartialParseResult.AutoCompleteBlock) == PartialParseResult.AutoCompleteBlock)
{
_lastAutoCompleteSpan = _lastChangeOwner;
}
else
{
_lastAutoCompleteSpan = null;
}
}
return result;
}
private void OnDocumentParseComplete(DocumentParseCompleteEventArgs args)
{
using (_parser.SynchronizeMainThreadState())
{
_currentSyntaxTree = args.GeneratorResults.GetSyntaxTree();
_lastChangeOwner = null;
}
Debug.Assert(args != null, "Event arguments cannot be null");
EventHandler<DocumentParseCompleteEventArgs> handler = DocumentParseComplete;
if (handler != null)
{
try
{
handler(this, args);
}
catch (Exception ex)
{
Debug.WriteLine("[RzEd] Document Parse Complete Handler Threw: " + ex.ToString());
}
}
}
[Conditional("DEBUG")]
private static void VerifyFlagsAreValid(PartialParseResult result)
{
Debug.Assert(((result & PartialParseResult.Accepted) == PartialParseResult.Accepted) ||
((result & PartialParseResult.Rejected) == PartialParseResult.Rejected),
"Partial Parse result does not have either of Accepted or Rejected flags set");
Debug.Assert(((result & PartialParseResult.Rejected) == PartialParseResult.Rejected) ||
((result & PartialParseResult.SpanContextChanged) != PartialParseResult.SpanContextChanged),
"Partial Parse result was Accepted AND had SpanContextChanged flag set");
Debug.Assert(((result & PartialParseResult.Rejected) == PartialParseResult.Rejected) ||
((result & PartialParseResult.AutoCompleteBlock) != PartialParseResult.AutoCompleteBlock),
"Partial Parse result was Accepted AND had AutoCompleteBlock flag set");
Debug.Assert(((result & PartialParseResult.Accepted) == PartialParseResult.Accepted) ||
((result & PartialParseResult.Provisional) != PartialParseResult.Provisional),
"Partial Parse result was Rejected AND had Provisional flag set");
}
}
}
#pragma warning restore CS0618

View File

@ -21,7 +21,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
public ISpanChunkGenerator ChunkGenerator { get; private set; }
public SpanKind Kind { get; private set; }
public SpanKindInternal Kind { get; private set; }
public IReadOnlyList<ISymbol> Symbols { get; private set; }
// Allow test code to re-link spans

View File

@ -47,7 +47,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
public SourceLocation End => _tracker.CurrentLocation;
public SpanKind Kind { get; set; }
public SpanKindInternal Kind { get; set; }
public IReadOnlyList<ISymbol> Symbols
{

View File

@ -12,17 +12,17 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
private static readonly int TypeHashCode = typeof(SpanEditHandler).GetHashCode();
public SpanEditHandler(Func<string, IEnumerable<ISymbol>> tokenizer)
: this(tokenizer, AcceptedCharacters.Any)
: this(tokenizer, AcceptedCharactersInternal.Any)
{
}
public SpanEditHandler(Func<string, IEnumerable<ISymbol>> tokenizer, AcceptedCharacters accepted)
public SpanEditHandler(Func<string, IEnumerable<ISymbol>> tokenizer, AcceptedCharactersInternal accepted)
{
AcceptedCharacters = accepted;
Tokenizer = tokenizer;
}
public AcceptedCharacters AcceptedCharacters { get; set; }
public AcceptedCharactersInternal AcceptedCharacters { get; set; }
public Func<string, IEnumerable<ISymbol>> Tokenizer { get; set; }
@ -57,7 +57,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
var end = target.Start.AbsoluteIndex + target.Length;
var changeOldEnd = change.Span.AbsoluteIndex + change.Span.Length;
return change.Span.AbsoluteIndex >= target.Start.AbsoluteIndex &&
(changeOldEnd < end || (changeOldEnd == end && AcceptedCharacters != AcceptedCharacters.None));
(changeOldEnd < end || (changeOldEnd == end && AcceptedCharacters != AcceptedCharactersInternal.None));
}
protected virtual PartialParseResult CanAcceptChange(Span target, SourceChange change)

View File

@ -0,0 +1,14 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
public enum SpanKindInternal
{
Transition,
MetaCode,
Comment,
Code,
Markup
}
}

View File

@ -23,13 +23,13 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
public Span LastSpan { get; private set; }
public AcceptedCharacters LastAcceptedCharacters
public AcceptedCharactersInternal LastAcceptedCharacters
{
get
{
if (LastSpan == null)
{
return AcceptedCharacters.None;
return AcceptedCharactersInternal.None;
}
return LastSpan.EditHandler.AcceptedCharacters;
}
@ -49,7 +49,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
/// Starts a block of the specified type
/// </summary>
/// <param name="blockType">The type of the block to start</param>
public IDisposable StartBlock(BlockKind blockType)
public IDisposable StartBlock(BlockKindInternal blockType)
{
var builder = new BlockBuilder() { Type = blockType };
_blockStack.Push(builder);

View File

@ -44,7 +44,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Start = start;
BindingResult = bindingResult;
Attributes = new List<TagHelperAttributeNode>(attributes);
Type = BlockKind.Tag;
Type = BlockKindInternal.Tag;
ChunkGenerator = new TagHelperChunkGenerator();
}
@ -58,7 +58,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
TagName = tagName;
TagMode = tagMode;
Attributes = attributes;
Type = BlockKind.Tag;
Type = BlockKindInternal.Tag;
ChunkGenerator = new TagHelperChunkGenerator();
// Children is IList, no AddRange

View File

@ -332,7 +332,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
var childSpan = block.Children.First() as Span;
if (childSpan == null || childSpan.Kind != SpanKind.Markup)
if (childSpan == null || childSpan.Kind != SpanKindInternal.Markup)
{
errorSink.OnError(
block.Start,
@ -458,7 +458,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
// key="@int + @case" -> MyTagHelper.key = int + @case
// key="@(a + b) -> MyTagHelper.key = a + b
// key="4 + @(a + b)" -> MyTagHelper.key = 4 + @(a + b)
if (isFirstSpan && span.Kind == SpanKind.Transition)
if (isFirstSpan && span.Kind == SpanKindInternal.Transition)
{
// do nothing.
}
@ -466,9 +466,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
var spanBuilder = new SpanBuilder(span);
if (parentBlock.Type == BlockKind.Expression &&
(spanBuilder.Kind == SpanKind.Transition ||
spanBuilder.Kind == SpanKind.MetaCode))
if (parentBlock.Type == BlockKindInternal.Expression &&
(spanBuilder.Kind == SpanKindInternal.Transition ||
spanBuilder.Kind == SpanKindInternal.MetaCode))
{
// Change to a MarkupChunkGenerator so that the '@' \ parenthesis is generated as part of the output.
spanBuilder.ChunkGenerator = new MarkupChunkGenerator();
@ -722,13 +722,13 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
private static void ConfigureNonStringAttribute(SpanBuilder builder, bool isDuplicateAttribute)
{
builder.Kind = SpanKind.Code;
builder.Kind = SpanKindInternal.Code;
builder.EditHandler = new ImplicitExpressionEditHandler(
builder.EditHandler.Tokenizer,
CSharpCodeParser.DefaultKeywords,
acceptTrailingDot: true)
{
AcceptedCharacters = AcceptedCharacters.AnyExceptNewline
AcceptedCharacters = AcceptedCharactersInternal.AnyExceptNewline
};
if (!isDuplicateAttribute && builder.ChunkGenerator != SpanChunkGenerator.Null)

View File

@ -82,7 +82,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
var childBlock = (Block)child;
if (childBlock.Type == BlockKind.Tag)
if (childBlock.Type == BlockKindInternal.Tag)
{
if (TryRewriteTagHelper(childBlock, errorSink))
{
@ -340,7 +340,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
var childBlock = (Block)child;
if (childBlock.Type != BlockKind.Markup)
if (childBlock.Type != BlockKindInternal.Markup)
{
// Anything other than markup blocks in the attribute area of tags mangles following attributes.
// It's also not supported by TagHelpers, bail early to avoid creating bad attribute value pairs.
@ -614,7 +614,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
var tagEnd = tagBlock.Children[tagBlock.Children.Count - 1] as Span;
// If our tag end is not a markup span it means it's some sort of code SyntaxTreeNode (not a valid format)
if (tagEnd != null && tagEnd.Kind == SpanKind.Markup)
if (tagEnd != null && tagEnd.Kind == SpanKindInternal.Markup)
{
var endSymbol = tagEnd.Symbols.Count > 0 ?
tagEnd.Symbols[tagEnd.Symbols.Count - 1] as HtmlSymbol :
@ -684,7 +684,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
// text tags that are labeled as transitions should be ignored aka they're not tag helpers.
return !string.Equals(tagName, SyntaxConstants.TextTagName, StringComparison.OrdinalIgnoreCase) ||
childSpan.Kind != SpanKind.Transition;
childSpan.Kind != SpanKindInternal.Transition;
}
private void TrackBlock(BlockBuilder builder)
@ -762,7 +762,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
var child = tagBlock.Children[0];
if (tagBlock.Type != BlockKind.Tag || tagBlock.Children.Count == 0 || !(child is Span))
if (tagBlock.Type != BlockKindInternal.Tag || tagBlock.Children.Count == 0 || !(child is Span))
{
return null;
}
@ -803,7 +803,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
private static void EnsureTagBlock(Block tagBlock)
{
Debug.Assert(tagBlock.Type == BlockKind.Tag);
Debug.Assert(tagBlock.Type == BlockKindInternal.Tag);
Debug.Assert(tagBlock.Children.First() is Span);
}

View File

@ -1,248 +0,0 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Diagnostics;
using System.Globalization;
using System.Text;
using Microsoft.Extensions.Internal;
namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
[Obsolete] // Superseded by SourceChange
public struct TextChange
{
private string _newText;
private string _oldText;
/// <summary>
/// Constructor for changes where the position hasn't moved (primarily for tests)
/// </summary>
internal TextChange(int position, int oldLength, ITextBuffer oldBuffer, int newLength, ITextBuffer newBuffer)
: this(position, oldLength, oldBuffer, position, newLength, newBuffer)
{
}
public TextChange(
int oldPosition,
int oldLength,
ITextBuffer oldBuffer,
int newPosition,
int newLength,
ITextBuffer newBuffer)
: this()
{
if (oldBuffer == null)
{
throw new ArgumentNullException(nameof(oldBuffer));
}
if (newBuffer == null)
{
throw new ArgumentNullException(nameof(newBuffer));
}
if (oldPosition < 0)
{
throw new ArgumentOutOfRangeException(nameof(oldPosition), LegacyResources.FormatArgument_Must_Be_GreaterThanOrEqualTo(0));
}
if (newPosition < 0)
{
throw new ArgumentOutOfRangeException(nameof(newPosition), LegacyResources.FormatArgument_Must_Be_GreaterThanOrEqualTo(0));
}
if (oldLength < 0)
{
throw new ArgumentOutOfRangeException(nameof(oldLength), LegacyResources.FormatArgument_Must_Be_GreaterThanOrEqualTo(0));
}
if (newLength < 0)
{
throw new ArgumentOutOfRangeException(nameof(newLength), LegacyResources.FormatArgument_Must_Be_GreaterThanOrEqualTo(0));
}
OldPosition = oldPosition;
NewPosition = newPosition;
OldLength = oldLength;
NewLength = newLength;
NewBuffer = newBuffer;
OldBuffer = oldBuffer;
}
public int OldPosition { get; }
public int NewPosition { get; }
public int OldLength { get; }
public int NewLength { get; }
public ITextBuffer NewBuffer { get; }
public ITextBuffer OldBuffer { get; }
/// <remark>
/// Note: This property is not thread safe, and will move position on the textbuffer while being read.
/// https://aspnetwebstack.codeplex.com/workitem/1317, tracks making this immutable and improving the access
/// to ITextBuffer to be thread safe.
/// </remark>
public string OldText
{
get
{
if (_oldText == null && OldBuffer != null)
{
_oldText = GetText(OldBuffer, OldPosition, OldLength);
}
return _oldText;
}
}
/// <remark>
/// Note: This property is not thread safe, and will move position on the textbuffer while being read.
/// https://aspnetwebstack.codeplex.com/workitem/1317, tracks making this immutable and improving the access
/// to ITextBuffer to be thread safe.
/// </remark>
public string NewText
{
get
{
if (_newText == null)
{
_newText = GetText(NewBuffer, NewPosition, NewLength);
}
return _newText;
}
}
public bool IsInsert
{
get { return OldLength == 0 && NewLength > 0; }
}
public bool IsDelete
{
get { return OldLength > 0 && NewLength == 0; }
}
public bool IsReplace
{
get { return OldLength > 0 && NewLength > 0; }
}
public SourceChange AsSourceChange()
{
var normalized = Normalize();
return new SourceChange(
new SourceSpan(
filePath: null,
absoluteIndex: normalized.OldPosition,
lineIndex: -1,
characterIndex: -1,
length: normalized.OldLength),
normalized.NewText);
}
public override bool Equals(object obj)
{
if (!(obj is TextChange))
{
return false;
}
var change = (TextChange)obj;
return change.OldPosition == OldPosition &&
change.NewPosition == NewPosition &&
change.OldLength == OldLength &&
change.NewLength == NewLength &&
OldBuffer.Equals(change.OldBuffer) &&
NewBuffer.Equals(change.NewBuffer);
}
public override int GetHashCode()
{
var hashCodeCombiner = HashCodeCombiner.Start();
hashCodeCombiner.Add(OldPosition);
hashCodeCombiner.Add(NewPosition);
hashCodeCombiner.Add(OldLength);
hashCodeCombiner.Add(NewLength);
hashCodeCombiner.Add(OldBuffer);
hashCodeCombiner.Add(NewBuffer);
return hashCodeCombiner;
}
public override string ToString()
{
return string.Format(CultureInfo.CurrentCulture, "({0}:{1}) \"{3}\" -> ({0}:{2}) \"{4}\"", OldPosition, OldLength, NewLength, OldText, NewText);
}
/// <summary>
/// Removes a common prefix from the edit to turn IntelliSense replacements into insertions where possible
/// </summary>
/// <returns>A normalized text change</returns>
public TextChange Normalize()
{
if (OldBuffer != null && IsReplace && NewLength > OldLength && NewText.StartsWith(OldText, StringComparison.Ordinal) && NewPosition == OldPosition)
{
// Normalize the change into an insertion of the uncommon suffix (i.e. strip out the common prefix)
return new TextChange(oldPosition: OldPosition + OldLength,
oldLength: 0,
oldBuffer: OldBuffer,
newPosition: OldPosition + OldLength,
newLength: NewLength - OldLength,
newBuffer: NewBuffer);
}
return this;
}
private static string GetText(ITextBuffer buffer, int position, int length)
{
// Optimization for the common case of one char inserts, in this case we don't even need to seek the buffer.
if (length == 0)
{
return string.Empty;
}
var oldPosition = buffer.Position;
try
{
buffer.Position = position;
// Optimization for the common case of one char inserts, in this case we seek the buffer.
if (length == 1)
{
return ((char)buffer.Read()).ToString();
}
else
{
var builder = new StringBuilder();
for (int i = 0; i < length; i++)
{
var c = (char)buffer.Read();
builder.Append(c);
// This check is probably not necessary, will revisit when fixing https://aspnetwebstack.codeplex.com/workitem/1317
if (Char.IsHighSurrogate(c))
{
builder.Append((char)buffer.Read());
}
}
return builder.ToString();
}
}
finally
{
buffer.Position = oldPosition;
}
}
public static bool operator ==(TextChange left, TextChange right)
{
return left.Equals(right);
}
public static bool operator !=(TextChange left, TextChange right)
{
return !left.Equals(right);
}
}
}

View File

@ -286,7 +286,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
Tuple<TSymbol, TSymbol> pair = Language.SplitSymbol(CurrentSymbol, 1, Language.GetKnownSymbolType(KnownSymbolType.WhiteSpace));
Accept(pair.Item1);
Span.EditHandler.AcceptedCharacters = AcceptedCharacters.None;
Span.EditHandler.AcceptedCharacters = AcceptedCharactersInternal.None;
NextToken();
return pair.Item2;
}
@ -329,25 +329,25 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
protected internal void AddMarkerSymbolIfNecessary()
{
if (Span.Symbols.Count == 0 && Context.Builder.LastAcceptedCharacters != AcceptedCharacters.Any)
if (Span.Symbols.Count == 0 && Context.Builder.LastAcceptedCharacters != AcceptedCharactersInternal.Any)
{
Accept(Language.CreateMarkerSymbol());
}
}
protected internal void Output(SpanKind kind)
protected internal void Output(SpanKindInternal kind)
{
Configure(kind, null);
Output();
}
protected internal void Output(SpanKind kind, AcceptedCharacters accepts)
protected internal void Output(SpanKindInternal kind, AcceptedCharactersInternal accepts)
{
Configure(kind, accepts);
Output();
}
protected internal void Output(AcceptedCharacters accepts)
protected internal void Output(AcceptedCharactersInternal accepts)
{
Configure(null, accepts);
Output();
@ -580,7 +580,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
}
}
private void Configure(SpanKind? kind, AcceptedCharacters? accepts)
private void Configure(SpanKindInternal? kind, AcceptedCharactersInternal? accepts)
{
if (kind != null)
{
@ -614,20 +614,20 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
OutputSpanBeforeRazorComment();
using (PushSpanConfig(CommentSpanConfig))
{
using (Context.Builder.StartBlock(BlockKind.Comment))
using (Context.Builder.StartBlock(BlockKindInternal.Comment))
{
Context.Builder.CurrentBlock.ChunkGenerator = new RazorCommentChunkGenerator();
var start = CurrentStart;
Expected(KnownSymbolType.CommentStart);
Output(SpanKind.Transition, AcceptedCharacters.None);
Output(SpanKindInternal.Transition, AcceptedCharactersInternal.None);
Expected(KnownSymbolType.CommentStar);
Output(SpanKind.MetaCode, AcceptedCharacters.None);
Output(SpanKindInternal.MetaCode, AcceptedCharactersInternal.None);
Optional(KnownSymbolType.CommentBody);
AddMarkerSymbolIfNecessary();
Output(SpanKind.Comment);
Output(SpanKindInternal.Comment);
var errorReported = false;
if (!Optional(KnownSymbolType.CommentStar))
@ -640,7 +640,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
}
else
{
Output(SpanKind.MetaCode, AcceptedCharacters.None);
Output(SpanKindInternal.MetaCode, AcceptedCharactersInternal.None);
}
if (!Optional(KnownSymbolType.CommentStart))
@ -656,7 +656,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
}
else
{
Output(SpanKind.Transition, AcceptedCharacters.None);
Output(SpanKindInternal.Transition, AcceptedCharactersInternal.None);
}
}
}

View File

@ -10,7 +10,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
protected override bool CanRewrite(Block block)
{
return block.Type == BlockKind.Expression && Parent != null;
return block.Type == BlockKindInternal.Expression && Parent != null;
}
protected override SyntaxTreeNode RewriteBlock(BlockBuilder parent, Block block)

View File

@ -9,10 +9,10 @@ namespace Microsoft.AspNetCore.Razor.Language
{
public sealed class LineMapping : IEquatable<LineMapping>
{
public LineMapping(SourceSpan originalSourceSpan, SourceSpan generatedSourceSpan)
public LineMapping(SourceSpan originalSpan, SourceSpan generatedSpan)
{
OriginalSpan = originalSourceSpan;
GeneratedSpan = generatedSourceSpan;
OriginalSpan = originalSpan;
GeneratedSpan = generatedSpan;
}
public SourceSpan OriginalSpan { get; }

View File

@ -3,7 +3,7 @@
using System;
namespace Microsoft.AspNetCore.Razor.Language
namespace Microsoft.VisualStudio.LanguageServices.Razor
{
[Flags]
public enum AcceptedCharacters

View File

@ -1,7 +1,7 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
namespace Microsoft.AspNetCore.Razor.Language
namespace Microsoft.VisualStudio.LanguageServices.Razor
{
public enum BlockKind
{

View File

@ -42,9 +42,9 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor
span.Parent.Start.LineIndex,
span.Parent.Start.CharacterIndex,
span.Parent.Length),
span.Kind,
span.Parent.Type,
span.EditHandler.AcceptedCharacters);
(SpanKind)span.Kind,
(BlockKind)span.Parent.Type,
(AcceptedCharacters)span.EditHandler.AcceptedCharacters);
}
return result;
@ -176,7 +176,7 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor
int? desiredIndentation = null;
if (owningSpan.Kind != SpanKind.Code)
if (owningSpan.Kind != SpanKindInternal.Code)
{
SyntaxTreeNode owningChild = owningSpan;
while ((owningChild.Parent != null) && !desiredIndentation.HasValue)
@ -189,7 +189,7 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor
if (!curChild.IsBlock)
{
Span curSpan = curChild as Span;
if (curSpan.Kind == SpanKind.MetaCode)
if (curSpan.Kind == SpanKindInternal.MetaCode)
{
// yay! We want to use the start of this span to determine the indent level.
var startLine = line.Snapshot.GetLineFromLineNumber(curSpan.Start.LineIndex);
@ -199,7 +199,7 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor
if (i < children.Count - 1)
{
SyntaxTreeNode nextChild = children[i + 1];
if (nextChild.IsBlock && ((nextChild as Block).Type == BlockKind.Markup))
if (nextChild.IsBlock && ((nextChild as Block).Type == BlockKindInternal.Markup))
{
extraIndent = indentSize;
}

View File

@ -1,7 +1,7 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
namespace Microsoft.AspNetCore.Razor.Language
namespace Microsoft.VisualStudio.LanguageServices.Razor
{
public enum SpanKind
{

View File

@ -26,7 +26,7 @@ namespace Microsoft.AspNetCore.Razor.Language
// Assert
var tag = Assert.Single(outputTree.Root.Children);
var tagBlock = Assert.IsType<Block>(tag);
Assert.Equal(BlockKind.Tag, tagBlock.Type);
Assert.Equal(BlockKindInternal.Tag, tagBlock.Type);
Assert.Equal(3, tagBlock.Children.Count);
Assert.IsType<Span>(tagBlock.Children[1]);
}

View File

@ -16,18 +16,18 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
public Block EscapedMarkupTagBlock(string prefix, string suffix)
{
return EscapedMarkupTagBlock(prefix, suffix, AcceptedCharacters.Any);
return EscapedMarkupTagBlock(prefix, suffix, AcceptedCharactersInternal.Any);
}
public Block EscapedMarkupTagBlock(string prefix, string suffix, params SyntaxTreeNode[] children)
{
return EscapedMarkupTagBlock(prefix, suffix, AcceptedCharacters.Any, children);
return EscapedMarkupTagBlock(prefix, suffix, AcceptedCharactersInternal.Any, children);
}
public Block EscapedMarkupTagBlock(
string prefix,
string suffix,
AcceptedCharacters acceptedCharacters,
AcceptedCharactersInternal acceptedCharacters,
params SyntaxTreeNode[] children)
{
var newChildren = new List<SyntaxTreeNode>(
@ -45,10 +45,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
public Block MarkupTagBlock(string content)
{
return MarkupTagBlock(content, AcceptedCharacters.Any);
return MarkupTagBlock(content, AcceptedCharactersInternal.Any);
}
public Block MarkupTagBlock(string content, AcceptedCharacters acceptedCharacters)
public Block MarkupTagBlock(string content, AcceptedCharactersInternal acceptedCharacters)
{
return new MarkupTagBlock(
_factory.Markup(content).Accepts(acceptedCharacters)

View File

@ -12,8 +12,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
public void ConstructorWithBlockBuilderSetsParent()
{
// Arrange
var builder = new BlockBuilder() { Type = BlockKind.Comment };
var span = new SpanBuilder(SourceLocation.Undefined) { Kind = SpanKind.Code }.Build();
var builder = new BlockBuilder() { Type = BlockKindInternal.Comment };
var span = new SpanBuilder(SourceLocation.Undefined) { Kind = SpanKindInternal.Code }.Build();
builder.Children.Add(span);
// Act
@ -30,7 +30,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
var expected = new ExpressionChunkGenerator();
var builder = new BlockBuilder()
{
Type = BlockKind.Helper,
Type = BlockKindInternal.Helper,
ChunkGenerator = expected
};
@ -45,10 +45,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
public void ConstructorTransfersChildrenFromBlockBuilder()
{
// Arrange
var expected = new SpanBuilder(SourceLocation.Undefined) { Kind = SpanKind.Code }.Build();
var expected = new SpanBuilder(SourceLocation.Undefined) { Kind = SpanKindInternal.Code }.Build();
var builder = new BlockBuilder()
{
Type = BlockKind.Functions
Type = BlockKindInternal.Functions
};
builder.Children.Add(expected);

View File

@ -9,7 +9,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
internal class StatementBlock : Block
{
private const BlockKind ThisBlockKind = BlockKind.Statement;
private const BlockKindInternal ThisBlockKind = BlockKindInternal.Statement;
public StatementBlock(IParentChunkGenerator chunkGenerator, IReadOnlyList<SyntaxTreeNode> children)
: base(ThisBlockKind, children, chunkGenerator)
@ -29,7 +29,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
internal class DirectiveBlock : Block
{
private const BlockKind ThisBlockKind = BlockKind.Directive;
private const BlockKindInternal ThisBlockKind = BlockKindInternal.Directive;
public DirectiveBlock(IParentChunkGenerator chunkGenerator, IReadOnlyList<SyntaxTreeNode> children)
: base(ThisBlockKind, children, chunkGenerator)
@ -49,7 +49,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
internal class ExpressionBlock : Block
{
private const BlockKind ThisBlockKind = BlockKind.Expression;
private const BlockKindInternal ThisBlockKind = BlockKindInternal.Expression;
public ExpressionBlock(IParentChunkGenerator chunkGenerator, IReadOnlyList<SyntaxTreeNode> children)
: base(ThisBlockKind, children, chunkGenerator)
@ -69,7 +69,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
internal class MarkupTagBlock : Block
{
private const BlockKind ThisBlockKind = BlockKind.Tag;
private const BlockKindInternal ThisBlockKind = BlockKindInternal.Tag;
public MarkupTagBlock(params SyntaxTreeNode[] children)
: base(ThisBlockKind, children, ParentChunkGenerator.Null)
@ -79,10 +79,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
internal class MarkupBlock : Block
{
private const BlockKind ThisBlockKind = BlockKind.Markup;
private const BlockKindInternal ThisBlockKind = BlockKindInternal.Markup;
public MarkupBlock(
BlockKind BlockKind,
BlockKindInternal BlockKind,
IParentChunkGenerator chunkGenerator,
IReadOnlyList<SyntaxTreeNode> children)
: base(BlockKind, children, chunkGenerator)
@ -170,7 +170,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
internal class TemplateBlock : Block
{
private const BlockKind ThisBlockKind = BlockKind.Template;
private const BlockKindInternal ThisBlockKind = BlockKindInternal.Template;
public TemplateBlock(IParentChunkGenerator chunkGenerator, IReadOnlyList<SyntaxTreeNode> children)
: base(ThisBlockKind, children, chunkGenerator)
@ -195,7 +195,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
internal class CommentBlock : Block
{
private const BlockKind ThisBlockKind = BlockKind.Comment;
private const BlockKindInternal ThisBlockKind = BlockKindInternal.Comment;
public CommentBlock(IParentChunkGenerator chunkGenerator, IReadOnlyList<SyntaxTreeNode> children)
: base(ThisBlockKind, children, chunkGenerator)

View File

@ -16,8 +16,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
"@functions{",
new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.FunctionsDirectiveDescriptor),
Factory.CodeTransition(),
Factory.MetaCode("functions").Accepts(AcceptedCharacters.None),
Factory.MetaCode("{").AutoCompleteWith("}", atEndOfSpan: true).Accepts(AcceptedCharacters.None)),
Factory.MetaCode("functions").Accepts(AcceptedCharactersInternal.None),
Factory.MetaCode("{").AutoCompleteWith("}", atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None)),
new RazorError(
LegacyResources.FormatParseError_Expected_EndOfBlock_Before_EOF(CSharpCodeParser.FunctionsDirectiveDescriptor.Name, "}", "{"),
new SourceLocation(10, 0, 10),
@ -30,13 +30,13 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ParseBlockTest("@section Header {",
new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor),
Factory.CodeTransition(),
Factory.MetaCode("section").Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
Factory.Span(SpanKind.Code, "Header", CSharpSymbolType.Identifier)
.Accepts(AcceptedCharacters.NonWhiteSpace)
Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace),
Factory.Span(SpanKindInternal.Code, "Header", CSharpSymbolType.Identifier)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())),
Factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace),
Factory.MetaCode("{").AutoCompleteWith("}", atEndOfSpan: true).Accepts(AcceptedCharacters.None),
Factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace),
Factory.MetaCode("{").AutoCompleteWith("}", atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None),
new MarkupBlock(
Factory.EmptyHtml())),
new RazorError(
@ -51,7 +51,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ParseBlockTest("@{",
new StatementBlock(
Factory.CodeTransition(),
Factory.MetaCode("{").Accepts(AcceptedCharacters.None),
Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
Factory.EmptyCSharp()
.AsStatement()
.With(new AutoCompleteEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString) { AutoCompleteString = "}" })
@ -69,8 +69,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ParseBlockTest("@functions{" + Environment.NewLine + "foo",
new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.FunctionsDirectiveDescriptor),
Factory.CodeTransition(),
Factory.MetaCode("functions").Accepts(AcceptedCharacters.None),
Factory.MetaCode("{").AutoCompleteWith("}", atEndOfSpan: true).Accepts(AcceptedCharacters.None),
Factory.MetaCode("functions").Accepts(AcceptedCharactersInternal.None),
Factory.MetaCode("{").AutoCompleteWith("}", atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None),
Factory.Code(Environment.NewLine + "foo").AsStatement()),
new RazorError(
LegacyResources.FormatParseError_Expected_EndOfBlock_Before_EOF("functions", "}", "{"),
@ -85,13 +85,13 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
+ "<p>Foo</p>",
new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor),
Factory.CodeTransition(),
Factory.MetaCode("section").Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
Factory.Span(SpanKind.Code, "Header", CSharpSymbolType.Identifier)
.Accepts(AcceptedCharacters.NonWhiteSpace)
Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace),
Factory.Span(SpanKindInternal.Code, "Header", CSharpSymbolType.Identifier)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())),
Factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace),
Factory.MetaCode("{").AutoCompleteWith("}", atEndOfSpan: true).Accepts(AcceptedCharacters.None),
Factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace),
Factory.MetaCode("{").AutoCompleteWith("}", atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None),
new MarkupBlock(
Factory.Markup(Environment.NewLine),
new MarkupTagBlock(
@ -112,16 +112,16 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
+ "<p></p>",
new StatementBlock(
Factory.CodeTransition(),
Factory.MetaCode("{").Accepts(AcceptedCharacters.None),
Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
Factory.Code(Environment.NewLine)
.AsStatement()
.With(new AutoCompleteEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString) { AutoCompleteString = "}" }),
new MarkupBlock(
new MarkupTagBlock(
Factory.Markup("<p>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<p>").Accepts(AcceptedCharactersInternal.None)),
new MarkupTagBlock(
Factory.Markup("</p>").Accepts(AcceptedCharacters.None))),
Factory.Span(SpanKind.Code, new CSharpSymbol(string.Empty, CSharpSymbolType.Unknown))
Factory.Markup("</p>").Accepts(AcceptedCharactersInternal.None))),
Factory.Span(SpanKindInternal.Code, new CSharpSymbol(string.Empty, CSharpSymbolType.Unknown))
.With(new StatementChunkGenerator())
),
new RazorError(

View File

@ -26,11 +26,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new DirectiveBlock(
new DirectiveChunkGenerator(descriptor),
Factory.CodeTransition(),
Factory.MetaCode("custom").Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Code, " ", markup: false).Accepts(AcceptedCharacters.WhiteSpace),
Factory.Span(SpanKind.Code, "System.Text.Encoding.ASCIIEncoding", markup: false)
Factory.MetaCode("custom").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Code, " ", markup: false).Accepts(AcceptedCharactersInternal.WhiteSpace),
Factory.Span(SpanKindInternal.Code, "System.Text.Encoding.ASCIIEncoding", markup: false)
.With(new DirectiveTokenChunkGenerator(descriptor.Tokens[0]))
.Accepts(AcceptedCharacters.NonWhiteSpace)));
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)));
}
[Fact]
@ -49,11 +49,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new DirectiveBlock(
new DirectiveChunkGenerator(descriptor),
Factory.CodeTransition(),
Factory.MetaCode("custom").Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Code, " ", markup: false).Accepts(AcceptedCharacters.WhiteSpace),
Factory.Span(SpanKind.Code, "Some_Member", markup: false)
Factory.MetaCode("custom").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Code, " ", markup: false).Accepts(AcceptedCharactersInternal.WhiteSpace),
Factory.Span(SpanKindInternal.Code, "Some_Member", markup: false)
.With(new DirectiveTokenChunkGenerator(descriptor.Tokens[0]))
.Accepts(AcceptedCharacters.NonWhiteSpace)));
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)));
}
[Fact]
@ -72,11 +72,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new DirectiveBlock(
new DirectiveChunkGenerator(descriptor),
Factory.CodeTransition(),
Factory.MetaCode("custom").Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Code, " ", markup: false).Accepts(AcceptedCharacters.WhiteSpace),
Factory.Span(SpanKind.Code, "BaseNamespace", markup: false)
Factory.MetaCode("custom").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Code, " ", markup: false).Accepts(AcceptedCharactersInternal.WhiteSpace),
Factory.Span(SpanKindInternal.Code, "BaseNamespace", markup: false)
.With(new DirectiveTokenChunkGenerator(descriptor.Tokens[0]))
.Accepts(AcceptedCharacters.NonWhiteSpace)));
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)));
}
[Fact]
@ -95,11 +95,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new DirectiveBlock(
new DirectiveChunkGenerator(descriptor),
Factory.CodeTransition(),
Factory.MetaCode("custom").Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Code, " ", markup: false).Accepts(AcceptedCharacters.WhiteSpace),
Factory.Span(SpanKind.Code, "BaseNamespace.Foo.Bar", markup: false)
Factory.MetaCode("custom").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Code, " ", markup: false).Accepts(AcceptedCharactersInternal.WhiteSpace),
Factory.Span(SpanKindInternal.Code, "BaseNamespace.Foo.Bar", markup: false)
.With(new DirectiveTokenChunkGenerator(descriptor.Tokens[0]))
.Accepts(AcceptedCharacters.NonWhiteSpace)));
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)));
}
[Fact]
@ -118,11 +118,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new DirectiveBlock(
new DirectiveChunkGenerator(descriptor),
Factory.CodeTransition(),
Factory.MetaCode("custom").Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Markup, " ", markup: false).Accepts(AcceptedCharacters.WhiteSpace),
Factory.Span(SpanKind.Markup, "\"AString\"", markup: false)
Factory.MetaCode("custom").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Markup, " ", markup: false).Accepts(AcceptedCharactersInternal.WhiteSpace),
Factory.Span(SpanKindInternal.Markup, "\"AString\"", markup: false)
.With(new DirectiveTokenChunkGenerator(descriptor.Tokens[0]))
.Accepts(AcceptedCharacters.NonWhiteSpace)));
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)));
}
[Fact]
@ -146,8 +146,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new DirectiveBlock(
new DirectiveChunkGenerator(descriptor),
Factory.CodeTransition(),
Factory.MetaCode("custom").Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Markup, " ", markup: false).Accepts(AcceptedCharacters.WhiteSpace)), expectedError);
Factory.MetaCode("custom").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Markup, " ", markup: false).Accepts(AcceptedCharactersInternal.WhiteSpace)), expectedError);
}
[Fact]
@ -171,8 +171,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new DirectiveBlock(
new DirectiveChunkGenerator(descriptor),
Factory.CodeTransition(),
Factory.MetaCode("custom").Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Markup, " ", markup: false).Accepts(AcceptedCharacters.WhiteSpace)), expectedError);
Factory.MetaCode("custom").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Markup, " ", markup: false).Accepts(AcceptedCharactersInternal.WhiteSpace)), expectedError);
}
[Fact]
@ -196,8 +196,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new DirectiveBlock(
new DirectiveChunkGenerator(descriptor),
Factory.CodeTransition(),
Factory.MetaCode("custom").Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Markup, " ", markup: false).Accepts(AcceptedCharacters.WhiteSpace)), expectedError);
Factory.MetaCode("custom").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Markup, " ", markup: false).Accepts(AcceptedCharactersInternal.WhiteSpace)), expectedError);
}
[Fact]
@ -221,8 +221,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new DirectiveBlock(
new DirectiveChunkGenerator(descriptor),
Factory.CodeTransition(),
Factory.MetaCode("custom").Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Markup, " ", markup: false).Accepts(AcceptedCharacters.WhiteSpace)),
Factory.MetaCode("custom").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Markup, " ", markup: false).Accepts(AcceptedCharactersInternal.WhiteSpace)),
expectedError);
}
@ -242,22 +242,22 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new DirectiveBlock(
new DirectiveChunkGenerator(descriptor),
Factory.CodeTransition(),
Factory.MetaCode("custom").Accepts(AcceptedCharacters.None),
Factory.MetaCode("custom").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKind.Code, " ", markup: false).Accepts(AcceptedCharacters.WhiteSpace),
Factory.Span(SpanKind.Code, "System.Text.Encoding.ASCIIEncoding", markup: false)
Factory.Span(SpanKindInternal.Code, " ", markup: false).Accepts(AcceptedCharactersInternal.WhiteSpace),
Factory.Span(SpanKindInternal.Code, "System.Text.Encoding.ASCIIEncoding", markup: false)
.With(new DirectiveTokenChunkGenerator(descriptor.Tokens[0]))
.Accepts(AcceptedCharacters.NonWhiteSpace),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace),
Factory.Span(SpanKind.Code, " ", markup: false).Accepts(AcceptedCharacters.WhiteSpace),
Factory.Span(SpanKind.Code, "Some_Member", markup: false)
Factory.Span(SpanKindInternal.Code, " ", markup: false).Accepts(AcceptedCharactersInternal.WhiteSpace),
Factory.Span(SpanKindInternal.Code, "Some_Member", markup: false)
.With(new DirectiveTokenChunkGenerator(descriptor.Tokens[1]))
.Accepts(AcceptedCharacters.NonWhiteSpace),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace),
Factory.Span(SpanKind.Markup, " ", markup: false).Accepts(AcceptedCharacters.WhiteSpace),
Factory.Span(SpanKind.Markup, "\"AString\"", markup: false)
Factory.Span(SpanKindInternal.Markup, " ", markup: false).Accepts(AcceptedCharactersInternal.WhiteSpace),
Factory.Span(SpanKindInternal.Markup, "\"AString\"", markup: false)
.With(new DirectiveTokenChunkGenerator(descriptor.Tokens[2]))
.Accepts(AcceptedCharacters.NonWhiteSpace)));
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)));
}
[Fact]
@ -276,15 +276,15 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new DirectiveBlock(
new DirectiveChunkGenerator(descriptor),
Factory.CodeTransition(),
Factory.MetaCode("custom").Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Markup, " ", markup: false).Accepts(AcceptedCharacters.WhiteSpace),
Factory.Span(SpanKind.Markup, "\"Header\"", markup: false)
Factory.MetaCode("custom").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Markup, " ", markup: false).Accepts(AcceptedCharactersInternal.WhiteSpace),
Factory.Span(SpanKindInternal.Markup, "\"Header\"", markup: false)
.With(new DirectiveTokenChunkGenerator(descriptor.Tokens[0]))
.Accepts(AcceptedCharacters.NonWhiteSpace),
Factory.Span(SpanKind.Markup, " ", markup: false).Accepts(AcceptedCharacters.AllWhiteSpace),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace),
Factory.Span(SpanKindInternal.Markup, " ", markup: false).Accepts(AcceptedCharactersInternal.AllWhiteSpace),
Factory.MetaCode("{")
.AutoCompleteWith(null, atEndOfSpan: true)
.Accepts(AcceptedCharacters.None),
.Accepts(AcceptedCharactersInternal.None),
new MarkupBlock(
Factory.Markup(" "),
new MarkupTagBlock(
@ -293,7 +293,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new MarkupTagBlock(
Factory.Markup("</p>")),
Factory.Markup(" ")),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)));
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)));
}
[Fact]
@ -312,17 +312,17 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new DirectiveBlock(
new DirectiveChunkGenerator(descriptor),
Factory.CodeTransition(),
Factory.MetaCode("custom").Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Markup, " ", markup: false).Accepts(AcceptedCharacters.WhiteSpace),
Factory.Span(SpanKind.Markup, "\"Name\"", markup: false)
Factory.MetaCode("custom").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Markup, " ", markup: false).Accepts(AcceptedCharactersInternal.WhiteSpace),
Factory.Span(SpanKindInternal.Markup, "\"Name\"", markup: false)
.With(new DirectiveTokenChunkGenerator(descriptor.Tokens[0]))
.Accepts(AcceptedCharacters.NonWhiteSpace),
Factory.Span(SpanKind.Markup, " ", markup: false).Accepts(AcceptedCharacters.AllWhiteSpace),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace),
Factory.Span(SpanKindInternal.Markup, " ", markup: false).Accepts(AcceptedCharactersInternal.AllWhiteSpace),
Factory.MetaCode("{")
.AutoCompleteWith(null, atEndOfSpan: true)
.Accepts(AcceptedCharacters.None),
.Accepts(AcceptedCharactersInternal.None),
Factory.Code(" foo(); bar(); ").AsStatement(),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)));
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)));
}
[Fact]
@ -341,20 +341,20 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new DirectiveBlock(
new DirectiveChunkGenerator(descriptor),
Factory.CodeTransition(),
Factory.MetaCode("custom").Accepts(AcceptedCharacters.None),
Factory.MetaCode("custom").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKind.Code, " ", markup: false).Accepts(AcceptedCharacters.WhiteSpace),
Factory.Span(SpanKind.Code, "System.Text.Encoding.ASCIIEncoding", markup: false)
Factory.Span(SpanKindInternal.Code, " ", markup: false).Accepts(AcceptedCharactersInternal.WhiteSpace),
Factory.Span(SpanKindInternal.Code, "System.Text.Encoding.ASCIIEncoding", markup: false)
.With(new DirectiveTokenChunkGenerator(descriptor.Tokens[0]))
.Accepts(AcceptedCharacters.NonWhiteSpace),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace),
Factory.Span(SpanKind.Code, " ", markup: false).Accepts(AcceptedCharacters.WhiteSpace),
Factory.Span(SpanKind.Code, "Some_Member", markup: false)
Factory.Span(SpanKindInternal.Code, " ", markup: false).Accepts(AcceptedCharactersInternal.WhiteSpace),
Factory.Span(SpanKindInternal.Code, "Some_Member", markup: false)
.With(new DirectiveTokenChunkGenerator(descriptor.Tokens[1]))
.Accepts(AcceptedCharacters.NonWhiteSpace),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace),
Factory.Span(SpanKind.Markup, " ", markup: false)
.Accepts(AcceptedCharacters.WhiteSpace)));
Factory.Span(SpanKindInternal.Markup, " ", markup: false)
.Accepts(AcceptedCharactersInternal.WhiteSpace)));
}
[Fact]
@ -378,8 +378,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new DirectiveBlock(
new DirectiveChunkGenerator(descriptor),
Factory.CodeTransition(),
Factory.MetaCode("custom").Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Code, " ", markup: false).Accepts(AcceptedCharacters.WhiteSpace)),
Factory.MetaCode("custom").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Code, " ", markup: false).Accepts(AcceptedCharactersInternal.WhiteSpace)),
expectedErorr);
}
@ -399,12 +399,12 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new DirectiveBlock(
new DirectiveChunkGenerator(descriptor),
Factory.CodeTransition(),
Factory.MetaCode("custom").Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Markup, " ", markup: false).Accepts(AcceptedCharacters.WhiteSpace),
Factory.Span(SpanKind.Markup, "\"hello\"", markup: false)
Factory.MetaCode("custom").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Markup, " ", markup: false).Accepts(AcceptedCharactersInternal.WhiteSpace),
Factory.Span(SpanKindInternal.Markup, "\"hello\"", markup: false)
.With(new DirectiveTokenChunkGenerator(descriptor.Tokens[0]))
.Accepts(AcceptedCharacters.NonWhiteSpace),
Factory.Span(SpanKind.Markup, " ; ", markup: false).Accepts(AcceptedCharacters.WhiteSpace)));
.Accepts(AcceptedCharactersInternal.NonWhiteSpace),
Factory.Span(SpanKindInternal.Markup, " ; ", markup: false).Accepts(AcceptedCharactersInternal.WhiteSpace)));
}
[Fact]
@ -428,13 +428,13 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new DirectiveBlock(
new DirectiveChunkGenerator(descriptor),
Factory.CodeTransition(),
Factory.MetaCode("custom").Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Markup, " ", markup: false).Accepts(AcceptedCharacters.WhiteSpace),
Factory.Span(SpanKind.Markup, "\"hello\"", markup: false)
Factory.MetaCode("custom").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Markup, " ", markup: false).Accepts(AcceptedCharactersInternal.WhiteSpace),
Factory.Span(SpanKindInternal.Markup, "\"hello\"", markup: false)
.With(new DirectiveTokenChunkGenerator(descriptor.Tokens[0]))
.Accepts(AcceptedCharacters.NonWhiteSpace),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace),
Factory.Span(SpanKind.Markup, " ", markup: false).Accepts(AcceptedCharacters.WhiteSpace)),
Factory.Span(SpanKindInternal.Markup, " ", markup: false).Accepts(AcceptedCharactersInternal.WhiteSpace)),
expectedErorr);
}
@ -459,13 +459,13 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new DirectiveBlock(
new DirectiveChunkGenerator(descriptor),
Factory.CodeTransition(),
Factory.MetaCode("custom").Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Markup, " ", markup: false).Accepts(AcceptedCharacters.WhiteSpace),
Factory.Span(SpanKind.Markup, "\"Hello\"", markup: false)
Factory.MetaCode("custom").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Markup, " ", markup: false).Accepts(AcceptedCharactersInternal.WhiteSpace),
Factory.Span(SpanKindInternal.Markup, "\"Hello\"", markup: false)
.With(new DirectiveTokenChunkGenerator(descriptor.Tokens[0]))
.Accepts(AcceptedCharacters.NonWhiteSpace),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace),
Factory.Span(SpanKind.Markup, " ", markup: false).Accepts(AcceptedCharacters.AllWhiteSpace)),
Factory.Span(SpanKindInternal.Markup, " ", markup: false).Accepts(AcceptedCharactersInternal.AllWhiteSpace)),
expectedErorr);
}
@ -490,11 +490,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new DirectiveBlock(
new DirectiveChunkGenerator(descriptor),
Factory.CodeTransition(),
Factory.MetaCode("custom").Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Markup, " ", markup: false).Accepts(AcceptedCharacters.WhiteSpace),
Factory.Span(SpanKind.Markup, "\"Hello\"", markup: false)
Factory.MetaCode("custom").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Markup, " ", markup: false).Accepts(AcceptedCharactersInternal.WhiteSpace),
Factory.Span(SpanKindInternal.Markup, "\"Hello\"", markup: false)
.With(new DirectiveTokenChunkGenerator(descriptor.Tokens[0]))
.Accepts(AcceptedCharacters.NonWhiteSpace)),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)),
expectedErorr);
}
@ -519,15 +519,15 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new DirectiveBlock(
new DirectiveChunkGenerator(descriptor),
Factory.CodeTransition(),
Factory.MetaCode("custom").Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Markup, " ", markup: false).Accepts(AcceptedCharacters.WhiteSpace),
Factory.Span(SpanKind.Markup, "\"Hello\"", markup: false)
Factory.MetaCode("custom").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Markup, " ", markup: false).Accepts(AcceptedCharactersInternal.WhiteSpace),
Factory.Span(SpanKindInternal.Markup, "\"Hello\"", markup: false)
.With(new DirectiveTokenChunkGenerator(descriptor.Tokens[0]))
.Accepts(AcceptedCharacters.NonWhiteSpace),
Factory.Span(SpanKind.Markup, " ", markup: false).Accepts(AcceptedCharacters.AllWhiteSpace),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace),
Factory.Span(SpanKindInternal.Markup, " ", markup: false).Accepts(AcceptedCharactersInternal.AllWhiteSpace),
Factory.MetaCode("{")
.AutoCompleteWith("}", atEndOfSpan: true)
.Accepts(AcceptedCharacters.None)),
.Accepts(AcceptedCharactersInternal.None)),
expectedErorr);
}
@ -539,7 +539,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.CodeTransition(),
Factory
.MetaCode(SyntaxConstants.CSharp.TagHelperPrefixKeyword + " ")
.Accepts(AcceptedCharacters.None),
.Accepts(AcceptedCharactersInternal.None),
Factory.Code("\"\"")
.AsTagHelperPrefixDirective("\"\"")));
}
@ -552,7 +552,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.CodeTransition(),
Factory
.MetaCode(SyntaxConstants.CSharp.TagHelperPrefixKeyword + " ")
.Accepts(AcceptedCharacters.None),
.Accepts(AcceptedCharactersInternal.None),
Factory.Code("Foo")
.AsTagHelperPrefixDirective("Foo")));
}
@ -565,7 +565,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.CodeTransition(),
Factory
.MetaCode(SyntaxConstants.CSharp.TagHelperPrefixKeyword + " ")
.Accepts(AcceptedCharacters.None),
.Accepts(AcceptedCharactersInternal.None),
Factory.Code("\"Foo\"")
.AsTagHelperPrefixDirective("\"Foo\"")));
}
@ -578,10 +578,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.CodeTransition(),
Factory
.MetaCode(SyntaxConstants.CSharp.TagHelperPrefixKeyword + " ")
.Accepts(AcceptedCharacters.None),
.Accepts(AcceptedCharactersInternal.None),
Factory.EmptyCSharp()
.AsTagHelperPrefixDirective(string.Empty)
.Accepts(AcceptedCharacters.AnyExceptNewline)),
.Accepts(AcceptedCharactersInternal.AnyExceptNewline)),
new RazorError(
LegacyResources.FormatParseError_DirectiveMustHaveValue(
SyntaxConstants.CSharp.TagHelperPrefixKeyword),
@ -596,7 +596,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.CodeTransition(),
Factory
.MetaCode(SyntaxConstants.CSharp.TagHelperPrefixKeyword + " ")
.Accepts(AcceptedCharacters.None),
.Accepts(AcceptedCharactersInternal.None),
Factory.Code("\"Foo")
.AsTagHelperPrefixDirective("\"Foo")),
new RazorError(
@ -616,7 +616,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.CodeTransition(),
Factory
.MetaCode(SyntaxConstants.CSharp.TagHelperPrefixKeyword + " ")
.Accepts(AcceptedCharacters.None),
.Accepts(AcceptedCharactersInternal.None),
Factory.Code("Foo \"")
.AsTagHelperPrefixDirective("Foo \"")),
new RazorError(
@ -635,7 +635,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new DirectiveBlock(
Factory.CodeTransition(),
Factory.MetaCode(SyntaxConstants.CSharp.RemoveTagHelperKeyword + " ")
.Accepts(AcceptedCharacters.None),
.Accepts(AcceptedCharactersInternal.None),
Factory.Code("\"\"")
.AsRemoveTagHelper("\"\"")));
}
@ -647,7 +647,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new DirectiveBlock(
Factory.CodeTransition(),
Factory.MetaCode(SyntaxConstants.CSharp.RemoveTagHelperKeyword + " ")
.Accepts(AcceptedCharacters.None),
.Accepts(AcceptedCharactersInternal.None),
Factory.Code("Foo")
.AsRemoveTagHelper("Foo")));
}
@ -659,7 +659,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new DirectiveBlock(
Factory.CodeTransition(),
Factory.MetaCode(SyntaxConstants.CSharp.RemoveTagHelperKeyword + " ")
.Accepts(AcceptedCharacters.None),
.Accepts(AcceptedCharactersInternal.None),
Factory.Code("\"Foo\"")
.AsRemoveTagHelper("\"Foo\"")));
}
@ -671,10 +671,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new DirectiveBlock(
Factory.CodeTransition(),
Factory.MetaCode(SyntaxConstants.CSharp.RemoveTagHelperKeyword + " ")
.Accepts(AcceptedCharacters.None),
.Accepts(AcceptedCharactersInternal.None),
Factory.Code("Foo, Bar ")
.AsRemoveTagHelper("Foo, Bar")
.Accepts(AcceptedCharacters.AnyExceptNewline)));
.Accepts(AcceptedCharactersInternal.AnyExceptNewline)));
}
[Fact]
@ -684,10 +684,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new DirectiveBlock(
Factory.CodeTransition(),
Factory.MetaCode(SyntaxConstants.CSharp.RemoveTagHelperKeyword + " ")
.Accepts(AcceptedCharacters.None),
.Accepts(AcceptedCharactersInternal.None),
Factory.EmptyCSharp()
.AsRemoveTagHelper(string.Empty)
.Accepts(AcceptedCharacters.AnyExceptNewline)),
.Accepts(AcceptedCharactersInternal.AnyExceptNewline)),
new RazorError(
LegacyResources.FormatParseError_DirectiveMustHaveValue(
SyntaxConstants.CSharp.RemoveTagHelperKeyword),
@ -701,7 +701,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new DirectiveBlock(
Factory.CodeTransition(),
Factory.MetaCode(SyntaxConstants.CSharp.RemoveTagHelperKeyword + " ")
.Accepts(AcceptedCharacters.None),
.Accepts(AcceptedCharactersInternal.None),
Factory.Code("\"Foo")
.AsRemoveTagHelper("\"Foo")),
new RazorError(
@ -720,10 +720,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new DirectiveBlock(
Factory.CodeTransition(),
Factory.MetaCode(SyntaxConstants.CSharp.RemoveTagHelperKeyword + " ")
.Accepts(AcceptedCharacters.None),
.Accepts(AcceptedCharactersInternal.None),
Factory.Code("Foo\"")
.AsRemoveTagHelper("Foo\"")
.Accepts(AcceptedCharacters.AnyExceptNewline)),
.Accepts(AcceptedCharactersInternal.AnyExceptNewline)),
new RazorError(
LegacyResources.ParseError_Unterminated_String_Literal,
absoluteIndex: 20, lineIndex: 0, columnIndex: 20, length: 1),
@ -740,7 +740,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new DirectiveBlock(
Factory.CodeTransition(),
Factory.MetaCode(SyntaxConstants.CSharp.AddTagHelperKeyword + " ")
.Accepts(AcceptedCharacters.None),
.Accepts(AcceptedCharactersInternal.None),
Factory.Code("\"\"")
.AsAddTagHelper("\"\"")));
}
@ -752,7 +752,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new DirectiveBlock(
Factory.CodeTransition(),
Factory.MetaCode(SyntaxConstants.CSharp.AddTagHelperKeyword + " ")
.Accepts(AcceptedCharacters.None),
.Accepts(AcceptedCharactersInternal.None),
Factory.Code("Foo")
.AsAddTagHelper("Foo")));
}
@ -764,7 +764,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new DirectiveBlock(
Factory.CodeTransition(),
Factory.MetaCode(SyntaxConstants.CSharp.AddTagHelperKeyword + " ")
.Accepts(AcceptedCharacters.None),
.Accepts(AcceptedCharactersInternal.None),
Factory.Code("\"Foo\"")
.AsAddTagHelper("\"Foo\"")));
}
@ -776,7 +776,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new DirectiveBlock(
Factory.CodeTransition(),
Factory.MetaCode(SyntaxConstants.CSharp.AddTagHelperKeyword + " ")
.Accepts(AcceptedCharacters.None),
.Accepts(AcceptedCharactersInternal.None),
Factory.Code("Foo, Bar ")
.AsAddTagHelper("Foo, Bar")));
}
@ -788,10 +788,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new DirectiveBlock(
Factory.CodeTransition(),
Factory.MetaCode(SyntaxConstants.CSharp.AddTagHelperKeyword + " ")
.Accepts(AcceptedCharacters.None),
.Accepts(AcceptedCharactersInternal.None),
Factory.EmptyCSharp()
.AsAddTagHelper(string.Empty)
.Accepts(AcceptedCharacters.AnyExceptNewline)),
.Accepts(AcceptedCharactersInternal.AnyExceptNewline)),
new RazorError(
LegacyResources.FormatParseError_DirectiveMustHaveValue(SyntaxConstants.CSharp.AddTagHelperKeyword),
absoluteIndex: 1, lineIndex: 0, columnIndex: 1, length: 12));
@ -804,7 +804,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new DirectiveBlock(
Factory.CodeTransition(),
Factory.MetaCode(SyntaxConstants.CSharp.AddTagHelperKeyword + " ")
.Accepts(AcceptedCharacters.None),
.Accepts(AcceptedCharactersInternal.None),
Factory.Code("\"Foo")
.AsAddTagHelper("\"Foo")),
new RazorError(
@ -823,10 +823,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new DirectiveBlock(
Factory.CodeTransition(),
Factory.MetaCode(SyntaxConstants.CSharp.AddTagHelperKeyword + " ")
.Accepts(AcceptedCharacters.None),
.Accepts(AcceptedCharactersInternal.None),
Factory.Code("Foo\"")
.AsAddTagHelper("Foo\"")
.Accepts(AcceptedCharacters.AnyExceptNewline)),
.Accepts(AcceptedCharactersInternal.AnyExceptNewline)),
new RazorError(
LegacyResources.ParseError_Unterminated_String_Literal,
absoluteIndex: 17, lineIndex: 0, columnIndex: 17, length: 1),
@ -842,10 +842,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ParseBlockTest("@inherits System.Web.WebPages.WebPage",
new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.InheritsDirectiveDescriptor),
Factory.CodeTransition(),
Factory.MetaCode("inherits").Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
Factory.Span(SpanKind.Code, "System.Web.WebPages.WebPage", markup: false)
.Accepts(AcceptedCharacters.NonWhiteSpace)
Factory.MetaCode("inherits").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace),
Factory.Span(SpanKindInternal.Code, "System.Web.WebPages.WebPage", markup: false)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.InheritsDirectiveDescriptor.Tokens.First()))));
}
@ -855,10 +855,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ParseBlockTest("@inherits string[[]][]",
new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.InheritsDirectiveDescriptor),
Factory.CodeTransition(),
Factory.MetaCode("inherits").Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
Factory.Span(SpanKind.Code, "string[[]][]", markup: false)
.Accepts(AcceptedCharacters.NonWhiteSpace)
Factory.MetaCode("inherits").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace),
Factory.Span(SpanKindInternal.Code, "string[[]][]", markup: false)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.InheritsDirectiveDescriptor.Tokens.First()))));
}
@ -868,10 +868,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ParseBlockTest("@inherits System.Web.Mvc.WebViewPage<IEnumerable<MvcApplication2.Models.RegisterModel>>",
new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.InheritsDirectiveDescriptor),
Factory.CodeTransition(),
Factory.MetaCode("inherits").Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
Factory.Span(SpanKind.Code, "System.Web.Mvc.WebViewPage<IEnumerable<MvcApplication2.Models.RegisterModel>>", markup: false)
.Accepts(AcceptedCharacters.NonWhiteSpace)
Factory.MetaCode("inherits").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace),
Factory.Span(SpanKindInternal.Code, "System.Web.Mvc.WebViewPage<IEnumerable<MvcApplication2.Models.RegisterModel>>", markup: false)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.InheritsDirectiveDescriptor.Tokens.First()))));
}
@ -881,10 +881,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ParseBlockTest("@inherits string",
new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.InheritsDirectiveDescriptor),
Factory.CodeTransition(),
Factory.MetaCode("inherits").Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
Factory.Span(SpanKind.Code, "string", markup: false)
.Accepts(AcceptedCharacters.NonWhiteSpace)
Factory.MetaCode("inherits").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace),
Factory.Span(SpanKindInternal.Code, "string", markup: false)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.InheritsDirectiveDescriptor.Tokens.First()))));
}
@ -894,11 +894,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ParseBlockTest("@functions { foo(); bar(); }",
new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.FunctionsDirectiveDescriptor),
Factory.CodeTransition(),
Factory.MetaCode("functions").Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace),
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharacters.None),
Factory.MetaCode("functions").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace),
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None),
Factory.Code(" foo(); bar(); ").AsStatement(),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)));
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)));
}
[Fact]
@ -907,11 +907,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ParseBlockTest("@functions { }",
new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.FunctionsDirectiveDescriptor),
Factory.CodeTransition(),
Factory.MetaCode("functions").Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace),
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharacters.None),
Factory.MetaCode("functions").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace),
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None),
Factory.Code(" ").AsStatement(),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)));
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)));
}
[Fact]
@ -920,13 +920,13 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ParseBlockTest("@section Header { <p>F{o}o</p> }",
new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor),
Factory.CodeTransition(),
Factory.MetaCode("section").Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
Factory.Span(SpanKind.Code, "Header", CSharpSymbolType.Identifier)
.Accepts(AcceptedCharacters.NonWhiteSpace)
Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace),
Factory.Span(SpanKindInternal.Code, "Header", CSharpSymbolType.Identifier)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())),
Factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace),
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharacters.None),
Factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace),
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None),
new MarkupBlock(
Factory.Markup(" "),
new MarkupTagBlock(
@ -936,7 +936,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.Markup("</p>")),
Factory.Markup(" ")),
Factory.MetaCode("}")
.Accepts(AcceptedCharacters.None)));
.Accepts(AcceptedCharactersInternal.None)));
}
[Fact]
@ -955,8 +955,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new DirectiveBlock(
new DirectiveChunkGenerator(descriptor),
Factory.CodeTransition(),
Factory.MetaCode("custom").Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Markup, " ", markup: false).Accepts(AcceptedCharacters.WhiteSpace)));
Factory.MetaCode("custom").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Markup, " ", markup: false).Accepts(AcceptedCharactersInternal.WhiteSpace)));
}
[Fact]
@ -977,10 +977,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new DirectiveBlock(
new DirectiveChunkGenerator(descriptor),
Factory.CodeTransition(),
Factory.MetaCode("custom").Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Markup, " ", markup: false).Accepts(AcceptedCharacters.WhiteSpace),
Factory.Span(SpanKind.Markup, "\"simple-value\"", markup: false)
.Accepts(AcceptedCharacters.NonWhiteSpace)
Factory.MetaCode("custom").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Markup, " ", markup: false).Accepts(AcceptedCharactersInternal.WhiteSpace),
Factory.Span(SpanKindInternal.Markup, "\"simple-value\"", markup: false)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)
.With(chunkGenerator)));
}
@ -1002,10 +1002,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new DirectiveBlock(
new DirectiveChunkGenerator(descriptor),
Factory.CodeTransition(),
Factory.MetaCode("custom").Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Markup, " ", markup: false).Accepts(AcceptedCharacters.WhiteSpace),
Factory.Span(SpanKind.Markup, "\"{formaction}?/{id}?\"", markup: false)
.Accepts(AcceptedCharacters.NonWhiteSpace)
Factory.MetaCode("custom").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Markup, " ", markup: false).Accepts(AcceptedCharactersInternal.WhiteSpace),
Factory.Span(SpanKindInternal.Markup, "\"{formaction}?/{id}?\"", markup: false)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)
.With(chunkGenerator)));
}
@ -1025,14 +1025,14 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new DirectiveBlock(
new DirectiveChunkGenerator(descriptor),
Factory.CodeTransition(),
Factory.MetaCode("custom").Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Markup, " ", markup: false).Accepts(AcceptedCharacters.WhiteSpace),
Factory.Span(SpanKind.Markup, "\"{formaction}?/{id}?\"", markup: false)
.Accepts(AcceptedCharacters.NonWhiteSpace)
Factory.MetaCode("custom").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Markup, " ", markup: false).Accepts(AcceptedCharactersInternal.WhiteSpace),
Factory.Span(SpanKindInternal.Markup, "\"{formaction}?/{id}?\"", markup: false)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)
.With(new DirectiveTokenChunkGenerator(descriptor.Tokens.First())),
Factory.Span(SpanKind.Code, " ", markup: false).Accepts(AcceptedCharacters.WhiteSpace),
Factory.Span(SpanKind.Code, "System.String", markup: false)
.Accepts(AcceptedCharacters.NonWhiteSpace)
Factory.Span(SpanKindInternal.Code, " ", markup: false).Accepts(AcceptedCharactersInternal.WhiteSpace),
Factory.Span(SpanKindInternal.Code, "System.String", markup: false)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)
.With(new DirectiveTokenChunkGenerator(descriptor.Tokens.Last()))));
}
@ -1052,8 +1052,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new DirectiveBlock(
new DirectiveChunkGenerator(descriptor),
Factory.CodeTransition(),
Factory.MetaCode("TestDirective").Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Code, " ", markup: false).Accepts(AcceptedCharacters.WhiteSpace)));
Factory.MetaCode("TestDirective").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Code, " ", markup: false).Accepts(AcceptedCharactersInternal.WhiteSpace)));
}
[Fact]
@ -1072,10 +1072,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new DirectiveBlock(
new DirectiveChunkGenerator(descriptor),
Factory.CodeTransition(),
Factory.MetaCode("TestDirective").Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Code, " ", markup: false).Accepts(AcceptedCharacters.WhiteSpace),
Factory.Span(SpanKind.Code, "PropertyName", markup: false)
.Accepts(AcceptedCharacters.NonWhiteSpace)
Factory.MetaCode("TestDirective").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Code, " ", markup: false).Accepts(AcceptedCharactersInternal.WhiteSpace),
Factory.Span(SpanKindInternal.Code, "PropertyName", markup: false)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)
.With(new DirectiveTokenChunkGenerator(descriptor.Tokens.First()))));
}
@ -1094,7 +1094,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new DirectiveBlock(
new DirectiveChunkGenerator(descriptor),
Factory.CodeTransition(),
Factory.MetaCode("class").Accepts(AcceptedCharacters.None)));
Factory.MetaCode("class").Accepts(AcceptedCharactersInternal.None)));
}
[Fact]
@ -1112,7 +1112,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new DirectiveBlock(
new DirectiveChunkGenerator(descriptor),
Factory.CodeTransition(),
Factory.MetaCode("namespace").Accepts(AcceptedCharacters.None)));
Factory.MetaCode("namespace").Accepts(AcceptedCharactersInternal.None)));
}

View File

@ -16,7 +16,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.CodeTransition(),
Factory.EmptyCSharp()
.AsImplicitExpression(KeywordSet)
.Accepts(AcceptedCharacters.NonWhiteSpace)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)
),
new RazorError(
LegacyResources.FormatParseError_Unexpected_Character_At_Start_Of_CodeBlock_CS('"'),
@ -32,7 +32,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.CodeTransition(),
Factory.Code("helper")
.AsImplicitExpression(KeywordSet)
.Accepts(AcceptedCharacters.NonWhiteSpace)),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)),
new RazorError(
LegacyResources.FormatParseError_HelperDirectiveNotAvailable(SyntaxConstants.CSharp.HelperKeyword),
new SourceLocation(1, 0, 1),
@ -54,7 +54,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
ParseBlockTest("{",
new StatementBlock(
Factory.MetaCode("{").Accepts(AcceptedCharacters.None),
Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
Factory.EmptyCSharp()
.AsStatement()
.With(new AutoCompleteEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString) { AutoCompleteString = "}" })
@ -70,11 +70,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
ParseBlockTest("{}",
new StatementBlock(
Factory.MetaCode("{").Accepts(AcceptedCharacters.None),
Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
Factory.EmptyCSharp()
.AsStatement()
.AutoCompleteWith(autoCompleteString: null),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)
));
}
@ -86,7 +86,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.CodeTransition(),
Factory.EmptyCSharp()
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace)),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)),
new RazorError(
LegacyResources.ParseError_Unexpected_WhiteSpace_At_Start_Of_CodeBlock_CS,
new SourceLocation(1, 0, 1),
@ -100,7 +100,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
+ " @ {}" + Environment.NewLine
+ "}",
new StatementBlock(
Factory.MetaCode("{").Accepts(AcceptedCharacters.None),
Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
Factory.Code(Environment.NewLine + " ")
.AsStatement()
.AutoCompleteWith(autoCompleteString: null),
@ -108,9 +108,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.CodeTransition(),
Factory.EmptyCSharp()
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords, acceptTrailingDot: true)
.Accepts(AcceptedCharacters.NonWhiteSpace)),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)),
Factory.Code(" {}" + Environment.NewLine).AsStatement(),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)
),
new RazorError(
LegacyResources.ParseError_Unexpected_WhiteSpace_At_Start_Of_CodeBlock_CS,
@ -124,7 +124,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ParseBlockTest("{" + Environment.NewLine
+ " @",
new StatementBlock(
Factory.MetaCode("{").Accepts(AcceptedCharacters.None),
Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
Factory.Code(Environment.NewLine + " ")
.AsStatement()
.AutoCompleteWith("}"),
@ -132,7 +132,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.CodeTransition(),
Factory.EmptyCSharp()
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords, acceptTrailingDot: true)
.Accepts(AcceptedCharacters.NonWhiteSpace)),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)),
Factory.EmptyCSharp().AsStatement()
),
new RazorError(
@ -152,7 +152,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.CodeTransition(),
Factory.EmptyCSharp()
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace)),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)),
new RazorError(
LegacyResources.FormatParseError_Unexpected_Character_At_Start_Of_CodeBlock_CS("!"),
new SourceLocation(1, 0, 1),
@ -165,7 +165,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ParseBlockTest("(foo bar" + Environment.NewLine
+ "baz",
new ExpressionBlock(
Factory.MetaCode("(").Accepts(AcceptedCharacters.None),
Factory.MetaCode("(").Accepts(AcceptedCharactersInternal.None),
Factory.Code($"foo bar{Environment.NewLine}baz").AsExpression()
),
new RazorError(
@ -182,7 +182,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
+ "baz" + Environment.NewLine
+ "</html",
new ExpressionBlock(
Factory.MetaCode("(").Accepts(AcceptedCharacters.None),
Factory.MetaCode("(").Accepts(AcceptedCharactersInternal.None),
Factory.Code($"foo bar{Environment.NewLine}").AsExpression()
),
new RazorError(
@ -284,7 +284,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
ParseBlockTest("{ var foo = bar; if(foo != null) { bar(); } ",
new StatementBlock(
Factory.MetaCode("{").Accepts(AcceptedCharacters.None),
Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
Factory.Code(" var foo = bar; if(foo != null) { bar(); } ")
.AsStatement()
.AutoCompleteWith("}")),
@ -300,9 +300,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
ParseBlockTest("functions { var foo = bar; if(foo != null) { bar(); } ",
new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.FunctionsDirectiveDescriptor),
Factory.MetaCode("functions").Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace),
Factory.MetaCode("{").AutoCompleteWith("}", atEndOfSpan: true).Accepts(AcceptedCharacters.None),
Factory.MetaCode("functions").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace),
Factory.MetaCode("{").AutoCompleteWith("}", atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None),
Factory.Code(" var foo = bar; if(foo != null) { bar(); } ").AsStatement()),
new RazorError(
LegacyResources.FormatParseError_Expected_EndOfBlock_Before_EOF("functions", '}', '{'),
@ -438,21 +438,21 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new StatementBlock(
Factory.Code("if(foo) ").AsStatement(),
new MarkupBlock(
BlockFactory.MarkupTagBlock("<p>", AcceptedCharacters.None),
BlockFactory.MarkupTagBlock("<p>", AcceptedCharactersInternal.None),
Factory.Markup("Bar"),
BlockFactory.MarkupTagBlock("</p>", AcceptedCharacters.None),
Factory.Markup(" ").Accepts(AcceptedCharacters.None)),
BlockFactory.MarkupTagBlock("</p>", AcceptedCharactersInternal.None),
Factory.Markup(" ").Accepts(AcceptedCharactersInternal.None)),
Factory.Code("else if(bar) ").AsStatement(),
new MarkupBlock(
BlockFactory.MarkupTagBlock("<p>", AcceptedCharacters.None),
BlockFactory.MarkupTagBlock("<p>", AcceptedCharactersInternal.None),
Factory.Markup("Baz"),
BlockFactory.MarkupTagBlock("</p>", AcceptedCharacters.None),
Factory.Markup(" ").Accepts(AcceptedCharacters.None)),
BlockFactory.MarkupTagBlock("</p>", AcceptedCharactersInternal.None),
Factory.Markup(" ").Accepts(AcceptedCharactersInternal.None)),
Factory.Code("else ").AsStatement(),
new MarkupBlock(
BlockFactory.MarkupTagBlock("<p>", AcceptedCharacters.None),
BlockFactory.MarkupTagBlock("<p>", AcceptedCharactersInternal.None),
Factory.Markup("Boz"),
BlockFactory.MarkupTagBlock("</p>", AcceptedCharacters.None)),
BlockFactory.MarkupTagBlock("</p>", AcceptedCharactersInternal.None)),
Factory.EmptyCSharp().AsStatement()
),
new RazorError(expectedMessage, 8, 0, 8, 1),
@ -482,10 +482,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new MarkupBlock(
Factory.Markup(" "),
Factory.MarkupTransition(),
BlockFactory.MarkupTagBlock("<p>", AcceptedCharacters.None),
BlockFactory.MarkupTagBlock("<p>", AcceptedCharactersInternal.None),
Factory.Markup("Bar"),
BlockFactory.MarkupTagBlock("</p>", AcceptedCharacters.None),
Factory.Markup(" ").Accepts(AcceptedCharacters.None)),
BlockFactory.MarkupTagBlock("</p>", AcceptedCharactersInternal.None),
Factory.Markup(" ").Accepts(AcceptedCharactersInternal.None)),
Factory.Code("}").AsStatement()
),
new RazorError(
@ -559,11 +559,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.Code($"if({Environment.NewLine}else {{").AsStatement(),
new MarkupBlock(
Factory.Markup(" "),
BlockFactory.MarkupTagBlock("<p>", AcceptedCharacters.None),
BlockFactory.MarkupTagBlock("<p>", AcceptedCharactersInternal.None),
Factory.Markup("Foo"),
BlockFactory.MarkupTagBlock("</p>", AcceptedCharacters.None),
Factory.Markup(" ").Accepts(AcceptedCharacters.None)),
Factory.Code("}").AsStatement().Accepts(AcceptedCharacters.None)
BlockFactory.MarkupTagBlock("</p>", AcceptedCharactersInternal.None),
Factory.Markup(" ").Accepts(AcceptedCharactersInternal.None)),
Factory.Code("}").AsStatement().Accepts(AcceptedCharactersInternal.None)
),
new RazorError(
LegacyResources.FormatParseError_Expected_CloseBracket_Before_EOF("(", ")"),
@ -578,7 +578,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
+ " var p = \"foo bar baz" + Environment.NewLine
+ ";" + Environment.NewLine
+ "}",
BlockKind.Statement, SpanKind.Code,
BlockKindInternal.Statement, SpanKindInternal.Code,
new RazorError(
LegacyResources.ParseError_Unterminated_String_Literal,
new SourceLocation(21 + Environment.NewLine.Length, 1, 12),
@ -588,7 +588,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
[Fact]
public void ParseBlockTerminatesNormalStringAtEndOfFile()
{
SingleSpanBlockTest("if(foo) { var foo = \"blah blah blah blah blah", BlockKind.Statement, SpanKind.Code,
SingleSpanBlockTest("if(foo) { var foo = \"blah blah blah blah blah", BlockKindInternal.Statement, SpanKindInternal.Code,
new RazorError(
LegacyResources.ParseError_Unterminated_String_Literal,
new SourceLocation(20, 0, 20),
@ -607,7 +607,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
+ "<p>Foo</p>" + Environment.NewLine
+ "blah " + Environment.NewLine
+ "blah",
BlockKind.Statement, SpanKind.Code,
BlockKindInternal.Statement, SpanKindInternal.Code,
new RazorError(
LegacyResources.ParseError_Unterminated_String_Literal,
new SourceLocation(20, 0, 20),
@ -628,15 +628,15 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new StatementBlock(
Factory.Code($"if(foo) {{{Environment.NewLine} var foo = \"foo bar baz{Environment.NewLine} ").AsStatement(),
new MarkupBlock(
BlockFactory.MarkupTagBlock("<p>", AcceptedCharacters.None),
BlockFactory.MarkupTagBlock("<p>", AcceptedCharactersInternal.None),
Factory.Markup("Foo is "),
new ExpressionBlock(
Factory.CodeTransition(),
Factory.Code("foo")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace)),
BlockFactory.MarkupTagBlock("</p>", AcceptedCharacters.None),
Factory.Markup(Environment.NewLine).Accepts(AcceptedCharacters.None)),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)),
BlockFactory.MarkupTagBlock("</p>", AcceptedCharactersInternal.None),
Factory.Markup(Environment.NewLine).Accepts(AcceptedCharactersInternal.None)),
Factory.Code("}").AsStatement()
),
new RazorError(
@ -650,9 +650,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
ParseBlockTest("(Request[\"description\"] ?? @photo.Description)",
new ExpressionBlock(
Factory.MetaCode("(").Accepts(AcceptedCharacters.None),
Factory.MetaCode("(").Accepts(AcceptedCharactersInternal.None),
Factory.Code("Request[\"description\"] ?? @photo.Description").AsExpression(),
Factory.MetaCode(")").Accepts(AcceptedCharacters.None)
Factory.MetaCode(")").Accepts(AcceptedCharactersInternal.None)
));
}
@ -661,15 +661,15 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
ParseBlockTest(@"{string.Format(<html></html>}",
new StatementBlock(
Factory.MetaCode("{").Accepts(AcceptedCharacters.None),
Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
Factory.Code("string.Format(")
.AsStatement()
.AutoCompleteWith(autoCompleteString: null),
new MarkupBlock(
BlockFactory.MarkupTagBlock("<html>", AcceptedCharacters.None),
BlockFactory.MarkupTagBlock("</html>", AcceptedCharacters.None)),
BlockFactory.MarkupTagBlock("<html>", AcceptedCharactersInternal.None),
BlockFactory.MarkupTagBlock("</html>", AcceptedCharactersInternal.None)),
Factory.EmptyCSharp().AsStatement(),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)),
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
expectedErrors: new[]
{
new RazorError(
@ -684,8 +684,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
SingleSpanBlockTest(
keyword + " (foo) { var foo = bar; if(foo != null) { bar(); } ",
BlockKind.Statement,
SpanKind.Code,
BlockKindInternal.Statement,
SpanKindInternal.Code,
new RazorError(
LegacyResources.FormatParseError_Expected_EndOfBlock_Before_EOF(keyword, '}', '{'),
SourceLocation.Zero,

View File

@ -14,9 +14,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ParseBlockTest("@()",
new ExpressionBlock(
Factory.CodeTransition(),
Factory.MetaCode("(").Accepts(AcceptedCharacters.None),
Factory.MetaCode("(").Accepts(AcceptedCharactersInternal.None),
Factory.EmptyCSharp().AsExpression(),
Factory.MetaCode(")").Accepts(AcceptedCharacters.None)
Factory.MetaCode(")").Accepts(AcceptedCharactersInternal.None)
));
}
@ -26,7 +26,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ParseBlockTest("@(",
new ExpressionBlock(
Factory.CodeTransition(),
Factory.MetaCode("(").Accepts(AcceptedCharacters.None),
Factory.MetaCode("(").Accepts(AcceptedCharactersInternal.None),
Factory.EmptyCSharp().AsExpression()
),
new RazorError(
@ -42,9 +42,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ParseBlockTest("@(\"\\\"\")",
new ExpressionBlock(
Factory.CodeTransition(),
Factory.MetaCode("(").Accepts(AcceptedCharacters.None),
Factory.MetaCode("(").Accepts(AcceptedCharactersInternal.None),
Factory.Code("\"\\\"\"").AsExpression(),
Factory.MetaCode(")").Accepts(AcceptedCharacters.None)
Factory.MetaCode(")").Accepts(AcceptedCharactersInternal.None)
));
}
@ -54,9 +54,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ParseBlockTest("@(@\"\"\"\")",
new ExpressionBlock(
Factory.CodeTransition(),
Factory.MetaCode("(").Accepts(AcceptedCharacters.None),
Factory.MetaCode("(").Accepts(AcceptedCharactersInternal.None),
Factory.Code("@\"\"\"\"").AsExpression(),
Factory.MetaCode(")").Accepts(AcceptedCharacters.None)
Factory.MetaCode(")").Accepts(AcceptedCharactersInternal.None)
));
}
@ -66,9 +66,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ParseBlockTest("@(@\"\"\"\"\"\")",
new ExpressionBlock(
Factory.CodeTransition(),
Factory.MetaCode("(").Accepts(AcceptedCharacters.None),
Factory.MetaCode("(").Accepts(AcceptedCharactersInternal.None),
Factory.Code("@\"\"\"\"\"\"").AsExpression(),
Factory.MetaCode(")").Accepts(AcceptedCharacters.None)
Factory.MetaCode(")").Accepts(AcceptedCharactersInternal.None)
));
}
@ -82,9 +82,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
+ @""")",
new ExpressionBlock(
Factory.CodeTransition(),
Factory.MetaCode("(").Accepts(AcceptedCharacters.None),
Factory.MetaCode("(").Accepts(AcceptedCharactersInternal.None),
Factory.Code($"@\"{Environment.NewLine}Foo{Environment.NewLine}Bar{Environment.NewLine}Baz{Environment.NewLine}\"").AsExpression(),
Factory.MetaCode(")").Accepts(AcceptedCharacters.None)
Factory.MetaCode(")").Accepts(AcceptedCharactersInternal.None)
));
}
@ -94,9 +94,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ParseBlockTest("@(\"\\\"hello, world\\\"\")",
new ExpressionBlock(
Factory.CodeTransition(),
Factory.MetaCode("(").Accepts(AcceptedCharacters.None),
Factory.MetaCode("(").Accepts(AcceptedCharactersInternal.None),
Factory.Code("\"\\\"hello, world\\\"\"").AsExpression(),
Factory.MetaCode(")").Accepts(AcceptedCharacters.None)
Factory.MetaCode(")").Accepts(AcceptedCharactersInternal.None)
));
}
@ -106,9 +106,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ParseBlockTest("@(@\"\"\"hello, world\"\"\")",
new ExpressionBlock(
Factory.CodeTransition(),
Factory.MetaCode("(").Accepts(AcceptedCharacters.None),
Factory.MetaCode("(").Accepts(AcceptedCharactersInternal.None),
Factory.Code("@\"\"\"hello, world\"\"\"").AsExpression(),
Factory.MetaCode(")").Accepts(AcceptedCharacters.None)
Factory.MetaCode(")").Accepts(AcceptedCharactersInternal.None)
));
}
@ -118,9 +118,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ParseBlockTest("@(\"\\\"\\\"\")",
new ExpressionBlock(
Factory.CodeTransition(),
Factory.MetaCode("(").Accepts(AcceptedCharacters.None),
Factory.MetaCode("(").Accepts(AcceptedCharactersInternal.None),
Factory.Code("\"\\\"\\\"\"").AsExpression(),
Factory.MetaCode(")").Accepts(AcceptedCharacters.None)
Factory.MetaCode(")").Accepts(AcceptedCharactersInternal.None)
));
}
@ -130,9 +130,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ParseBlockTest("@(@\"\"\"\"\"\")",
new ExpressionBlock(
Factory.CodeTransition(),
Factory.MetaCode("(").Accepts(AcceptedCharacters.None),
Factory.MetaCode("(").Accepts(AcceptedCharactersInternal.None),
Factory.Code("@\"\"\"\"\"\"").AsExpression(),
Factory.MetaCode(")").Accepts(AcceptedCharacters.None)
Factory.MetaCode(")").Accepts(AcceptedCharactersInternal.None)
));
}
}

View File

@ -33,24 +33,24 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
};
// implicitExpression, expectedImplicitExpression, acceptedCharacters, expectedErrors
return new TheoryData<string, string, AcceptedCharacters, RazorError[]>
return new TheoryData<string, string, AcceptedCharactersInternal, RazorError[]>
{
{ "val??[", "val", AcceptedCharacters.NonWhiteSpace, noErrors },
{ "val??[0", "val", AcceptedCharacters.NonWhiteSpace, noErrors },
{ "val?[", "val?[", AcceptedCharacters.Any, missingEndBracketError(5) },
{ "val?(", "val", AcceptedCharacters.NonWhiteSpace, noErrors },
{ "val?[more", "val?[more", AcceptedCharacters.Any, missingEndBracketError(5) },
{ "val?[0]", "val?[0]", AcceptedCharacters.NonWhiteSpace, noErrors },
{ "val?[<p>", "val?[", AcceptedCharacters.Any, missingEndBracketError(5) },
{ "val?[more.<p>", "val?[more.", AcceptedCharacters.Any, missingEndBracketError(5) },
{ "val??[more<p>", "val", AcceptedCharacters.NonWhiteSpace, noErrors },
{ "val?[-1]?", "val?[-1]", AcceptedCharacters.NonWhiteSpace, noErrors },
{ "val?[abc]?[def", "val?[abc]?[def", AcceptedCharacters.Any, missingEndBracketError(11) },
{ "val?[abc]?[2]", "val?[abc]?[2]", AcceptedCharacters.NonWhiteSpace, noErrors },
{ "val?[abc]?.more?[def]", "val?[abc]?.more?[def]", AcceptedCharacters.NonWhiteSpace, noErrors },
{ "val?[abc]?.more?.abc", "val?[abc]?.more?.abc", AcceptedCharacters.NonWhiteSpace, noErrors },
{ "val?[null ?? true]", "val?[null ?? true]", AcceptedCharacters.NonWhiteSpace, noErrors },
{ "val?[abc?.gef?[-1]]", "val?[abc?.gef?[-1]]", AcceptedCharacters.NonWhiteSpace, noErrors },
{ "val??[", "val", AcceptedCharactersInternal.NonWhiteSpace, noErrors },
{ "val??[0", "val", AcceptedCharactersInternal.NonWhiteSpace, noErrors },
{ "val?[", "val?[", AcceptedCharactersInternal.Any, missingEndBracketError(5) },
{ "val?(", "val", AcceptedCharactersInternal.NonWhiteSpace, noErrors },
{ "val?[more", "val?[more", AcceptedCharactersInternal.Any, missingEndBracketError(5) },
{ "val?[0]", "val?[0]", AcceptedCharactersInternal.NonWhiteSpace, noErrors },
{ "val?[<p>", "val?[", AcceptedCharactersInternal.Any, missingEndBracketError(5) },
{ "val?[more.<p>", "val?[more.", AcceptedCharactersInternal.Any, missingEndBracketError(5) },
{ "val??[more<p>", "val", AcceptedCharactersInternal.NonWhiteSpace, noErrors },
{ "val?[-1]?", "val?[-1]", AcceptedCharactersInternal.NonWhiteSpace, noErrors },
{ "val?[abc]?[def", "val?[abc]?[def", AcceptedCharactersInternal.Any, missingEndBracketError(11) },
{ "val?[abc]?[2]", "val?[abc]?[2]", AcceptedCharactersInternal.NonWhiteSpace, noErrors },
{ "val?[abc]?.more?[def]", "val?[abc]?.more?[def]", AcceptedCharactersInternal.NonWhiteSpace, noErrors },
{ "val?[abc]?.more?.abc", "val?[abc]?.more?.abc", AcceptedCharactersInternal.NonWhiteSpace, noErrors },
{ "val?[null ?? true]", "val?[null ?? true]", AcceptedCharactersInternal.NonWhiteSpace, noErrors },
{ "val?[abc?.gef?[-1]]", "val?[abc?.gef?[-1]]", AcceptedCharactersInternal.NonWhiteSpace, noErrors },
};
}
}
@ -67,7 +67,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ImplicitExpressionTest(
implicitExpresison,
expectedImplicitExpression,
(AcceptedCharacters)acceptedCharacters,
(AcceptedCharactersInternal)acceptedCharacters,
(RazorError[])expectedErrors);
}
@ -116,7 +116,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.CodeTransition(),
Factory.Code("foo")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords, acceptTrailingDot: true)
.Accepts(AcceptedCharacters.NonWhiteSpace)),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)),
Factory.Code(" }").AsStatement()));
}
@ -134,7 +134,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.CodeTransition(),
Factory.EmptyCSharp()
.AsImplicitExpression(KeywordSet)
.Accepts(AcceptedCharacters.NonWhiteSpace)),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)),
new RazorError(
LegacyResources.FormatParseError_Unexpected_Character_At_Start_Of_CodeBlock_CS("/"),
new SourceLocation(1, 0, 1),
@ -149,7 +149,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.CodeTransition(),
Factory.EmptyCSharp()
.AsImplicitExpression(KeywordSet)
.Accepts(AcceptedCharacters.NonWhiteSpace)),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)),
new RazorError(
LegacyResources.ParseError_Unexpected_EndOfFile_At_Start_Of_CodeBlock,
new SourceLocation(1, 0, 1),
@ -252,7 +252,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
ImplicitExpressionTest(
"foo(()", "foo(()",
acceptedCharacters: AcceptedCharacters.Any,
acceptedCharacters: AcceptedCharactersInternal.Any,
errors: new RazorError(
LegacyResources.FormatParseError_Expected_CloseBracket_Before_EOF("(", ")"),
new SourceLocation(4, 0, 4),
@ -290,7 +290,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.CodeTransition(),
Factory.Code(expr)
.AsImplicitExpression(KeywordSet)
.Accepts(AcceptedCharacters.NonWhiteSpace)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)
));
}
}

View File

@ -15,7 +15,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.CodeTransition(),
Factory.Code("while(true) { foo(); }")
.AsStatement()
.Accepts(AcceptedCharacters.None)));
.Accepts(AcceptedCharactersInternal.None)));
}
[Fact]
@ -26,7 +26,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.CodeTransition(),
Factory.Code("while(true) { for(int i = 0; i < 10; i++) { foo(); } }")
.AsStatement()
.Accepts(AcceptedCharacters.None)));
.Accepts(AcceptedCharactersInternal.None)));
}
[Fact]
@ -37,7 +37,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.CodeTransition(),
Factory.Code("while(true) { { { { foo(); } } } }")
.AsStatement()
.Accepts(AcceptedCharacters.None)));
.Accepts(AcceptedCharactersInternal.None)));
}
[Fact]
@ -52,10 +52,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.CodeTransition(),
Factory.Code("foo")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords, acceptTrailingDot: true)
.Accepts(AcceptedCharacters.NonWhiteSpace)),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)),
Factory.Code(" }")
.AsStatement()
.Accepts(AcceptedCharacters.None)));
.Accepts(AcceptedCharactersInternal.None)));
}
[Fact]
@ -69,14 +69,14 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new ExpressionBlock(
Factory.CodeTransition(),
Factory.MetaCode("(")
.Accepts(AcceptedCharacters.None),
.Accepts(AcceptedCharactersInternal.None),
Factory.Code("foo")
.AsExpression(),
Factory.MetaCode(")")
.Accepts(AcceptedCharacters.None)),
.Accepts(AcceptedCharactersInternal.None)),
Factory.Code(" }")
.AsStatement()
.Accepts(AcceptedCharacters.None)));
.Accepts(AcceptedCharactersInternal.None)));
}
[Fact]
@ -90,15 +90,15 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new MarkupBlock(
Factory.Markup(" "),
new MarkupTagBlock(
Factory.Markup("<p>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<p>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup("Hello"),
new MarkupTagBlock(
Factory.Markup("</p>").Accepts(AcceptedCharacters.None)),
Factory.Markup(" ").Accepts(AcceptedCharacters.None)
Factory.Markup("</p>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup(" ").Accepts(AcceptedCharactersInternal.None)
),
Factory.Code("}")
.AsStatement()
.Accepts(AcceptedCharacters.None)));
.Accepts(AcceptedCharactersInternal.None)));
}
}
}

View File

@ -16,15 +16,15 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.EmptyHtml(),
new CommentBlock(
Factory.MarkupTransition(HtmlSymbolType.RazorCommentTransition)
.Accepts(AcceptedCharacters.None),
.Accepts(AcceptedCharactersInternal.None),
Factory.MetaMarkup("*", HtmlSymbolType.RazorCommentStar)
.Accepts(AcceptedCharacters.None),
.Accepts(AcceptedCharactersInternal.None),
Factory.Span(
SpanKind.Comment,
SpanKindInternal.Comment,
new HtmlSymbol(
string.Empty,
HtmlSymbolType.Unknown))
.Accepts(AcceptedCharacters.Any))),
.Accepts(AcceptedCharactersInternal.Any))),
new RazorError(
LegacyResources.ParseError_RazorComment_Not_Terminated,
SourceLocation.Zero,
@ -39,17 +39,17 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.EmptyHtml(),
new CommentBlock(
Factory.MarkupTransition(HtmlSymbolType.RazorCommentTransition)
.Accepts(AcceptedCharacters.None),
.Accepts(AcceptedCharactersInternal.None),
Factory.MetaMarkup("*", HtmlSymbolType.RazorCommentStar)
.Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Comment, new HtmlSymbol(
.Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Comment, new HtmlSymbol(
string.Empty,
HtmlSymbolType.Unknown))
.Accepts(AcceptedCharacters.Any),
.Accepts(AcceptedCharactersInternal.Any),
Factory.MetaMarkup("*", HtmlSymbolType.RazorCommentStar)
.Accepts(AcceptedCharacters.None),
.Accepts(AcceptedCharactersInternal.None),
Factory.MarkupTransition(HtmlSymbolType.RazorCommentTransition)
.Accepts(AcceptedCharacters.None)),
.Accepts(AcceptedCharactersInternal.None)),
Factory.EmptyHtml()));
}
@ -66,17 +66,17 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords),
new CommentBlock(
Factory.CodeTransition(CSharpSymbolType.RazorCommentTransition)
.Accepts(AcceptedCharacters.None),
.Accepts(AcceptedCharactersInternal.None),
Factory.MetaCode("*", CSharpSymbolType.RazorCommentStar)
.Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Comment, new CSharpSymbol(
.Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Comment, new CSharpSymbol(
string.Empty,
CSharpSymbolType.Unknown))
.Accepts(AcceptedCharacters.Any),
.Accepts(AcceptedCharactersInternal.Any),
Factory.MetaCode("*", CSharpSymbolType.RazorCommentStar)
.Accepts(AcceptedCharacters.None),
.Accepts(AcceptedCharactersInternal.None),
Factory.CodeTransition(CSharpSymbolType.RazorCommentTransition)
.Accepts(AcceptedCharacters.None)),
.Accepts(AcceptedCharactersInternal.None)),
Factory.Code(Environment.NewLine)
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords))),
new RazorError(
@ -97,13 +97,13 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords),
new CommentBlock(
Factory.CodeTransition(CSharpSymbolType.RazorCommentTransition)
.Accepts(AcceptedCharacters.None),
.Accepts(AcceptedCharactersInternal.None),
Factory.MetaCode("*", CSharpSymbolType.RazorCommentStar)
.Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Comment, new CSharpSymbol(
.Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Comment, new CSharpSymbol(
string.Empty,
CSharpSymbolType.Unknown))
.Accepts(AcceptedCharacters.Any)))),
.Accepts(AcceptedCharactersInternal.Any)))),
new RazorError(
LegacyResources.ParseError_RazorComment_Not_Terminated,
new SourceLocation(5, 0, 5),
@ -125,28 +125,28 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.EmptyHtml(),
new StatementBlock(
Factory.CodeTransition(),
Factory.MetaCode("{").Accepts(AcceptedCharacters.None),
Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
Factory.Code(Environment.NewLine)
.AsStatement()
.AutoCompleteWith("}"),
new MarkupBlock(
new MarkupTagBlock(
Factory.MarkupTransition("<text").Accepts(AcceptedCharacters.Any)),
Factory.Markup(Environment.NewLine).Accepts(AcceptedCharacters.None),
Factory.MarkupTransition("<text").Accepts(AcceptedCharactersInternal.Any)),
Factory.Markup(Environment.NewLine).Accepts(AcceptedCharactersInternal.None),
Factory.Markup(" ").With(SpanChunkGenerator.Null),
new CommentBlock(
Factory.MarkupTransition(HtmlSymbolType.RazorCommentTransition)
.Accepts(AcceptedCharacters.None),
.Accepts(AcceptedCharactersInternal.None),
Factory.MetaMarkup("*", HtmlSymbolType.RazorCommentStar)
.Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Comment, new HtmlSymbol(
.Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Comment, new HtmlSymbol(
string.Empty,
HtmlSymbolType.Unknown))
.Accepts(AcceptedCharacters.Any),
.Accepts(AcceptedCharactersInternal.Any),
Factory.MetaMarkup("*", HtmlSymbolType.RazorCommentStar)
.Accepts(AcceptedCharacters.None),
.Accepts(AcceptedCharactersInternal.None),
Factory.MarkupTransition(HtmlSymbolType.RazorCommentTransition)
.Accepts(AcceptedCharacters.None)),
.Accepts(AcceptedCharactersInternal.None)),
Factory.Markup(Environment.NewLine).With(SpanChunkGenerator.Null),
Factory.Markup("}")))),
new RazorError(
@ -171,17 +171,17 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.EmptyHtml(),
new StatementBlock(
Factory.CodeTransition(),
Factory.MetaCode("{").Accepts(AcceptedCharacters.None),
Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
Factory.EmptyCSharp()
.AsStatement()
.AutoCompleteWith("}"),
new CommentBlock(
Factory.CodeTransition(CSharpSymbolType.RazorCommentTransition)
.Accepts(AcceptedCharacters.None),
.Accepts(AcceptedCharactersInternal.None),
Factory.MetaCode("*", CSharpSymbolType.RazorCommentStar)
.Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Comment, new CSharpSymbol(string.Empty, CSharpSymbolType.Unknown))
.Accepts(AcceptedCharacters.Any)))),
.Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Comment, new CSharpSymbol(string.Empty, CSharpSymbolType.Unknown))
.Accepts(AcceptedCharactersInternal.Any)))),
new RazorError(
LegacyResources.ParseError_RazorComment_Not_Terminated,
new SourceLocation(2, 0, 2),
@ -206,17 +206,17 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.Markup(Environment.NewLine),
new CommentBlock(
Factory.MarkupTransition(HtmlSymbolType.RazorCommentTransition)
.Accepts(AcceptedCharacters.None),
.Accepts(AcceptedCharactersInternal.None),
Factory.MetaMarkup("*", HtmlSymbolType.RazorCommentStar)
.Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Comment, new HtmlSymbol(
.Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Comment, new HtmlSymbol(
string.Empty,
HtmlSymbolType.Unknown))
.Accepts(AcceptedCharacters.Any),
.Accepts(AcceptedCharactersInternal.Any),
Factory.MetaMarkup("*", HtmlSymbolType.RazorCommentStar)
.Accepts(AcceptedCharacters.None),
.Accepts(AcceptedCharactersInternal.None),
Factory.MarkupTransition(HtmlSymbolType.RazorCommentTransition)
.Accepts(AcceptedCharacters.None)),
.Accepts(AcceptedCharactersInternal.None)),
Factory.Markup(Environment.NewLine).With(SpanChunkGenerator.Null),
new MarkupTagBlock(
Factory.Markup("</p>"))
@ -238,31 +238,31 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.Markup(" ").With(SpanChunkGenerator.Null),
new CommentBlock(
Factory.MarkupTransition(HtmlSymbolType.RazorCommentTransition)
.Accepts(AcceptedCharacters.None),
.Accepts(AcceptedCharactersInternal.None),
Factory.MetaMarkup("*", HtmlSymbolType.RazorCommentStar)
.Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Comment, new HtmlSymbol(
.Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Comment, new HtmlSymbol(
string.Empty,
HtmlSymbolType.Unknown))
.Accepts(AcceptedCharacters.Any),
.Accepts(AcceptedCharactersInternal.Any),
Factory.MetaMarkup("*", HtmlSymbolType.RazorCommentStar)
.Accepts(AcceptedCharacters.None),
.Accepts(AcceptedCharactersInternal.None),
Factory.MarkupTransition(HtmlSymbolType.RazorCommentTransition)
.Accepts(AcceptedCharacters.None)),
.Accepts(AcceptedCharactersInternal.None)),
Factory.Markup(" " + Environment.NewLine).With(SpanChunkGenerator.Null),
new CommentBlock(
Factory.MarkupTransition(HtmlSymbolType.RazorCommentTransition)
.Accepts(AcceptedCharacters.None),
.Accepts(AcceptedCharactersInternal.None),
Factory.MetaMarkup("*", HtmlSymbolType.RazorCommentStar)
.Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Comment, new HtmlSymbol(
.Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Comment, new HtmlSymbol(
string.Empty,
HtmlSymbolType.Unknown))
.Accepts(AcceptedCharacters.Any),
.Accepts(AcceptedCharactersInternal.Any),
Factory.MetaMarkup("*", HtmlSymbolType.RazorCommentStar)
.Accepts(AcceptedCharacters.None),
.Accepts(AcceptedCharactersInternal.None),
Factory.MarkupTransition(HtmlSymbolType.RazorCommentTransition)
.Accepts(AcceptedCharacters.None)),
.Accepts(AcceptedCharactersInternal.None)),
Factory.Markup(Environment.NewLine).With(SpanChunkGenerator.Null),
new MarkupTagBlock(
Factory.Markup("</p>"))
@ -282,32 +282,32 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.Markup(Environment.NewLine),
new CommentBlock(
Factory.MarkupTransition(HtmlSymbolType.RazorCommentTransition)
.Accepts(AcceptedCharacters.None),
.Accepts(AcceptedCharactersInternal.None),
Factory.MetaMarkup("*", HtmlSymbolType.RazorCommentStar)
.Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Comment, new HtmlSymbol(
.Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Comment, new HtmlSymbol(
string.Empty,
HtmlSymbolType.Unknown))
.Accepts(AcceptedCharacters.Any),
.Accepts(AcceptedCharactersInternal.Any),
Factory.MetaMarkup("*", HtmlSymbolType.RazorCommentStar)
.Accepts(AcceptedCharacters.None),
.Accepts(AcceptedCharactersInternal.None),
Factory.MarkupTransition(HtmlSymbolType.RazorCommentTransition)
.Accepts(AcceptedCharacters.None)),
.Accepts(AcceptedCharactersInternal.None)),
Factory.EmptyHtml(),
Factory.Markup(" ").With(SpanChunkGenerator.Null),
new CommentBlock(
Factory.MarkupTransition(HtmlSymbolType.RazorCommentTransition)
.Accepts(AcceptedCharacters.None),
.Accepts(AcceptedCharactersInternal.None),
Factory.MetaMarkup("*", HtmlSymbolType.RazorCommentStar)
.Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Comment, new HtmlSymbol(
.Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Comment, new HtmlSymbol(
string.Empty,
HtmlSymbolType.Unknown))
.Accepts(AcceptedCharacters.Any),
.Accepts(AcceptedCharactersInternal.Any),
Factory.MetaMarkup("*", HtmlSymbolType.RazorCommentStar)
.Accepts(AcceptedCharacters.None),
.Accepts(AcceptedCharactersInternal.None),
Factory.MarkupTransition(HtmlSymbolType.RazorCommentTransition)
.Accepts(AcceptedCharacters.None)),
.Accepts(AcceptedCharactersInternal.None)),
Factory.Markup(Environment.NewLine).With(SpanChunkGenerator.Null),
new MarkupTagBlock(
Factory.Markup("</p>"))
@ -327,31 +327,31 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.Markup(Environment.NewLine),
new CommentBlock(
Factory.MarkupTransition(HtmlSymbolType.RazorCommentTransition)
.Accepts(AcceptedCharacters.None),
.Accepts(AcceptedCharactersInternal.None),
Factory.MetaMarkup("*", HtmlSymbolType.RazorCommentStar)
.Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Comment, new HtmlSymbol(
.Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Comment, new HtmlSymbol(
" hello ",
HtmlSymbolType.RazorComment))
.Accepts(AcceptedCharacters.Any),
.Accepts(AcceptedCharactersInternal.Any),
Factory.MetaMarkup("*", HtmlSymbolType.RazorCommentStar)
.Accepts(AcceptedCharacters.None),
.Accepts(AcceptedCharactersInternal.None),
Factory.MarkupTransition(HtmlSymbolType.RazorCommentTransition)
.Accepts(AcceptedCharacters.None)),
.Accepts(AcceptedCharactersInternal.None)),
Factory.Markup(" content "),
new CommentBlock(
Factory.MarkupTransition(HtmlSymbolType.RazorCommentTransition)
.Accepts(AcceptedCharacters.None),
.Accepts(AcceptedCharactersInternal.None),
Factory.MetaMarkup("*", HtmlSymbolType.RazorCommentStar)
.Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Comment, new HtmlSymbol(
.Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Comment, new HtmlSymbol(
" world ",
HtmlSymbolType.RazorComment))
.Accepts(AcceptedCharacters.Any),
.Accepts(AcceptedCharactersInternal.Any),
Factory.MetaMarkup("*", HtmlSymbolType.RazorCommentStar)
.Accepts(AcceptedCharacters.None),
.Accepts(AcceptedCharactersInternal.None),
Factory.MarkupTransition(HtmlSymbolType.RazorCommentTransition)
.Accepts(AcceptedCharacters.None)),
.Accepts(AcceptedCharactersInternal.None)),
Factory.Markup(Environment.NewLine),
new MarkupTagBlock(
Factory.Markup("</p>"))
@ -374,31 +374,31 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.Markup(Environment.NewLine + Environment.NewLine),
new CommentBlock(
Factory.MarkupTransition(HtmlSymbolType.RazorCommentTransition)
.Accepts(AcceptedCharacters.None),
.Accepts(AcceptedCharactersInternal.None),
Factory.MetaMarkup("*", HtmlSymbolType.RazorCommentStar)
.Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Comment, new HtmlSymbol(
.Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Comment, new HtmlSymbol(
" content ",
HtmlSymbolType.RazorComment))
.Accepts(AcceptedCharacters.Any),
.Accepts(AcceptedCharactersInternal.Any),
Factory.MetaMarkup("*", HtmlSymbolType.RazorCommentStar)
.Accepts(AcceptedCharacters.None),
.Accepts(AcceptedCharactersInternal.None),
Factory.MarkupTransition(HtmlSymbolType.RazorCommentTransition)
.Accepts(AcceptedCharacters.None)),
.Accepts(AcceptedCharactersInternal.None)),
Factory.Markup(Environment.NewLine).With(SpanChunkGenerator.Null),
new CommentBlock(
Factory.MarkupTransition(HtmlSymbolType.RazorCommentTransition)
.Accepts(AcceptedCharacters.None),
.Accepts(AcceptedCharactersInternal.None),
Factory.MetaMarkup("*", HtmlSymbolType.RazorCommentStar)
.Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Comment, new HtmlSymbol(
.Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Comment, new HtmlSymbol(
Environment.NewLine + "content" + Environment.NewLine,
HtmlSymbolType.RazorComment))
.Accepts(AcceptedCharacters.Any),
.Accepts(AcceptedCharactersInternal.Any),
Factory.MetaMarkup("*", HtmlSymbolType.RazorCommentStar)
.Accepts(AcceptedCharacters.None),
.Accepts(AcceptedCharactersInternal.None),
Factory.MarkupTransition(HtmlSymbolType.RazorCommentTransition)
.Accepts(AcceptedCharacters.None)),
.Accepts(AcceptedCharactersInternal.None)),
Factory.Markup(Environment.NewLine).With(SpanChunkGenerator.Null),
Factory.Markup(Environment.NewLine),
new MarkupTagBlock(

View File

@ -14,7 +14,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
ParseBlockTest(word,
new DirectiveBlock(
Factory.MetaCode(word).Accepts(AcceptedCharacters.None)
Factory.MetaCode(word).Accepts(AcceptedCharactersInternal.None)
),
new RazorError(
LegacyResources.FormatParseError_ReservedWord(word),
@ -35,7 +35,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new ExpressionBlock(
Factory.Code(word)
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)
));
}
}

View File

@ -17,7 +17,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.EmptyHtml(),
new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor),
Factory.CodeTransition(),
Factory.MetaCode("section").Accepts(AcceptedCharacters.None)),
Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup(Environment.NewLine)),
new RazorError(
LegacyResources.FormatDirectiveExpectsIdentifier(CSharpCodeParser.SectionDirectiveDescriptor.Name),
@ -33,12 +33,12 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.EmptyHtml(),
new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor),
Factory.CodeTransition(),
Factory.MetaCode("section").Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
Factory.Span(SpanKind.Code, "Foo", CSharpSymbolType.Identifier)
.Accepts(AcceptedCharacters.NonWhiteSpace)
Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace),
Factory.Span(SpanKindInternal.Code, "Foo", CSharpSymbolType.Identifier)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())),
Factory.Span(SpanKind.Markup, " " + Environment.NewLine + " ", markup: false).Accepts(AcceptedCharacters.AllWhiteSpace)),
Factory.Span(SpanKindInternal.Markup, " " + Environment.NewLine + " ", markup: false).Accepts(AcceptedCharactersInternal.AllWhiteSpace)),
Factory.EmptyHtml()),
new RazorError(
LegacyResources.FormatUnexpectedEOFAfterDirective(CSharpCodeParser.SectionDirectiveDescriptor.Name, "{"),
@ -54,8 +54,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.EmptyHtml(),
new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor),
Factory.CodeTransition(),
Factory.MetaCode("section").Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace)),
Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace)),
Factory.Markup(Environment.NewLine + " ")),
new RazorError(
LegacyResources.FormatDirectiveExpectsIdentifier(CSharpCodeParser.SectionDirectiveDescriptor.Name),
@ -73,7 +73,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.CodeTransition(),
Factory.Code("Section")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace)),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)),
Factory.Markup(" foo")));
}
@ -85,8 +85,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.EmptyHtml(),
new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor),
Factory.CodeTransition(),
Factory.MetaCode("section").Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace)),
Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace)),
Factory.Markup("9 { "),
new MarkupTagBlock(
Factory.Markup("<p>")),
@ -108,10 +108,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.EmptyHtml(),
new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor),
Factory.CodeTransition(),
Factory.MetaCode("section").Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
Factory.Span(SpanKind.Code, "foo", CSharpSymbolType.Identifier)
.Accepts(AcceptedCharacters.NonWhiteSpace)
Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace),
Factory.Span(SpanKindInternal.Code, "foo", CSharpSymbolType.Identifier)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First()))),
Factory.Markup("-bar { "),
new MarkupTagBlock(
@ -134,24 +134,24 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.EmptyHtml(),
new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor),
Factory.CodeTransition(),
Factory.MetaCode("section").Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
Factory.Span(SpanKind.Code, "foo", CSharpSymbolType.Identifier)
.Accepts(AcceptedCharacters.NonWhiteSpace)
Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace),
Factory.Span(SpanKindInternal.Code, "foo", CSharpSymbolType.Identifier)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())),
Factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace),
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharacters.None),
Factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace),
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None),
new MarkupBlock(
Factory.Markup(" "),
new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor),
Factory.CodeTransition(),
Factory.MetaCode("section").Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
Factory.Span(SpanKind.Code, "bar", CSharpSymbolType.Identifier)
.Accepts(AcceptedCharacters.NonWhiteSpace)
Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace),
Factory.Span(SpanKindInternal.Code, "bar", CSharpSymbolType.Identifier)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())),
Factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace),
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharacters.None),
Factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace),
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None),
new MarkupBlock(
Factory.Markup(" "),
new MarkupTagBlock(
@ -160,9 +160,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new MarkupTagBlock(
Factory.Markup("</p>")),
Factory.Markup(" ")),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)),
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup(" ")),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)),
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
Factory.EmptyHtml()),
new RazorError(
LegacyResources.FormatParseError_Sections_Cannot_Be_Nested(LegacyResources.SectionExample_CS),
@ -178,13 +178,13 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.EmptyHtml(),
new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor),
Factory.CodeTransition(),
Factory.MetaCode("section").Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
Factory.Span(SpanKind.Code, "foo", CSharpSymbolType.Identifier)
.Accepts(AcceptedCharacters.NonWhiteSpace)
Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace),
Factory.Span(SpanKindInternal.Code, "foo", CSharpSymbolType.Identifier)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())),
Factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace),
Factory.MetaCode("{").AutoCompleteWith("}", atEndOfSpan: true).Accepts(AcceptedCharacters.None),
Factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace),
Factory.MetaCode("{").AutoCompleteWith("}", atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None),
new MarkupBlock(
Factory.EmptyHtml()))),
new RazorError(
@ -205,13 +205,13 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.EmptyHtml(),
new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor),
Factory.CodeTransition(),
Factory.MetaCode("section").Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
Factory.Span(SpanKind.Code, "foo", CSharpSymbolType.Identifier)
.Accepts(AcceptedCharacters.NonWhiteSpace)
Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace),
Factory.Span(SpanKindInternal.Code, "foo", CSharpSymbolType.Identifier)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())),
Factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace),
Factory.MetaCode("{").AutoCompleteWith("}", atEndOfSpan: true).Accepts(AcceptedCharacters.None),
Factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace),
Factory.MetaCode("{").AutoCompleteWith("}", atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None),
new MarkupBlock(
Factory.Markup(postStartBrace)))),
new RazorError(
@ -228,13 +228,13 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.EmptyHtml(),
new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor),
Factory.CodeTransition(),
Factory.MetaCode("section").Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
Factory.Span(SpanKind.Code, "foo", CSharpSymbolType.Identifier)
.Accepts(AcceptedCharacters.NonWhiteSpace)
Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace),
Factory.Span(SpanKindInternal.Code, "foo", CSharpSymbolType.Identifier)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())),
Factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace),
Factory.MetaCode("{").AutoCompleteWith("}", atEndOfSpan: true).Accepts(AcceptedCharacters.None),
Factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace),
Factory.MetaCode("{").AutoCompleteWith("}", atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None),
new MarkupBlock(
Factory.Markup(" "),
new MarkupTagBlock(
@ -263,13 +263,13 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.EmptyHtml(),
new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor),
Factory.CodeTransition(),
Factory.MetaCode("section").Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
Factory.Span(SpanKind.Code, "Test", CSharpSymbolType.Identifier)
.Accepts(AcceptedCharacters.NonWhiteSpace)
Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace),
Factory.Span(SpanKindInternal.Code, "Test", CSharpSymbolType.Identifier)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())),
Factory.Span(SpanKind.Markup, Environment.NewLine, CSharpSymbolType.NewLine).Accepts(AcceptedCharacters.AllWhiteSpace),
Factory.MetaCode("{").AutoCompleteWith("}", atEndOfSpan: true).Accepts(AcceptedCharacters.None),
Factory.Span(SpanKindInternal.Markup, Environment.NewLine, CSharpSymbolType.NewLine).Accepts(AcceptedCharactersInternal.AllWhiteSpace),
Factory.MetaCode("{").AutoCompleteWith("}", atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None),
new MarkupBlock(
Factory.Markup(newLine),
new StatementBlock(
@ -278,10 +278,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.Code($"if(true){newLine}{spaces}{{{newLine}").AsStatement(),
new MarkupBlock(
Factory.Markup($"{spaces}{spaces}"),
BlockFactory.MarkupTagBlock("<p>", AcceptedCharacters.None),
BlockFactory.MarkupTagBlock("<p>", AcceptedCharactersInternal.None),
Factory.Markup("Hello World"),
BlockFactory.MarkupTagBlock("</p>", AcceptedCharacters.None),
Factory.Markup(newLine).Accepts(AcceptedCharacters.None)),
BlockFactory.MarkupTagBlock("</p>", AcceptedCharactersInternal.None),
Factory.Markup(newLine).Accepts(AcceptedCharactersInternal.None)),
Factory.Code($"{spaces}}}").AsStatement())))),
new RazorError(
LegacyResources.FormatParseError_Expected_EndOfBlock_Before_EOF("section", "}", "{"),
@ -297,12 +297,12 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.EmptyHtml(),
new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor),
Factory.CodeTransition(),
Factory.MetaCode("section").Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
Factory.Span(SpanKind.Code, "foo", CSharpSymbolType.Identifier)
.Accepts(AcceptedCharacters.NonWhiteSpace)
Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace),
Factory.Span(SpanKindInternal.Code, "foo", CSharpSymbolType.Identifier)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())),
Factory.Span(SpanKind.Markup, " " + Environment.NewLine, markup: false).Accepts(AcceptedCharacters.AllWhiteSpace)),
Factory.Span(SpanKindInternal.Markup, " " + Environment.NewLine, markup: false).Accepts(AcceptedCharactersInternal.AllWhiteSpace)),
Factory.EmptyHtml()),
new RazorError(
LegacyResources.FormatUnexpectedEOFAfterDirective(CSharpCodeParser.SectionDirectiveDescriptor.Name, "{"),
@ -326,13 +326,13 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.EmptyHtml(),
new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor),
Factory.CodeTransition(),
Factory.MetaCode("section").Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
Factory.Span(SpanKind.Code, "foo", CSharpSymbolType.Identifier)
.Accepts(AcceptedCharacters.NonWhiteSpace)
Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace),
Factory.Span(SpanKindInternal.Code, "foo", CSharpSymbolType.Identifier)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())),
Factory.Span(SpanKind.Markup, " " + string.Format("{0}{0}{0}{0}{0}{0}", Environment.NewLine), markup: false).Accepts(AcceptedCharacters.AllWhiteSpace),
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharacters.None),
Factory.Span(SpanKindInternal.Markup, " " + string.Format("{0}{0}{0}{0}{0}{0}", Environment.NewLine), markup: false).Accepts(AcceptedCharactersInternal.AllWhiteSpace),
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None),
new MarkupBlock(
Factory.Markup(Environment.NewLine),
new MarkupTagBlock(
@ -341,7 +341,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new MarkupTagBlock(
Factory.Markup("</p>")),
Factory.Markup(Environment.NewLine)),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)),
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
Factory.EmptyHtml()));
}
@ -353,13 +353,13 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.EmptyHtml(),
new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor),
Factory.CodeTransition(),
Factory.MetaCode("section").Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
Factory.Span(SpanKind.Code, "foo", CSharpSymbolType.Identifier)
.Accepts(AcceptedCharacters.NonWhiteSpace)
Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace),
Factory.Span(SpanKindInternal.Code, "foo", CSharpSymbolType.Identifier)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())),
Factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace),
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharacters.None),
Factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace),
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None),
new MarkupBlock(
Factory.Markup(" "),
new MarkupTagBlock(
@ -368,7 +368,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new MarkupTagBlock(
Factory.Markup("</p>")),
Factory.Markup(" ")),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)),
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
Factory.EmptyHtml()));
}
@ -380,12 +380,12 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.EmptyHtml(),
new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor),
Factory.CodeTransition(),
Factory.MetaCode("section").Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
Factory.Span(SpanKind.Code, "foo", CSharpSymbolType.Identifier)
.Accepts(AcceptedCharacters.NonWhiteSpace)
Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace),
Factory.Span(SpanKindInternal.Code, "foo", CSharpSymbolType.Identifier)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())),
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharacters.None),
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None),
new MarkupBlock(
Factory.Markup(" "),
new MarkupTagBlock(
@ -394,7 +394,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new MarkupTagBlock(
Factory.Markup("</p>")),
Factory.Markup(" ")),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)),
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
Factory.EmptyHtml()));
}
@ -406,13 +406,13 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.EmptyHtml(),
new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor),
Factory.CodeTransition(),
Factory.MetaCode("section").Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
Factory.Span(SpanKind.Code, "foo", CSharpSymbolType.Identifier)
.Accepts(AcceptedCharacters.NonWhiteSpace)
Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace),
Factory.Span(SpanKindInternal.Code, "foo", CSharpSymbolType.Identifier)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())),
Factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace),
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharacters.None),
Factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace),
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None),
new MarkupBlock(
Factory.Markup(" "),
new MarkupTagBlock(
@ -421,7 +421,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new MarkupTagBlock(
Factory.Markup("</script>")),
Factory.Markup(" ")),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)),
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
Factory.EmptyHtml()));
}
@ -433,22 +433,22 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.EmptyHtml(),
new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor),
Factory.CodeTransition(),
Factory.MetaCode("section").Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
Factory.Span(SpanKind.Code, "foo", CSharpSymbolType.Identifier)
.Accepts(AcceptedCharacters.NonWhiteSpace)
Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace),
Factory.Span(SpanKindInternal.Code, "foo", CSharpSymbolType.Identifier)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())),
Factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace),
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharacters.None),
Factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace),
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None),
new MarkupBlock(
Factory.Markup(" I really want to render a close brace, so here I go: "),
new ExpressionBlock(
Factory.CodeTransition(),
Factory.MetaCode("(").Accepts(AcceptedCharacters.None),
Factory.MetaCode("(").Accepts(AcceptedCharactersInternal.None),
Factory.Code("\"}\"").AsExpression(),
Factory.MetaCode(")").Accepts(AcceptedCharacters.None)),
Factory.MetaCode(")").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup(" ")),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)),
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
Factory.EmptyHtml()));
}
@ -463,20 +463,20 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.EmptyHtml(),
new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor),
Factory.CodeTransition(),
Factory.MetaCode("section").Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
Factory.Span(SpanKind.Code, "Foo", CSharpSymbolType.Identifier)
.Accepts(AcceptedCharacters.NonWhiteSpace)
Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace),
Factory.Span(SpanKindInternal.Code, "Foo", CSharpSymbolType.Identifier)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())),
Factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace),
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharacters.None),
Factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace),
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None),
new MarkupBlock(
Factory.Markup(Environment.NewLine),
new StatementBlock(
Factory.CodeTransition(),
Factory.Code($"if(true) {{{Environment.NewLine}}}{Environment.NewLine}").AsStatement()
)),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)),
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
Factory.EmptyHtml()));
}
@ -490,20 +490,20 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.EmptyHtml(),
new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor),
Factory.CodeTransition(),
Factory.MetaCode("section").Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
Factory.Span(SpanKind.Code, "Foo", CSharpSymbolType.Identifier)
.Accepts(AcceptedCharacters.NonWhiteSpace)
Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace),
Factory.Span(SpanKindInternal.Code, "Foo", CSharpSymbolType.Identifier)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())),
Factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace),
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharacters.None),
Factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace),
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None),
new MarkupBlock(
Factory.Markup(Environment.NewLine),
new StatementBlock(
Factory.CodeTransition(),
Factory.Code($"if(true) {{{Environment.NewLine}}}").AsStatement()
)),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)),
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
Factory.EmptyHtml()));
}
@ -515,16 +515,16 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.EmptyHtml(),
new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor),
Factory.CodeTransition(),
Factory.MetaCode("section").Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
Factory.Span(SpanKind.Code, "foo", CSharpSymbolType.Identifier)
.Accepts(AcceptedCharacters.NonWhiteSpace)
Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace),
Factory.Span(SpanKindInternal.Code, "foo", CSharpSymbolType.Identifier)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())),
Factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace),
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharacters.None),
Factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace),
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None),
new MarkupBlock(
Factory.Markup("something")),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)),
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
Factory.EmptyHtml()));
}
@ -536,16 +536,16 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.EmptyHtml(),
new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor),
Factory.CodeTransition(),
Factory.MetaCode("section").Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
Factory.Span(SpanKind.Code, "s", CSharpSymbolType.Identifier)
.Accepts(AcceptedCharacters.NonWhiteSpace)
Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace),
Factory.Span(SpanKindInternal.Code, "s", CSharpSymbolType.Identifier)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())),
Factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace),
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharacters.None),
Factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace),
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None),
new MarkupBlock(
Factory.Markup("<!-- -->")),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)),
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
Factory.EmptyHtml()));
}
@ -559,16 +559,16 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.EmptyHtml(),
new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor),
Factory.CodeTransition(),
Factory.MetaCode("section").Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
Factory.Span(SpanKind.Code, "s", CSharpSymbolType.Identifier)
.Accepts(AcceptedCharacters.NonWhiteSpace)
Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace),
Factory.Span(SpanKindInternal.Code, "s", CSharpSymbolType.Identifier)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())),
Factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace),
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharacters.None),
Factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace),
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None),
new MarkupBlock(
Factory.Markup("<!-- > \" '-->")),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)),
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
Factory.EmptyHtml()));
}
@ -581,19 +581,19 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.EmptyHtml(),
new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor),
Factory.CodeTransition(),
Factory.MetaCode("section").Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
Factory.Span(SpanKind.Code, "s", CSharpSymbolType.Identifier)
.Accepts(AcceptedCharacters.NonWhiteSpace)
Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace),
Factory.Span(SpanKindInternal.Code, "s", CSharpSymbolType.Identifier)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())),
Factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace),
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharacters.None),
Factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace),
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None),
new MarkupBlock(
Factory.Markup(Environment.NewLine),
new MarkupTagBlock(
Factory.Markup("<a" + Environment.NewLine)),
Factory.Markup("<!-- > \" '-->")),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)),
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
Factory.EmptyHtml()));
}
@ -606,16 +606,16 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.EmptyHtml(),
new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor),
Factory.CodeTransition(),
Factory.MetaCode("section").Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
Factory.Span(SpanKind.Code, "s", CSharpSymbolType.Identifier)
.Accepts(AcceptedCharacters.NonWhiteSpace)
Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace),
Factory.Span(SpanKindInternal.Code, "s", CSharpSymbolType.Identifier)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())),
Factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace),
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharacters.None),
Factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace),
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None),
new MarkupBlock(
Factory.Markup(" <? xml bleh ?>")),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)),
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
Factory.EmptyHtml()));
}
@ -633,13 +633,13 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.EmptyHtml(),
new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor),
factory.CodeTransition(),
factory.MetaCode("section").Accepts(AcceptedCharacters.None),
factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
factory.Span(SpanKind.Code, "s", CSharpSymbolType.Identifier)
.Accepts(AcceptedCharacters.NonWhiteSpace)
factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None),
factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace),
factory.Span(SpanKindInternal.Code, "s", CSharpSymbolType.Identifier)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())),
factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace),
factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharacters.None),
factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace),
factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None),
new MarkupBlock(
new MarkupTagBlock(
factory.Markup("<span"),
@ -647,11 +647,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new AttributeBlockChunkGenerator("foo", new LocationTagged<string>(" foo='", 17, 0, 17), new LocationTagged<string>("'", 25, 0, 25)),
factory.Markup(" foo='").With(SpanChunkGenerator.Null),
new MarkupBlock(
factory.Markup("@").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(string.Empty, 23, 0, 23), new LocationTagged<string>("@", 23, 0, 23))).Accepts(AcceptedCharacters.None),
factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharacters.None)),
factory.Markup("@").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(string.Empty, 23, 0, 23), new LocationTagged<string>("@", 23, 0, 23))).Accepts(AcceptedCharactersInternal.None),
factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None)),
factory.Markup("'").With(SpanChunkGenerator.Null)),
factory.Markup(" />"))),
factory.MetaCode("}").Accepts(AcceptedCharacters.None)),
factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
factory.EmptyHtml())
},
{
@ -660,13 +660,13 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.EmptyHtml(),
new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor),
factory.CodeTransition(),
factory.MetaCode("section").Accepts(AcceptedCharacters.None),
factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
factory.Span(SpanKind.Code, "s", CSharpSymbolType.Identifier)
.Accepts(AcceptedCharacters.NonWhiteSpace)
factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None),
factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace),
factory.Span(SpanKindInternal.Code, "s", CSharpSymbolType.Identifier)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())),
factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace),
factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharacters.None),
factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace),
factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None),
new MarkupBlock(
new MarkupTagBlock(
factory.Markup("<span"),
@ -679,13 +679,13 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.CodeTransition(),
factory.Code("DateTime.Now")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace))),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace))),
new MarkupBlock(
factory.Markup(" @").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(" ", 36, 0, 36), new LocationTagged<string>("@", 37, 0, 37))).Accepts(AcceptedCharacters.None),
factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharacters.None)),
factory.Markup(" @").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(" ", 36, 0, 36), new LocationTagged<string>("@", 37, 0, 37))).Accepts(AcceptedCharactersInternal.None),
factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None)),
factory.Markup("'").With(SpanChunkGenerator.Null)),
factory.Markup(" />"))),
factory.MetaCode("}").Accepts(AcceptedCharacters.None)),
factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
factory.EmptyHtml())
},
};

View File

@ -14,7 +14,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
ParseBlockTest("inherits",
new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.InheritsDirectiveDescriptor),
Factory.MetaCode("inherits").Accepts(AcceptedCharacters.None)),
Factory.MetaCode("inherits").Accepts(AcceptedCharactersInternal.None)),
new RazorError(
LegacyResources.FormatUnexpectedEOFAfterDirective(CSharpCodeParser.InheritsDirectiveDescriptor.Name, "type"),
new SourceLocation(8, 0, 8), 1));
@ -25,10 +25,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
ParseBlockTest("inherits Foo.Bar<Biz<Qux>, string, int>.Baz",
new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.InheritsDirectiveDescriptor),
Factory.MetaCode("inherits").Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
Factory.Span(SpanKind.Code, "Foo.Bar<Biz<Qux>, string, int>.Baz", markup: false)
.Accepts(AcceptedCharacters.NonWhiteSpace)
Factory.MetaCode("inherits").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace),
Factory.Span(SpanKindInternal.Code, "Foo.Bar<Biz<Qux>, string, int>.Baz", markup: false)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.InheritsDirectiveDescriptor.Tokens.First()))));
}
@ -37,8 +37,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
ParseBlockTest("inherits " + Environment.NewLine + "foo",
new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.InheritsDirectiveDescriptor),
Factory.MetaCode("inherits").Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace)),
Factory.MetaCode("inherits").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace)),
new RazorError(LegacyResources.FormatDirectiveExpectsTypeName(CSharpCodeParser.InheritsDirectiveDescriptor.Name), 24, 0, 24, Environment.NewLine.Length));
}
@ -47,11 +47,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
ParseBlockTest("{ using Foo.Bar.Baz; var foo = bar; }",
new StatementBlock(
Factory.MetaCode("{").Accepts(AcceptedCharacters.None),
Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
Factory.Code(" using Foo.Bar.Baz; var foo = bar; ")
.AsStatement()
.AutoCompleteWith(autoCompleteString: null),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)
),
new RazorError(
LegacyResources.ParseError_NamespaceImportAndTypeAlias_Cannot_Exist_Within_CodeBlock,
@ -64,11 +64,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
ParseBlockTest("{ using Foo = Bar.Baz; var foo = bar; }",
new StatementBlock(
Factory.MetaCode("{").Accepts(AcceptedCharacters.None),
Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
Factory.Code(" using Foo = Bar.Baz; var foo = bar; ")
.AsStatement()
.AutoCompleteWith(autoCompleteString: null),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)
),
new RazorError(
LegacyResources.ParseError_NamespaceImportAndTypeAlias_Cannot_Exist_Within_CodeBlock,
@ -81,11 +81,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
ParseBlockTest("{ functions Foo; }",
new StatementBlock(
Factory.MetaCode("{").Accepts(AcceptedCharacters.None),
Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
Factory.Code(" functions Foo; ")
.AsStatement()
.AutoCompleteWith(autoCompleteString: null),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)
));
}
@ -96,11 +96,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
+ " List<dynamic> photos = gallery.Photo.ToList();" + Environment.NewLine
+ "}",
new StatementBlock(
Factory.MetaCode("{").Accepts(AcceptedCharacters.None),
Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
Factory.Code($"{Environment.NewLine} List<dynamic> photos = gallery.Photo.ToList();{Environment.NewLine}")
.AsStatement()
.AutoCompleteWith(autoCompleteString: null),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)
));
}
@ -113,11 +113,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
// Act/Assert
ParseBlockTest("{" + code + "}",
new StatementBlock(
Factory.MetaCode("{").Accepts(AcceptedCharacters.None),
Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
Factory.Code(code)
.AsStatement()
.AutoCompleteWith(autoCompleteString: null),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)
));
}
@ -130,9 +130,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
// Act/Assert
ParseBlockTest("(" + code + ")",
new ExpressionBlock(
Factory.MetaCode("(").Accepts(AcceptedCharacters.None),
Factory.MetaCode("(").Accepts(AcceptedCharactersInternal.None),
Factory.Code(code).AsExpression(),
Factory.MetaCode(")").Accepts(AcceptedCharacters.None)
Factory.MetaCode(")").Accepts(AcceptedCharactersInternal.None)
));
}
@ -142,11 +142,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
const string code = " foo(); \"bar}baz\" ";
ParseBlockTest("functions {" + code + "} zoop",
new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.FunctionsDirectiveDescriptor),
Factory.MetaCode("functions").Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace),
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharacters.None),
Factory.MetaCode("functions").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace),
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None),
Factory.Code(code).AsStatement(),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)));
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)));
}
[Fact]
@ -154,9 +154,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
ParseBlockTest("functions { { { { { } zoop",
new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.FunctionsDirectiveDescriptor),
Factory.MetaCode("functions").Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace),
Factory.MetaCode("{").AutoCompleteWith("}", atEndOfSpan: true).Accepts(AcceptedCharacters.None),
Factory.MetaCode("functions").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace),
Factory.MetaCode("{").AutoCompleteWith("}", atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None),
Factory.Code(" { { { { } zoop").AsStatement()),
new RazorError(
LegacyResources.FormatParseError_Expected_EndOfBlock_Before_EOF("functions", "}", "{"),
@ -171,7 +171,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new ExpressionBlock(
Factory.Code("Functions")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace)));
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)));
}
[Fact]
@ -182,7 +182,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.CodeTransition(),
Factory.EmptyCSharp()
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace)),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)),
new RazorError(
LegacyResources.FormatParseError_Unexpected_Character_At_Start_Of_CodeBlock_CS("/"),
new SourceLocation(1, 0, 1),
@ -201,11 +201,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new MarkupBlock(
Factory.Markup("\t"),
new MarkupTagBlock(
Factory.Markup("<p>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<p>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup("A real tag!"),
new MarkupTagBlock(
Factory.Markup("</p>").Accepts(AcceptedCharacters.None)),
Factory.Markup(Environment.NewLine).Accepts(AcceptedCharacters.None)),
Factory.Markup("</p>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup(Environment.NewLine).Accepts(AcceptedCharactersInternal.None)),
Factory.Code("}").AsStatement()
));
}

View File

@ -25,7 +25,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.CodeTransition(),
Factory.Code("for(int i = 0; i++; i < length) { foo(); }")
.AsStatement()
.Accepts(AcceptedCharacters.None)
.Accepts(AcceptedCharactersInternal.None)
));
}
@ -37,7 +37,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.CodeTransition(),
Factory.Code("foreach(var foo in bar) { foo(); }")
.AsStatement()
.Accepts(AcceptedCharacters.None)
.Accepts(AcceptedCharactersInternal.None)
));
}
@ -49,7 +49,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.CodeTransition(),
Factory.Code("while(true) { foo(); }")
.AsStatement()
.Accepts(AcceptedCharacters.None)
.Accepts(AcceptedCharactersInternal.None)
));
}
@ -61,7 +61,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.CodeTransition(),
Factory.Code("switch(foo) { foo(); }")
.AsStatement()
.Accepts(AcceptedCharacters.None)
.Accepts(AcceptedCharactersInternal.None)
));
}
@ -73,7 +73,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.CodeTransition(),
Factory.Code("lock(baz) { foo(); }")
.AsStatement()
.Accepts(AcceptedCharacters.None)
.Accepts(AcceptedCharactersInternal.None)
));
}
@ -107,7 +107,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.CodeTransition(),
Factory.Code("if(true) { foo(); } else { foo(); }")
.AsStatement()
.Accepts(AcceptedCharacters.None)
.Accepts(AcceptedCharactersInternal.None)
));
}
@ -157,7 +157,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory
.Code("try { A(); } catch(Exception) when (true) { B(); } finally { C(); }")
.AsStatement()
.Accepts(AcceptedCharacters.None))
.Accepts(AcceptedCharactersInternal.None))
},
{
"@try { A(); } catch(Exception) when (true) { B(); } catch(IOException) when (false) { C(); }",
@ -188,12 +188,12 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
"@{try { someMethod(); } catch(Exception) when (true) { handleIO(); }}",
new StatementBlock(
factory.CodeTransition(),
factory.MetaCode("{").Accepts(AcceptedCharacters.None),
factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
factory
.Code("try { someMethod(); } catch(Exception) when (true) { handleIO(); }")
.AsStatement()
.AutoCompleteWith(autoCompleteString: null),
factory.MetaCode("}").Accepts(AcceptedCharacters.None))
factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None))
},
// Partial exception filter data
@ -308,7 +308,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.CodeTransition(),
Factory.Code("try { foo(); } finally { Dispose(); }")
.AsStatement()
.Accepts(AcceptedCharacters.None)
.Accepts(AcceptedCharactersInternal.None)
));
}
@ -322,7 +322,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.CodeTransition(),
factory.Code(code)
.AsNamespaceImport(import)
.Accepts(AcceptedCharacters.AnyExceptNewline));
.Accepts(AcceptedCharactersInternal.AnyExceptNewline));
// document, expectedResult
return new TheoryData<string, DirectiveBlock>
@ -369,7 +369,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.CodeTransition(),
Factory.Code("using(var foo = new Foo()) { foo.Bar(); }")
.AsStatement()
.Accepts(AcceptedCharacters.None)
.Accepts(AcceptedCharactersInternal.None)
));
}
@ -381,7 +381,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.CodeTransition(),
Factory.Code("using StringDictionary = System.Collections.Generic.Dictionary<string, string>")
.AsNamespaceImport(" StringDictionary = System.Collections.Generic.Dictionary<string, string>")
.Accepts(AcceptedCharacters.AnyExceptNewline)
.Accepts(AcceptedCharactersInternal.AnyExceptNewline)
));
}
@ -393,7 +393,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.CodeTransition(),
Factory.Code("using System.Text.Encoding.ASCIIEncoding")
.AsNamespaceImport(" System.Text.Encoding.ASCIIEncoding")
.Accepts(AcceptedCharacters.AnyExceptNewline)
.Accepts(AcceptedCharactersInternal.AnyExceptNewline)
));
}
@ -405,7 +405,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.CodeTransition(),
Factory.Code("do { foo(); } while(true);")
.AsStatement()
.Accepts(AcceptedCharacters.None)
.Accepts(AcceptedCharactersInternal.None)
));
}
@ -417,7 +417,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.CodeTransition(),
Factory.Code("is")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)
));
}
}

View File

@ -16,16 +16,16 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new MarkupBlock(
Factory.MarkupTransition(),
new MarkupTagBlock(
Factory.Markup("<p>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<p>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup("Foo #"),
new ExpressionBlock(
Factory.CodeTransition(),
Factory.Code("item")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)
),
new MarkupTagBlock(
Factory.Markup("</p>").Accepts(AcceptedCharacters.None))
Factory.Markup("</p>").Accepts(AcceptedCharactersInternal.None))
)
);
}
@ -38,7 +38,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new MarkupBlock(
Factory.MarkupTransition(),
new MarkupTagBlock(
Factory.Markup("<p>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<p>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup("Foo #"),
new ExpressionBlock(
Factory.CodeTransition(),
@ -48,24 +48,24 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new MarkupBlock(
Factory.MarkupTransition(),
new MarkupTagBlock(
Factory.Markup("<p>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<p>").Accepts(AcceptedCharactersInternal.None)),
Factory.EmptyHtml(),
new ExpressionBlock(
Factory.CodeTransition(),
Factory.Code("item")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)
),
new MarkupTagBlock(
Factory.Markup("</p>").Accepts(AcceptedCharacters.None))
Factory.Markup("</p>").Accepts(AcceptedCharactersInternal.None))
)
),
Factory.Code(")")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)
),
new MarkupTagBlock(
Factory.Markup("</p>").Accepts(AcceptedCharacters.None))
Factory.Markup("</p>").Accepts(AcceptedCharactersInternal.None))
)
);
}
@ -76,7 +76,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ParseBlockTest("{ var foo = @: bar" + Environment.NewLine
+ "; }",
new StatementBlock(
Factory.MetaCode("{").Accepts(AcceptedCharacters.None),
Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
Factory.Code(" var foo = ")
.AsStatement()
.AutoCompleteWith(autoCompleteString: null),
@ -86,11 +86,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.MetaMarkup(":", HtmlSymbolType.Colon),
Factory.Markup(" bar" + Environment.NewLine)
.With(new SpanEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString))
.Accepts(AcceptedCharacters.None)
.Accepts(AcceptedCharactersInternal.None)
)
),
Factory.Code("; ").AsStatement(),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)
));
}
@ -100,7 +100,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ParseBlockTest("{i@: bar" + Environment.NewLine
+ "}",
new StatementBlock(
Factory.MetaCode("{").Accepts(AcceptedCharacters.None),
Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
Factory.Code("i")
.AsStatement()
.AutoCompleteWith(autoCompleteString: null),
@ -110,11 +110,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.MetaMarkup(":", HtmlSymbolType.Colon),
Factory.Markup(" bar" + Environment.NewLine)
.With(new SpanEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString))
.Accepts(AcceptedCharacters.None)
.Accepts(AcceptedCharactersInternal.None)
)
),
Factory.EmptyCSharp().AsStatement(),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)
));
}
@ -123,11 +123,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
ParseBlockTest("(Html.Repeat(10," + TestTemplateCode + "))",
new ExpressionBlock(
Factory.MetaCode("(").Accepts(AcceptedCharacters.None),
Factory.MetaCode("(").Accepts(AcceptedCharactersInternal.None),
Factory.Code("Html.Repeat(10, ").AsExpression(),
TestTemplate(),
Factory.Code(")").AsExpression(),
Factory.MetaCode(")").Accepts(AcceptedCharacters.None)
Factory.MetaCode(")").Accepts(AcceptedCharactersInternal.None)
));
}
@ -141,7 +141,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
TestTemplate(),
Factory.Code(")")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)
));
}
@ -157,7 +157,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords),
TestTemplate(),
Factory.Code(")")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords).Accepts(AcceptedCharacters.NonWhiteSpace)
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords).Accepts(AcceptedCharactersInternal.NonWhiteSpace)
));
}
@ -171,7 +171,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
TestNestedTemplate(),
Factory.Code(")")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)
),
GetNestedTemplateError(42));
}
@ -185,7 +185,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
TestTemplate(),
Factory.Code("); }")
.AsStatement()
.Accepts(AcceptedCharacters.None)
.Accepts(AcceptedCharactersInternal.None)
));
}
@ -200,7 +200,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
TestTemplate(),
Factory.Code("); }")
.AsStatement()
.Accepts(AcceptedCharacters.None)
.Accepts(AcceptedCharactersInternal.None)
));
}
@ -214,7 +214,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
TestNestedTemplate(),
Factory.Code("); }")
.AsStatement()
.Accepts(AcceptedCharacters.None)
.Accepts(AcceptedCharactersInternal.None)
),
GetNestedTemplateError(74));
}
@ -224,13 +224,13 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
ParseBlockTest("{ var foo = bar; Html.ExecuteTemplate(foo," + TestTemplateCode + "); }",
new StatementBlock(
Factory.MetaCode("{").Accepts(AcceptedCharacters.None),
Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
Factory.Code(" var foo = bar; Html.ExecuteTemplate(foo, ")
.AsStatement()
.AutoCompleteWith(autoCompleteString: null),
TestTemplate(),
Factory.Code("); ").AsStatement(),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)
));
}
@ -239,7 +239,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
ParseBlockTest("{ var foo = bar; Html.ExecuteTemplate(foo," + TestTemplateCode + "," + TestTemplateCode + "); }",
new StatementBlock(
Factory.MetaCode("{").Accepts(AcceptedCharacters.None),
Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
Factory.Code(" var foo = bar; Html.ExecuteTemplate(foo, ")
.AsStatement()
.AutoCompleteWith(autoCompleteString: null),
@ -247,7 +247,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.Code(", ").AsStatement(),
TestTemplate(),
Factory.Code("); ").AsStatement(),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)
));
}
@ -256,13 +256,13 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
ParseBlockTest("{ var foo = bar; Html.ExecuteTemplate(foo," + TestNestedTemplateCode + "); }",
new StatementBlock(
Factory.MetaCode("{").Accepts(AcceptedCharacters.None),
Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
Factory.Code(" var foo = bar; Html.ExecuteTemplate(foo, ")
.AsStatement()
.AutoCompleteWith(autoCompleteString: null),
TestNestedTemplate(),
Factory.Code("); ").AsStatement(),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)
),
GetNestedTemplateError(69));
}
@ -283,30 +283,30 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new AttributeBlockChunkGenerator("foo", new LocationTagged<string>(" foo='", 46, 0, 46), new LocationTagged<string>("'", 54, 0, 54)),
Factory.Markup(" foo='").With(SpanChunkGenerator.Null),
new MarkupBlock(
Factory.Markup("@").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(string.Empty, 52, 0, 52), new LocationTagged<string>("@", 52, 0, 52))).Accepts(AcceptedCharacters.None),
Factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharacters.None)),
Factory.Markup("@").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(string.Empty, 52, 0, 52), new LocationTagged<string>("@", 52, 0, 52))).Accepts(AcceptedCharactersInternal.None),
Factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None)),
Factory.Markup("'").With(SpanChunkGenerator.Null)),
Factory.Markup(">").Accepts(AcceptedCharacters.None)),
Factory.Markup(">").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup("Foo #"),
new ExpressionBlock(
Factory.CodeTransition(),
Factory.Code("item")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)
),
new MarkupTagBlock(
Factory.Markup("</p>").Accepts(AcceptedCharacters.None))
Factory.Markup("</p>").Accepts(AcceptedCharactersInternal.None))
)
);
var expected = new StatementBlock(
Factory.MetaCode("{").Accepts(AcceptedCharacters.None),
Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
Factory.Code(" var foo = bar; Html.ExecuteTemplate(foo, ")
.AsStatement()
.AutoCompleteWith(autoCompleteString: null),
testTemplateWithDoubleTransition,
Factory.Code("); ").AsStatement(),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None));
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None));
// Act & Assert
ParseBlockTest("{ var foo = bar; Html.ExecuteTemplate(foo," + testTemplateWithDoubleTransitionCode + "); }", expected);

View File

@ -13,11 +13,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
ParseBlockTest("{ List< }",
new StatementBlock(
Factory.MetaCode("{").Accepts(AcceptedCharacters.None),
Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
Factory.Code(" List< ")
.AsStatement()
.AutoCompleteWith(autoCompleteString: null),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)));
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)));
}
[Fact]
@ -27,20 +27,20 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new ExpressionBlock(
Factory.Code("Foo( ")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.Any),
.Accepts(AcceptedCharactersInternal.Any),
new TemplateBlock(
new MarkupBlock(
Factory.MarkupTransition(),
new MarkupTagBlock(
Factory.Markup("<p>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<p>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup("Foo"),
new MarkupTagBlock(
Factory.Markup("</p>").Accepts(AcceptedCharacters.None))
Factory.Markup("</p>").Accepts(AcceptedCharactersInternal.None))
)
),
Factory.Code(" )")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)
), designTime: true);
}
@ -57,12 +57,12 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.MarkupTransition(),
Factory.MetaMarkup(":", HtmlSymbolType.Colon),
Factory.Markup("<p>Foo</p> " + Environment.NewLine)
.With(new SpanEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString, AcceptedCharacters.None))
.With(new SpanEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString, AcceptedCharactersInternal.None))
)
),
Factory.Code(")")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)
), designTime: true);
}
@ -73,19 +73,19 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
+ " <p>Foo</p> " + Environment.NewLine
+ "}",
new StatementBlock(
Factory.MetaCode("{").Accepts(AcceptedCharacters.None),
Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
Factory.Code(Environment.NewLine + " ")
.AsStatement()
.AutoCompleteWith(autoCompleteString: null),
new MarkupBlock(
new MarkupTagBlock(
Factory.Markup("<p>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<p>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup("Foo"),
new MarkupTagBlock(
Factory.Markup("</p>").Accepts(AcceptedCharacters.None))
Factory.Markup("</p>").Accepts(AcceptedCharactersInternal.None))
),
Factory.Code(" " + Environment.NewLine).AsStatement(),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)
), designTime: true);
}
@ -96,20 +96,20 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
+ " @<p>Foo</p> " + Environment.NewLine
+ "}",
new StatementBlock(
Factory.MetaCode("{").Accepts(AcceptedCharacters.None),
Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
Factory.Code(Environment.NewLine + " ")
.AsStatement()
.AutoCompleteWith(autoCompleteString: null),
new MarkupBlock(
Factory.MarkupTransition(),
new MarkupTagBlock(
Factory.Markup("<p>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<p>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup("Foo"),
new MarkupTagBlock(
Factory.Markup("</p>").Accepts(AcceptedCharacters.None))
Factory.Markup("</p>").Accepts(AcceptedCharactersInternal.None))
),
Factory.Code(" " + Environment.NewLine).AsStatement(),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)
), true,
new RazorError(
LegacyResources.ParseError_AtInCode_Must_Be_Followed_By_Colon_Paren_Or_Identifier_Start,
@ -124,7 +124,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
+ " @:<p>Foo</p> " + Environment.NewLine
+ "}",
new StatementBlock(
Factory.MetaCode("{").Accepts(AcceptedCharacters.None),
Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
Factory.Code(Environment.NewLine + " ")
.AsStatement()
.AutoCompleteWith(autoCompleteString: null),
@ -132,10 +132,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.MarkupTransition(),
Factory.MetaMarkup(":", HtmlSymbolType.Colon),
Factory.Markup("<p>Foo</p> " + Environment.NewLine)
.With(new SpanEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString, AcceptedCharacters.None))
.With(new SpanEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString, AcceptedCharactersInternal.None))
),
Factory.EmptyCSharp().AsStatement(),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)
), designTime: true);
}
@ -156,19 +156,19 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
.With(new SpanEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString)),
new StatementBlock(
Factory.CodeTransition(),
Factory.MetaCode("{").Accepts(AcceptedCharacters.None),
Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
Factory.EmptyCSharp()
.AsStatement()
.AutoCompleteWith(autoCompleteString: null),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)
),
Factory.Markup(Environment.NewLine)
.Accepts(AcceptedCharacters.None)
.Accepts(AcceptedCharactersInternal.None)
)
),
Factory.Code(")")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)
));
}
@ -189,27 +189,27 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.MarkupTransition(),
Factory.MetaMarkup(":", HtmlSymbolType.Colon),
Factory.Markup("Baz" + Environment.NewLine)
.With(new SpanEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString, AcceptedCharacters.None))
.With(new SpanEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString, AcceptedCharactersInternal.None))
),
new MarkupBlock(
new MarkupTagBlock(
Factory.Markup("<br/>").Accepts(AcceptedCharacters.None)),
Factory.Markup(Environment.NewLine).Accepts(AcceptedCharacters.None)
Factory.Markup("<br/>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup(Environment.NewLine).Accepts(AcceptedCharactersInternal.None)
),
new MarkupBlock(
new MarkupTagBlock(
Factory.Markup("<a>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<a>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup("Foo"),
new MarkupTagBlock(
Factory.Markup("</a>").Accepts(AcceptedCharacters.None)),
Factory.Markup(Environment.NewLine).Accepts(AcceptedCharacters.None)),
Factory.Markup("</a>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup(Environment.NewLine).Accepts(AcceptedCharactersInternal.None)),
new MarkupBlock(
Factory.MarkupTransition(),
Factory.MetaMarkup(":", HtmlSymbolType.Colon),
Factory.Markup("Bar" + Environment.NewLine)
.With(new SpanEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString, AcceptedCharacters.None))
.With(new SpanEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString, AcceptedCharactersInternal.None))
),
Factory.Code("}").AsStatement().Accepts(AcceptedCharacters.None)
Factory.Code("}").AsStatement().Accepts(AcceptedCharactersInternal.None)
));
}
@ -232,23 +232,23 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new MarkupBlock(
Factory.Markup(" "),
new MarkupTagBlock(
Factory.Markup("<p>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<p>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup($"{Environment.NewLine} Foo{Environment.NewLine}"),
new ExpressionBlock(
Factory.Code(" ").AsStatement(),
Factory.CodeTransition(),
Factory.Code("bar").AsImplicitExpression(CSharpCodeParser.DefaultKeywords).Accepts(AcceptedCharacters.NonWhiteSpace)
Factory.Code("bar").AsImplicitExpression(CSharpCodeParser.DefaultKeywords).Accepts(AcceptedCharactersInternal.NonWhiteSpace)
),
Factory.Markup(Environment.NewLine + " "),
new MarkupTagBlock(
Factory.Markup("</p>").Accepts(AcceptedCharacters.None)),
Factory.Markup(Environment.NewLine).Accepts(AcceptedCharacters.None)
Factory.Markup("</p>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup(Environment.NewLine).Accepts(AcceptedCharactersInternal.None)
),
new MarkupBlock(
Factory.Markup(" "),
Factory.MarkupTransition(),
Factory.MetaMarkup(":", HtmlSymbolType.Colon),
Factory.Markup("Hello!" + Environment.NewLine).With(new SpanEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString, AcceptedCharacters.None))
Factory.Markup("Hello!" + Environment.NewLine).With(new SpanEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString, AcceptedCharactersInternal.None))
),
Factory.Code($" var biz = boz;{Environment.NewLine}}}").AsStatement()));
}
@ -262,33 +262,33 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new MarkupBlock(
Factory.Markup(" "),
new MarkupTagBlock(
Factory.Markup("<p>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<p>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup("Bar"),
new MarkupTagBlock(
Factory.Markup("</p>").Accepts(AcceptedCharacters.None)),
Factory.Markup(" ").Accepts(AcceptedCharacters.None)
Factory.Markup("</p>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup(" ").Accepts(AcceptedCharactersInternal.None)
),
Factory.Code("} else if(bar) {").AsStatement(),
new MarkupBlock(
Factory.Markup(" "),
new MarkupTagBlock(
Factory.Markup("<p>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<p>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup("Baz"),
new MarkupTagBlock(
Factory.Markup("</p>").Accepts(AcceptedCharacters.None)),
Factory.Markup(" ").Accepts(AcceptedCharacters.None)
Factory.Markup("</p>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup(" ").Accepts(AcceptedCharactersInternal.None)
),
Factory.Code("} else {").AsStatement(),
new MarkupBlock(
Factory.Markup(" "),
new MarkupTagBlock(
Factory.Markup("<p>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<p>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup("Boz"),
new MarkupTagBlock(
Factory.Markup("</p>").Accepts(AcceptedCharacters.None)),
Factory.Markup(" ").Accepts(AcceptedCharacters.None)
Factory.Markup("</p>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup(" ").Accepts(AcceptedCharactersInternal.None)
),
Factory.Code("}").AsStatement().Accepts(AcceptedCharacters.None)
Factory.Code("}").AsStatement().Accepts(AcceptedCharactersInternal.None)
));
}
@ -297,41 +297,41 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
ParseBlockTest("{ if(foo) { <p>Bar</p> } else if(bar) { <p>Baz</p> } else { <p>Boz</p> } }",
new StatementBlock(
Factory.MetaCode("{").Accepts(AcceptedCharacters.None),
Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
Factory.Code(" if(foo) {")
.AsStatement()
.AutoCompleteWith(autoCompleteString: null),
new MarkupBlock(
Factory.Markup(" "),
new MarkupTagBlock(
Factory.Markup("<p>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<p>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup("Bar"),
new MarkupTagBlock(
Factory.Markup("</p>").Accepts(AcceptedCharacters.None)),
Factory.Markup(" ").Accepts(AcceptedCharacters.None)
Factory.Markup("</p>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup(" ").Accepts(AcceptedCharactersInternal.None)
),
Factory.Code("} else if(bar) {").AsStatement(),
new MarkupBlock(
Factory.Markup(" "),
new MarkupTagBlock(
Factory.Markup("<p>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<p>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup("Baz"),
new MarkupTagBlock(
Factory.Markup("</p>").Accepts(AcceptedCharacters.None)),
Factory.Markup(" ").Accepts(AcceptedCharacters.None)
Factory.Markup("</p>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup(" ").Accepts(AcceptedCharactersInternal.None)
),
Factory.Code("} else {").AsStatement(),
new MarkupBlock(
Factory.Markup(" "),
new MarkupTagBlock(
Factory.Markup("<p>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<p>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup("Boz"),
new MarkupTagBlock(
Factory.Markup("</p>").Accepts(AcceptedCharacters.None)),
Factory.Markup(" ").Accepts(AcceptedCharacters.None)
Factory.Markup("</p>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup(" ").Accepts(AcceptedCharactersInternal.None)
),
Factory.Code("} ").AsStatement(),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)
));
}
@ -359,21 +359,21 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new MarkupBlock(
Factory.Markup(" "),
new MarkupTagBlock(
Factory.Markup("<p>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<p>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup("Foo"),
new MarkupTagBlock(
Factory.Markup("</p>").Accepts(AcceptedCharacters.None)),
Factory.Markup(Environment.NewLine).Accepts(AcceptedCharacters.None)
Factory.Markup("</p>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup(Environment.NewLine).Accepts(AcceptedCharactersInternal.None)
),
Factory.Code($" break;{Environment.NewLine} case 1:{Environment.NewLine}").AsStatement(),
new MarkupBlock(
Factory.Markup(" "),
new MarkupTagBlock(
Factory.Markup("<p>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<p>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup("Bar"),
new MarkupTagBlock(
Factory.Markup("</p>").Accepts(AcceptedCharacters.None)),
Factory.Markup(Environment.NewLine).Accepts(AcceptedCharacters.None)
Factory.Markup("</p>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup(Environment.NewLine).Accepts(AcceptedCharactersInternal.None)
),
Factory.Code(
$" return;{Environment.NewLine} case 2:{Environment.NewLine}" +
@ -381,32 +381,32 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new MarkupBlock(
Factory.Markup(" "),
new MarkupTagBlock(
Factory.Markup("<p>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<p>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup("Baz"),
new MarkupTagBlock(
Factory.Markup("</p>").Accepts(AcceptedCharacters.None)),
Factory.Markup(Environment.NewLine).Accepts(AcceptedCharacters.None)
Factory.Markup("</p>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup(Environment.NewLine).Accepts(AcceptedCharactersInternal.None)
),
new MarkupBlock(
Factory.Markup(" "),
new MarkupTagBlock(
Factory.Markup("<p>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<p>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup("Boz"),
new MarkupTagBlock(
Factory.Markup("</p>").Accepts(AcceptedCharacters.None)),
Factory.Markup(Environment.NewLine).Accepts(AcceptedCharacters.None)
Factory.Markup("</p>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup(Environment.NewLine).Accepts(AcceptedCharactersInternal.None)
),
Factory.Code($" }}{Environment.NewLine} default:{Environment.NewLine}").AsStatement(),
new MarkupBlock(
Factory.Markup(" "),
new MarkupTagBlock(
Factory.Markup("<p>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<p>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup("Biz"),
new MarkupTagBlock(
Factory.Markup("</p>").Accepts(AcceptedCharacters.None)),
Factory.Markup(Environment.NewLine).Accepts(AcceptedCharacters.None)
Factory.Markup("</p>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup(Environment.NewLine).Accepts(AcceptedCharactersInternal.None)
),
Factory.Code("}").AsStatement().Accepts(AcceptedCharacters.None)));
Factory.Code("}").AsStatement().Accepts(AcceptedCharactersInternal.None)));
}
[Fact]
@ -429,28 +429,28 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
+ " <p>Biz</p>" + Environment.NewLine
+ "} }",
new StatementBlock(
Factory.MetaCode("{").Accepts(AcceptedCharacters.None),
Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
Factory.Code($" switch(foo) {{{Environment.NewLine} case 0:{Environment.NewLine}")
.AsStatement()
.AutoCompleteWith(autoCompleteString: null),
new MarkupBlock(
Factory.Markup(" "),
new MarkupTagBlock(
Factory.Markup("<p>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<p>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup("Foo"),
new MarkupTagBlock(
Factory.Markup("</p>").Accepts(AcceptedCharacters.None)),
Factory.Markup(Environment.NewLine).Accepts(AcceptedCharacters.None)
Factory.Markup("</p>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup(Environment.NewLine).Accepts(AcceptedCharactersInternal.None)
),
Factory.Code($" break;{Environment.NewLine} case 1:{Environment.NewLine}").AsStatement(),
new MarkupBlock(
Factory.Markup(" "),
new MarkupTagBlock(
Factory.Markup("<p>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<p>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup("Bar"),
new MarkupTagBlock(
Factory.Markup("</p>").Accepts(AcceptedCharacters.None)),
Factory.Markup(Environment.NewLine).Accepts(AcceptedCharacters.None)
Factory.Markup("</p>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup(Environment.NewLine).Accepts(AcceptedCharactersInternal.None)
),
Factory.Code(
$" return;{Environment.NewLine} case 2:{Environment.NewLine}" +
@ -458,33 +458,33 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new MarkupBlock(
Factory.Markup(" "),
new MarkupTagBlock(
Factory.Markup("<p>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<p>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup("Baz"),
new MarkupTagBlock(
Factory.Markup("</p>").Accepts(AcceptedCharacters.None)),
Factory.Markup(Environment.NewLine).Accepts(AcceptedCharacters.None)
Factory.Markup("</p>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup(Environment.NewLine).Accepts(AcceptedCharactersInternal.None)
),
new MarkupBlock(
Factory.Markup(" "),
new MarkupTagBlock(
Factory.Markup("<p>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<p>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup("Boz"),
new MarkupTagBlock(
Factory.Markup("</p>").Accepts(AcceptedCharacters.None)),
Factory.Markup(Environment.NewLine).Accepts(AcceptedCharacters.None)
Factory.Markup("</p>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup(Environment.NewLine).Accepts(AcceptedCharactersInternal.None)
),
Factory.Code($" }}{Environment.NewLine} default:{Environment.NewLine}").AsStatement(),
new MarkupBlock(
Factory.Markup(" "),
new MarkupTagBlock(
Factory.Markup("<p>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<p>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup("Biz"),
new MarkupTagBlock(
Factory.Markup("</p>").Accepts(AcceptedCharacters.None)),
Factory.Markup(Environment.NewLine).Accepts(AcceptedCharacters.None)
Factory.Markup("</p>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup(Environment.NewLine).Accepts(AcceptedCharactersInternal.None)
),
Factory.Code("} ").AsStatement(),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)));
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)));
}
[Fact]
@ -496,13 +496,13 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new MarkupBlock(
Factory.Markup(" "),
new MarkupTagBlock(
Factory.Markup("<p>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<p>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup("Foo"),
new MarkupTagBlock(
Factory.Markup("</p>").Accepts(AcceptedCharacters.None)),
Factory.Markup(" ").Accepts(AcceptedCharacters.None)
Factory.Markup("</p>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup(" ").Accepts(AcceptedCharactersInternal.None)
),
Factory.Code("}").AsStatement().Accepts(AcceptedCharacters.None)
Factory.Code("}").AsStatement().Accepts(AcceptedCharactersInternal.None)
));
}
@ -511,21 +511,21 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
ParseBlockTest("{ for(int i = 0; i < 10; i++) { <p>Foo</p> } }",
new StatementBlock(
Factory.MetaCode("{").Accepts(AcceptedCharacters.None),
Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
Factory.Code(" for(int i = 0; i < 10; i++) {")
.AsStatement()
.AutoCompleteWith(autoCompleteString: null),
new MarkupBlock(
Factory.Markup(" "),
new MarkupTagBlock(
Factory.Markup("<p>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<p>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup("Foo"),
new MarkupTagBlock(
Factory.Markup("</p>").Accepts(AcceptedCharacters.None)),
Factory.Markup(" ").Accepts(AcceptedCharacters.None)
Factory.Markup("</p>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup(" ").Accepts(AcceptedCharactersInternal.None)
),
Factory.Code("} ").AsStatement(),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)));
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)));
}
[Fact]
@ -541,7 +541,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.MarkupTransition(),
Factory.MetaMarkup(":", HtmlSymbolType.Colon),
Factory.Markup("Bar" + Environment.NewLine)
.With(new SpanEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString, AcceptedCharacters.None))
.With(new SpanEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString, AcceptedCharactersInternal.None))
),
Factory.Code("}").AsStatement()));
}
@ -559,7 +559,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.MarkupTransition(),
Factory.MetaMarkup(":", HtmlSymbolType.Colon),
Factory.Markup(":Sometext" + Environment.NewLine)
.With(new SpanEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString, AcceptedCharacters.None))
.With(new SpanEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString, AcceptedCharactersInternal.None))
),
Factory.Code("}").AsStatement()));
}
@ -578,7 +578,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.MarkupTransition(),
Factory.MetaMarkup(":", HtmlSymbolType.Colon),
Factory.Markup("::Sometext" + Environment.NewLine)
.With(new SpanEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString, AcceptedCharacters.None))
.With(new SpanEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString, AcceptedCharactersInternal.None))
),
Factory.Code("}").AsStatement()));
}
@ -590,7 +590,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ParseBlockTest("{ if(foo) { @:Bar" + Environment.NewLine
+ "} } zoop",
new StatementBlock(
Factory.MetaCode("{").Accepts(AcceptedCharacters.None),
Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
Factory.Code(" if(foo) {")
.AsStatement()
.AutoCompleteWith(autoCompleteString: null),
@ -598,11 +598,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.Markup(" "),
Factory.MarkupTransition(),
Factory.MetaMarkup(":", HtmlSymbolType.Colon),
Factory.Markup("Bar" + Environment.NewLine).Accepts(AcceptedCharacters.None)
.With(new SpanEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString, AcceptedCharacters.None))
Factory.Markup("Bar" + Environment.NewLine).Accepts(AcceptedCharactersInternal.None)
.With(new SpanEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString, AcceptedCharactersInternal.None))
),
Factory.Code("} ").AsStatement(),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)));
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)));
}
[Fact(Skip = "Fails due to https://github.com/aspnet/Razor/issues/897")]
@ -613,10 +613,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.Code("if (i > 0) {").AsStatement(),
new MarkupBlock(
new MarkupTagBlock(
Factory.MarkupTransition("<text>").Accepts(AcceptedCharacters.None)),
Factory.Markup(";").Accepts(AcceptedCharacters.None),
Factory.MarkupTransition("<text>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup(";").Accepts(AcceptedCharactersInternal.None),
new MarkupTagBlock(
Factory.MarkupTransition("</text>").Accepts(AcceptedCharacters.None))),
Factory.MarkupTransition("</text>").Accepts(AcceptedCharactersInternal.None))),
Factory.Code(" }").AsStatement()));
}
@ -625,18 +625,18 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
ParseBlockTest("{ if (i > 0) { <text>;</text> } }",
new StatementBlock(
Factory.MetaCode("{").Accepts(AcceptedCharacters.None),
Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
Factory.Code(" if (i > 0) {")
.AsStatement()
.AutoCompleteWith(autoCompleteString: null),
new MarkupBlock(
new MarkupTagBlock(
Factory.MarkupTransition("<text>").Accepts(AcceptedCharacters.None)),
Factory.Markup(";").Accepts(AcceptedCharacters.None),
Factory.MarkupTransition("<text>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup(";").Accepts(AcceptedCharactersInternal.None),
new MarkupTagBlock(
Factory.MarkupTransition("</text>").Accepts(AcceptedCharacters.None))),
Factory.MarkupTransition("</text>").Accepts(AcceptedCharactersInternal.None))),
Factory.Code(" } ").AsStatement(),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)));
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)));
}
[Fact(Skip = "Fails due to https://github.com/aspnet/Razor/issues/897")]
@ -654,7 +654,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
+ " }" + Environment.NewLine
+ "}",
new StatementBlock(
Factory.MetaCode("{").Accepts(AcceptedCharacters.None),
Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
Factory.Code($"{Environment.NewLine} if(true) {{{Environment.NewLine}")
.AsStatement()
.AutoCompleteWith(autoCompleteString: null),
@ -663,31 +663,31 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.MarkupTransition(),
Factory.MetaMarkup(":", HtmlSymbolType.Colon),
Factory.Markup("Single Line Markup" + Environment.NewLine)
.With(new SpanEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString, AcceptedCharacters.None))
.With(new SpanEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString, AcceptedCharactersInternal.None))
),
Factory.Code($" }}{Environment.NewLine} foreach (var p in Enumerable.Range(1, 10)) {{{Environment.NewLine}").AsStatement(),
new MarkupBlock(
new MarkupTagBlock(
Factory.MarkupTransition("<text>").Accepts(AcceptedCharacters.None)),
Factory.Markup("The number is ").Accepts(AcceptedCharacters.None),
Factory.MarkupTransition("<text>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup("The number is ").Accepts(AcceptedCharactersInternal.None),
new ExpressionBlock(
Factory.CodeTransition(),
Factory.Code("p").AsImplicitExpression(CSharpCodeParser.DefaultKeywords).Accepts(AcceptedCharacters.NonWhiteSpace)
Factory.Code("p").AsImplicitExpression(CSharpCodeParser.DefaultKeywords).Accepts(AcceptedCharactersInternal.NonWhiteSpace)
),
new MarkupTagBlock(
Factory.MarkupTransition("</text>").Accepts(AcceptedCharacters.None))),
Factory.MarkupTransition("</text>").Accepts(AcceptedCharactersInternal.None))),
Factory.Code($"{Environment.NewLine} }}{Environment.NewLine} if(!false) {{{Environment.NewLine}").AsStatement(),
new MarkupBlock(
Factory.Markup(" "),
new MarkupTagBlock(
Factory.Markup("<p>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<p>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup("A real tag!"),
new MarkupTagBlock(
Factory.Markup("</p>").Accepts(AcceptedCharacters.None)),
Factory.Markup(Environment.NewLine).Accepts(AcceptedCharacters.None)
Factory.Markup("</p>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup(Environment.NewLine).Accepts(AcceptedCharactersInternal.None)
),
Factory.Code(" }" + Environment.NewLine).AsStatement(),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)));
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)));
}
}
}

View File

@ -17,12 +17,12 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new StatementBlock(
Factory.CodeTransition(),
Factory.MetaCode("{")
.Accepts(AcceptedCharacters.None),
.Accepts(AcceptedCharactersInternal.None),
Factory.Code(" foo(); ")
.AsStatement()
.AutoCompleteWith(autoCompleteString: null),
Factory.MetaCode("}")
.Accepts(AcceptedCharacters.None)
.Accepts(AcceptedCharactersInternal.None)
));
}
@ -31,16 +31,16 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
ParseBlockTest("{@}",
new StatementBlock(
Factory.MetaCode("{").Accepts(AcceptedCharacters.None),
Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
Factory.EmptyCSharp()
.AsStatement()
.AutoCompleteWith(autoCompleteString: null),
new ExpressionBlock(
Factory.CodeTransition(),
Factory.EmptyCSharp().AsImplicitExpression(KeywordSet, acceptTrailingDot: true).Accepts(AcceptedCharacters.NonWhiteSpace)
Factory.EmptyCSharp().AsImplicitExpression(KeywordSet, acceptTrailingDot: true).Accepts(AcceptedCharactersInternal.NonWhiteSpace)
),
Factory.EmptyCSharp().AsStatement(),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)),
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
designTime: true,
expectedErrors: new[]
{
@ -56,16 +56,16 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
ParseBlockTest("{@.}",
new StatementBlock(
Factory.MetaCode("{").Accepts(AcceptedCharacters.None),
Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
Factory.EmptyCSharp()
.AsStatement()
.AutoCompleteWith(autoCompleteString: null),
new ExpressionBlock(
Factory.CodeTransition(),
Factory.EmptyCSharp().AsImplicitExpression(KeywordSet, acceptTrailingDot: true).Accepts(AcceptedCharacters.NonWhiteSpace)
Factory.EmptyCSharp().AsImplicitExpression(KeywordSet, acceptTrailingDot: true).Accepts(AcceptedCharactersInternal.NonWhiteSpace)
),
Factory.Code(".").AsStatement(),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)),
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
designTime: true,
expectedErrors: new[]
{
@ -83,16 +83,16 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
+ " @" + Environment.NewLine
+ "}",
new StatementBlock(
Factory.MetaCode("{").Accepts(AcceptedCharacters.None),
Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
Factory.Code(Environment.NewLine + " ")
.AsStatement()
.AutoCompleteWith(autoCompleteString: null),
new ExpressionBlock(
Factory.CodeTransition(),
Factory.EmptyCSharp().AsImplicitExpression(KeywordSet, acceptTrailingDot: true).Accepts(AcceptedCharacters.NonWhiteSpace)
Factory.EmptyCSharp().AsImplicitExpression(KeywordSet, acceptTrailingDot: true).Accepts(AcceptedCharactersInternal.NonWhiteSpace)
),
Factory.Code(Environment.NewLine).AsStatement(),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)),
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
/* designTimeParser */ true,
new RazorError(
LegacyResources.ParseError_Unexpected_WhiteSpace_At_Start_Of_CodeBlock_CS,
@ -106,15 +106,15 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ParseBlockTest("{@foo." + Environment.NewLine
+ "}",
new StatementBlock(
Factory.MetaCode("{").Accepts(AcceptedCharacters.None),
Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
Factory.EmptyCSharp()
.AsStatement()
.AutoCompleteWith(autoCompleteString: null),
new ExpressionBlock(
Factory.CodeTransition(),
Factory.Code("foo.").AsImplicitExpression(KeywordSet, acceptTrailingDot: true).Accepts(AcceptedCharacters.NonWhiteSpace)),
Factory.Code("foo.").AsImplicitExpression(KeywordSet, acceptTrailingDot: true).Accepts(AcceptedCharactersInternal.NonWhiteSpace)),
Factory.Code(Environment.NewLine).AsStatement(),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)));
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)));
}
[Fact]
@ -123,15 +123,15 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ParseBlockTest("{@foo." + Environment.NewLine
+ "}",
new StatementBlock(
Factory.MetaCode("{").Accepts(AcceptedCharacters.None),
Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
Factory.EmptyCSharp()
.AsStatement()
.AutoCompleteWith(autoCompleteString: null),
new ExpressionBlock(
Factory.CodeTransition(),
Factory.Code("foo.").AsImplicitExpression(KeywordSet, acceptTrailingDot: true).Accepts(AcceptedCharacters.NonWhiteSpace)),
Factory.Code("foo.").AsImplicitExpression(KeywordSet, acceptTrailingDot: true).Accepts(AcceptedCharactersInternal.NonWhiteSpace)),
Factory.Code(Environment.NewLine).AsStatement(),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)),
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
designTime: true);
}
}

View File

@ -15,20 +15,20 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
+ "}",
new MarkupBlock(
Factory.MarkupTransition()
.Accepts(AcceptedCharacters.None),
.Accepts(AcceptedCharactersInternal.None),
Factory.MetaMarkup(":", HtmlSymbolType.Colon),
Factory.Markup(" ")
.With(new SpanEditHandler(
CSharpLanguageCharacteristics.Instance.TokenizeString,
AcceptedCharacters.Any)),
AcceptedCharactersInternal.Any)),
new StatementBlock(
Factory.CodeTransition()
.Accepts(AcceptedCharacters.None),
.Accepts(AcceptedCharactersInternal.None),
Factory.Code("if (true) { }")
.AsStatement()
),
Factory.Markup(Environment.NewLine)
.Accepts(AcceptedCharacters.None)));
.Accepts(AcceptedCharactersInternal.None)));
}
}
}

View File

@ -16,51 +16,51 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
internal void ImplicitExpressionTest(string input, params RazorError[] errors)
{
ImplicitExpressionTest(input, AcceptedCharacters.NonWhiteSpace, errors);
ImplicitExpressionTest(input, AcceptedCharactersInternal.NonWhiteSpace, errors);
}
internal void ImplicitExpressionTest(string input, AcceptedCharacters acceptedCharacters, params RazorError[] errors)
internal void ImplicitExpressionTest(string input, AcceptedCharactersInternal acceptedCharacters, params RazorError[] errors)
{
ImplicitExpressionTest(input, input, acceptedCharacters, errors);
}
internal void ImplicitExpressionTest(string input, string expected, params RazorError[] errors)
{
ImplicitExpressionTest(input, expected, AcceptedCharacters.NonWhiteSpace, errors);
ImplicitExpressionTest(input, expected, AcceptedCharactersInternal.NonWhiteSpace, errors);
}
internal override void SingleSpanBlockTest(string document, BlockKind blockKind, SpanKind spanType, AcceptedCharacters acceptedCharacters = AcceptedCharacters.Any)
internal override void SingleSpanBlockTest(string document, BlockKindInternal blockKind, SpanKindInternal spanType, AcceptedCharactersInternal acceptedCharacters = AcceptedCharactersInternal.Any)
{
SingleSpanBlockTest(document, blockKind, spanType, acceptedCharacters, expectedError: null);
}
internal override void SingleSpanBlockTest(string document, string spanContent, BlockKind blockKind, SpanKind spanType, AcceptedCharacters acceptedCharacters = AcceptedCharacters.Any)
internal override void SingleSpanBlockTest(string document, string spanContent, BlockKindInternal blockKind, SpanKindInternal spanType, AcceptedCharactersInternal acceptedCharacters = AcceptedCharactersInternal.Any)
{
SingleSpanBlockTest(document, spanContent, blockKind, spanType, acceptedCharacters, expectedErrors: null);
}
internal override void SingleSpanBlockTest(string document, BlockKind blockKind, SpanKind spanType, params RazorError[] expectedError)
internal override void SingleSpanBlockTest(string document, BlockKindInternal blockKind, SpanKindInternal spanType, params RazorError[] expectedError)
{
SingleSpanBlockTest(document, document, blockKind, spanType, expectedError);
}
internal override void SingleSpanBlockTest(string document, string spanContent, BlockKind blockKind, SpanKind spanType, params RazorError[] expectedErrors)
internal override void SingleSpanBlockTest(string document, string spanContent, BlockKindInternal blockKind, SpanKindInternal spanType, params RazorError[] expectedErrors)
{
SingleSpanBlockTest(document, spanContent, blockKind, spanType, AcceptedCharacters.Any, expectedErrors ?? new RazorError[0]);
SingleSpanBlockTest(document, spanContent, blockKind, spanType, AcceptedCharactersInternal.Any, expectedErrors ?? new RazorError[0]);
}
internal override void SingleSpanBlockTest(string document, BlockKind blockKind, SpanKind spanType, AcceptedCharacters acceptedCharacters, params RazorError[] expectedError)
internal override void SingleSpanBlockTest(string document, BlockKindInternal blockKind, SpanKindInternal spanType, AcceptedCharactersInternal acceptedCharacters, params RazorError[] expectedError)
{
SingleSpanBlockTest(document, document, blockKind, spanType, acceptedCharacters, expectedError);
}
internal override void SingleSpanBlockTest(string document, string spanContent, BlockKind blockKind, SpanKind spanType, AcceptedCharacters acceptedCharacters, params RazorError[] expectedErrors)
internal override void SingleSpanBlockTest(string document, string spanContent, BlockKindInternal blockKind, SpanKindInternal spanType, AcceptedCharactersInternal acceptedCharacters, params RazorError[] expectedErrors)
{
var b = CreateSimpleBlockAndSpan(spanContent, blockKind, spanType, acceptedCharacters);
ParseBlockTest(document, b, expectedErrors ?? new RazorError[0]);
}
internal void ImplicitExpressionTest(string input, string expected, AcceptedCharacters acceptedCharacters, params RazorError[] errors)
internal void ImplicitExpressionTest(string input, string expected, AcceptedCharactersInternal acceptedCharacters, params RazorError[] errors)
{
var factory = CreateSpanFactory();
ParseBlockTest(SyntaxConstants.TransitionString + input,

View File

@ -85,7 +85,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
prefix: new LocationTagged<string>(string.Empty, valueLocation2),
value: new LocationTagged<string>("Bar", valueLocation2))),
Factory.Markup("'").With(SpanChunkGenerator.Null)),
Factory.Markup(" />").Accepts(AcceptedCharacters.None))));
Factory.Markup(" />").Accepts(AcceptedCharactersInternal.None))));
}
[Theory]
@ -147,7 +147,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
prefix: new LocationTagged<string>(string.Empty, valueLocation2),
value: new LocationTagged<string>("Bar", valueLocation2))),
Factory.Markup("'").With(SpanChunkGenerator.Null)),
Factory.Markup(" />").Accepts(AcceptedCharacters.None))));
Factory.Markup(" />").Accepts(AcceptedCharactersInternal.None))));
}
[Theory]
@ -175,7 +175,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
prefix: new LocationTagged<string>(string.Empty, valueLocation, 0, valueLocation),
value: new LocationTagged<string>("Foo", valueLocation, 0, valueLocation))),
Factory.Markup("'").With(SpanChunkGenerator.Null)),
Factory.Markup(" />").Accepts(AcceptedCharacters.None))));
Factory.Markup(" />").Accepts(AcceptedCharactersInternal.None))));
}
[Fact]
@ -193,7 +193,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new LiteralAttributeChunkGenerator(
prefix: new LocationTagged<string>(string.Empty, 9, 0, 9), value: new LocationTagged<string>("Foo", 9, 0, 9))),
Factory.Markup("'").With(SpanChunkGenerator.Null)),
Factory.Markup(" />").Accepts(AcceptedCharacters.None))));
Factory.Markup(" />").Accepts(AcceptedCharactersInternal.None))));
}
[Fact]
@ -213,7 +213,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new LiteralAttributeChunkGenerator(
prefix: new LocationTagged<string>(string.Empty, 16, 2, 1), value: new LocationTagged<string>("Foo", 16, 2, 1))),
Factory.Markup("'").With(SpanChunkGenerator.Null)),
Factory.Markup(" />").Accepts(AcceptedCharacters.None))));
Factory.Markup(" />").Accepts(AcceptedCharactersInternal.None))));
}
[Fact]
@ -234,9 +234,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.CodeTransition(),
Factory.Code("Foo")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace))),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace))),
Factory.Markup("'").With(SpanChunkGenerator.Null)),
Factory.Markup(" />").Accepts(AcceptedCharacters.None))));
Factory.Markup(" />").Accepts(AcceptedCharactersInternal.None))));
}
[Fact]
@ -252,7 +252,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.Markup(" Bar").With(new LiteralAttributeChunkGenerator(prefix: new LocationTagged<string>(" ", 12, 0, 12), value: new LocationTagged<string>("Bar", 13, 0, 13))),
Factory.Markup(" Baz").With(new LiteralAttributeChunkGenerator(prefix: new LocationTagged<string>(" ", 16, 0, 16), value: new LocationTagged<string>("Baz", 17, 0, 17))),
Factory.Markup("'").With(SpanChunkGenerator.Null)),
Factory.Markup(" />").Accepts(AcceptedCharacters.None))));
Factory.Markup(" />").Accepts(AcceptedCharactersInternal.None))));
}
[Fact]
@ -268,7 +268,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.Markup(" Bar").With(new LiteralAttributeChunkGenerator(prefix: new LocationTagged<string>(" ", 12, 0, 12), value: new LocationTagged<string>("Bar", 13, 0, 13))),
Factory.Markup(" Baz").With(new LiteralAttributeChunkGenerator(prefix: new LocationTagged<string>(" ", 16, 0, 16), value: new LocationTagged<string>("Baz", 17, 0, 17))),
Factory.Markup("\"").With(SpanChunkGenerator.Null)),
Factory.Markup(" />").Accepts(AcceptedCharacters.None))));
Factory.Markup(" />").Accepts(AcceptedCharactersInternal.None))));
}
[Fact]
@ -289,7 +289,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
prefix: new LocationTagged<string>(string.Empty, 10, 1, 6),
value: new LocationTagged<string>("Foo", 10, 1, 6))),
Factory.Markup("'").With(SpanChunkGenerator.Null)),
Factory.Markup(" />").Accepts(AcceptedCharacters.None))));
Factory.Markup(" />").Accepts(AcceptedCharactersInternal.None))));
}
[Fact]
@ -320,7 +320,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
prefix: new LocationTagged<string>(string.Empty, 21, 2, 6),
value: new LocationTagged<string>("Bar", 21, 2, 6))),
Factory.Markup("'").With(SpanChunkGenerator.Null)),
Factory.Markup(" />").Accepts(AcceptedCharacters.None))));
Factory.Markup(" />").Accepts(AcceptedCharactersInternal.None))));
}
[Fact]
@ -341,7 +341,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
prefix: new LocationTagged<string>(string.Empty, 12, 1, 6),
value: new LocationTagged<string>("Foo", 12, 1, 6))),
Factory.Markup("'").With(SpanChunkGenerator.Null)),
Factory.Markup(" />").Accepts(AcceptedCharacters.None))));
Factory.Markup(" />").Accepts(AcceptedCharactersInternal.None))));
}
[Fact]
@ -356,7 +356,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.Markup("Foo").With(new LiteralAttributeChunkGenerator(prefix: new LocationTagged<string>(string.Empty, 8, 0, 8), value: new LocationTagged<string>("Foo", 8, 0, 8)))),
new MarkupBlock(Factory.Markup(" Bar")),
new MarkupBlock(Factory.Markup(" Baz")),
Factory.Markup(" />").Accepts(AcceptedCharacters.None))));
Factory.Markup(" />").Accepts(AcceptedCharactersInternal.None))));
}
[Fact]
@ -373,9 +373,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.CodeTransition(),
Factory.Code("foo")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace))),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace))),
Factory.Markup("'").With(SpanChunkGenerator.Null)),
Factory.Markup(" />").Accepts(AcceptedCharacters.None))));
Factory.Markup(" />").Accepts(AcceptedCharactersInternal.None))));
}
[Fact]
@ -392,7 +392,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.CodeTransition(),
Factory.Code("foo")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace))),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace))),
Factory.Markup(" bar").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(" ", 13, 0, 13), new LocationTagged<string>("bar", 14, 0, 14))),
new MarkupBlock(new DynamicAttributeBlockChunkGenerator(new LocationTagged<string>(" ", 17, 0, 17), 18, 0, 18),
Factory.Markup(" ").With(SpanChunkGenerator.Null),
@ -400,9 +400,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.CodeTransition(),
Factory.Code("baz")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace))),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace))),
Factory.Markup("'").With(SpanChunkGenerator.Null)),
Factory.Markup(" />").Accepts(AcceptedCharacters.None))));
Factory.Markup(" />").Accepts(AcceptedCharactersInternal.None))));
}
[Fact]
@ -419,13 +419,13 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.CodeTransition(),
Factory.Code("foo")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace))),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace))),
Factory.Markup(" ~/Foo/Bar")
.With(new LiteralAttributeChunkGenerator(
new LocationTagged<string>(" ", 13, 0, 13),
new LocationTagged<string>("~/Foo/Bar", 14, 0, 14))),
Factory.Markup("'").With(SpanChunkGenerator.Null)),
Factory.Markup(" />").Accepts(AcceptedCharacters.None))));
Factory.Markup(" />").Accepts(AcceptedCharactersInternal.None))));
}
[Fact]
@ -442,8 +442,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.CodeTransition(),
Factory.Code("foo")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace)))),
Factory.Markup(" />").Accepts(AcceptedCharacters.None))));
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)))),
Factory.Markup(" />").Accepts(AcceptedCharactersInternal.None))));
}
[Fact]
@ -460,7 +460,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.CodeTransition(),
Factory.Code("foo")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace)))),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)))),
Factory.Markup(" />"))));
}
@ -481,8 +481,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new AttributeBlockChunkGenerator("foo", new LocationTagged<string>(" foo='", 5, 0, 5), new LocationTagged<string>("'", 13, 0, 13)),
Factory.Markup(" foo='").With(SpanChunkGenerator.Null),
new MarkupBlock(
Factory.Markup("@").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(string.Empty, 11, 0, 11), new LocationTagged<string>("@", 11, 0, 11))).Accepts(AcceptedCharacters.None),
Factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharacters.None)),
Factory.Markup("@").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(string.Empty, 11, 0, 11), new LocationTagged<string>("@", 11, 0, 11))).Accepts(AcceptedCharactersInternal.None),
Factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None)),
Factory.Markup("'").With(SpanChunkGenerator.Null)),
Factory.Markup(" />"))));
}
@ -572,11 +572,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.CodeTransition(),
Factory.Code("foo")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace)),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)),
Factory.Markup("'")),
Factory.Markup(">").Accepts(AcceptedCharacters.None)),
Factory.Markup(">").Accepts(AcceptedCharactersInternal.None)),
new MarkupTagBlock(
Factory.Markup("</span>").Accepts(AcceptedCharacters.None))));
Factory.Markup("</span>").Accepts(AcceptedCharactersInternal.None))));
}
[Fact]
@ -592,11 +592,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.CodeTransition(),
Factory.Code("foo")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace)),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)),
Factory.Markup("'")),
Factory.Markup(">").Accepts(AcceptedCharacters.None)),
Factory.Markup(">").Accepts(AcceptedCharactersInternal.None)),
new MarkupTagBlock(
Factory.Markup("</span>").Accepts(AcceptedCharacters.None))));
Factory.Markup("</span>").Accepts(AcceptedCharactersInternal.None))));
}
[Fact]
@ -612,7 +612,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.CodeTransition(),
Factory.Code("foo")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace)),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)),
Factory.Markup("'")),
Factory.Markup(">")),
new MarkupTagBlock(
@ -632,7 +632,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.CodeTransition(),
Factory.Code("foo")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace))),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace))),
Factory.Markup(" >")),
new MarkupTagBlock(
Factory.Markup("</span>"))));

View File

@ -19,14 +19,14 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.EmptyHtml(),
new StatementBlock(
Factory.CodeTransition(),
Factory.MetaCode("{").Accepts(AcceptedCharacters.None),
Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
Factory.Code(Environment.NewLine).AsStatement().AutoCompleteWith(null),
new MarkupBlock(
Factory.Markup(" "),
Factory.Markup("<!-- Hello, I'm a comment that shouldn't break razor --->").Accepts(AcceptedCharacters.None),
Factory.Markup(Environment.NewLine).Accepts(AcceptedCharacters.None)),
Factory.Markup("<!-- Hello, I'm a comment that shouldn't break razor --->").Accepts(AcceptedCharactersInternal.None),
Factory.Markup(Environment.NewLine).Accepts(AcceptedCharactersInternal.None)),
Factory.EmptyCSharp().AsStatement(),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)),
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
Factory.EmptyHtml()),
new RazorError[0]);
}
@ -40,7 +40,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.EmptyHtml(),
new StatementBlock(
Factory.CodeTransition(),
Factory.MetaCode("{").Accepts(AcceptedCharacters.None),
Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
Factory.Code(Environment.NewLine)
.AsStatement()
.AutoCompleteWith("}"),
@ -64,7 +64,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.EmptyHtml(),
new StatementBlock(
Factory.CodeTransition(),
Factory.MetaCode("{").Accepts(AcceptedCharacters.None),
Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
Factory.Code(Environment.NewLine)
.AsStatement()
.AutoCompleteWith("}"),
@ -74,7 +74,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
),
new MarkupBlock(
new MarkupTagBlock(
Factory.Markup("</html>").Accepts(AcceptedCharacters.None))
Factory.Markup("</html>").Accepts(AcceptedCharactersInternal.None))
),
Factory.EmptyCSharp().AsStatement()
)
@ -114,14 +114,14 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ParseBlockTest("<li><p>Foo</P></lI>",
new MarkupBlock(
new MarkupTagBlock(
Factory.Markup("<li>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<li>").Accepts(AcceptedCharactersInternal.None)),
new MarkupTagBlock(
Factory.Markup("<p>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<p>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup("Foo"),
new MarkupTagBlock(
Factory.Markup("</P>").Accepts(AcceptedCharacters.None)),
Factory.Markup("</P>").Accepts(AcceptedCharactersInternal.None)),
new MarkupTagBlock(
Factory.Markup("</lI>").Accepts(AcceptedCharacters.None))
Factory.Markup("</lI>").Accepts(AcceptedCharactersInternal.None))
));
}
@ -134,7 +134,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.MarkupTransition(),
Factory.MetaMarkup(":", HtmlSymbolType.Colon),
Factory.Markup("<li>Foo Bar Baz" + Environment.NewLine)
.With(new SpanEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString, AcceptedCharacters.None))
.With(new SpanEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString, AcceptedCharactersInternal.None))
));
}
@ -156,13 +156,13 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ParseBlockTest("<a><b></b></a><c></c>",
new MarkupBlock(
new MarkupTagBlock(
Factory.Markup("<a>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<a>").Accepts(AcceptedCharactersInternal.None)),
new MarkupTagBlock(
Factory.Markup("<b>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<b>").Accepts(AcceptedCharactersInternal.None)),
new MarkupTagBlock(
Factory.Markup("</b>").Accepts(AcceptedCharacters.None)),
Factory.Markup("</b>").Accepts(AcceptedCharactersInternal.None)),
new MarkupTagBlock(
Factory.Markup("</a>").Accepts(AcceptedCharacters.None))
Factory.Markup("</a>").Accepts(AcceptedCharactersInternal.None))
));
}
@ -172,17 +172,17 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ParseBlockTest("<baz><boz><biz></biz></boz></baz>",
new MarkupBlock(
new MarkupTagBlock(
Factory.Markup("<baz>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<baz>").Accepts(AcceptedCharactersInternal.None)),
new MarkupTagBlock(
Factory.Markup("<boz>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<boz>").Accepts(AcceptedCharactersInternal.None)),
new MarkupTagBlock(
Factory.Markup("<biz>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<biz>").Accepts(AcceptedCharactersInternal.None)),
new MarkupTagBlock(
Factory.Markup("</biz>").Accepts(AcceptedCharacters.None)),
Factory.Markup("</biz>").Accepts(AcceptedCharactersInternal.None)),
new MarkupTagBlock(
Factory.Markup("</boz>").Accepts(AcceptedCharacters.None)),
Factory.Markup("</boz>").Accepts(AcceptedCharactersInternal.None)),
new MarkupTagBlock(
Factory.Markup("</baz>").Accepts(AcceptedCharacters.None))
Factory.Markup("</baz>").Accepts(AcceptedCharactersInternal.None))
));
}
@ -192,13 +192,13 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ParseBlockTest("<foo><bar><baz></foo>",
new MarkupBlock(
new MarkupTagBlock(
Factory.Markup("<foo>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<foo>").Accepts(AcceptedCharactersInternal.None)),
new MarkupTagBlock(
Factory.Markup("<bar>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<bar>").Accepts(AcceptedCharactersInternal.None)),
new MarkupTagBlock(
Factory.Markup("<baz>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<baz>").Accepts(AcceptedCharactersInternal.None)),
new MarkupTagBlock(
Factory.Markup("</foo>").Accepts(AcceptedCharacters.None))
Factory.Markup("</foo>").Accepts(AcceptedCharactersInternal.None))
));
}
@ -208,7 +208,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ParseBlockTest("<foo />",
new MarkupBlock(
new MarkupTagBlock(
Factory.Markup("<foo />").Accepts(AcceptedCharacters.None))
Factory.Markup("<foo />").Accepts(AcceptedCharactersInternal.None))
));
}
@ -218,11 +218,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ParseBlockTest("<foo><bar /></foo>",
new MarkupBlock(
new MarkupTagBlock(
Factory.Markup("<foo>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<foo>").Accepts(AcceptedCharactersInternal.None)),
new MarkupTagBlock(
Factory.Markup("<bar />").Accepts(AcceptedCharacters.None)),
Factory.Markup("<bar />").Accepts(AcceptedCharactersInternal.None)),
new MarkupTagBlock(
Factory.Markup("</foo>").Accepts(AcceptedCharacters.None))
Factory.Markup("</foo>").Accepts(AcceptedCharactersInternal.None))
));
}
@ -237,19 +237,19 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.Markup(" bar=\"").With(SpanChunkGenerator.Null),
Factory.Markup("baz").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(string.Empty, 10, 0, 10), new LocationTagged<string>("baz", 10, 0, 10))),
Factory.Markup("\"").With(SpanChunkGenerator.Null)),
Factory.Markup(">").Accepts(AcceptedCharacters.None)),
Factory.Markup(">").Accepts(AcceptedCharactersInternal.None)),
new MarkupTagBlock(
Factory.Markup("<biz>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<biz>").Accepts(AcceptedCharactersInternal.None)),
new MarkupTagBlock(
Factory.Markup("<boz"),
new MarkupBlock(new AttributeBlockChunkGenerator("zoop", new LocationTagged<string>(" zoop=", 24, 0, 24), new LocationTagged<string>(string.Empty, 34, 0, 34)),
Factory.Markup(" zoop=").With(SpanChunkGenerator.Null),
Factory.Markup("zork").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(string.Empty, 30, 0, 30), new LocationTagged<string>("zork", 30, 0, 30)))),
Factory.Markup("/>").Accepts(AcceptedCharacters.None)),
Factory.Markup("/>").Accepts(AcceptedCharactersInternal.None)),
new MarkupTagBlock(
Factory.Markup("</biz>").Accepts(AcceptedCharacters.None)),
Factory.Markup("</biz>").Accepts(AcceptedCharactersInternal.None)),
new MarkupTagBlock(
Factory.Markup("</foo>").Accepts(AcceptedCharacters.None))));
Factory.Markup("</foo>").Accepts(AcceptedCharactersInternal.None))));
}
[Fact]
@ -258,16 +258,16 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ParseBlockTest("<foo><bar baz=\">\" /></foo>",
new MarkupBlock(
new MarkupTagBlock(
Factory.Markup("<foo>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<foo>").Accepts(AcceptedCharactersInternal.None)),
new MarkupTagBlock(
Factory.Markup("<bar"),
new MarkupBlock(new AttributeBlockChunkGenerator("baz", new LocationTagged<string>(" baz=\"", 9, 0, 9), new LocationTagged<string>("\"", 16, 0, 16)),
Factory.Markup(" baz=\"").With(SpanChunkGenerator.Null),
Factory.Markup(">").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(string.Empty, 15, 0, 15), new LocationTagged<string>(">", 15, 0, 15))),
Factory.Markup("\"").With(SpanChunkGenerator.Null)),
Factory.Markup(" />").Accepts(AcceptedCharacters.None)),
Factory.Markup(" />").Accepts(AcceptedCharactersInternal.None)),
new MarkupTagBlock(
Factory.Markup("</foo>").Accepts(AcceptedCharacters.None))));
Factory.Markup("</foo>").Accepts(AcceptedCharactersInternal.None))));
}
[Fact]
@ -276,16 +276,16 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ParseBlockTest("<foo><bar baz=\'>\' /></foo>",
new MarkupBlock(
new MarkupTagBlock(
Factory.Markup("<foo>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<foo>").Accepts(AcceptedCharactersInternal.None)),
new MarkupTagBlock(
Factory.Markup("<bar"),
new MarkupBlock(new AttributeBlockChunkGenerator("baz", new LocationTagged<string>(" baz='", 9, 0, 9), new LocationTagged<string>("'", 16, 0, 16)),
Factory.Markup(" baz='").With(SpanChunkGenerator.Null),
Factory.Markup(">").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(string.Empty, 15, 0, 15), new LocationTagged<string>(">", 15, 0, 15))),
Factory.Markup("'").With(SpanChunkGenerator.Null)),
Factory.Markup(" />").Accepts(AcceptedCharacters.None)),
Factory.Markup(" />").Accepts(AcceptedCharactersInternal.None)),
new MarkupTagBlock(
Factory.Markup("</foo>").Accepts(AcceptedCharacters.None))));
Factory.Markup("</foo>").Accepts(AcceptedCharactersInternal.None))));
}
[Fact]
@ -294,18 +294,18 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ParseBlockTest("<foo><bar baz=\"/\"></bar></foo>",
new MarkupBlock(
new MarkupTagBlock(
Factory.Markup("<foo>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<foo>").Accepts(AcceptedCharactersInternal.None)),
new MarkupTagBlock(
Factory.Markup("<bar"),
new MarkupBlock(new AttributeBlockChunkGenerator("baz", new LocationTagged<string>(" baz=\"", 9, 0, 9), new LocationTagged<string>("\"", 16, 0, 16)),
Factory.Markup(" baz=\"").With(SpanChunkGenerator.Null),
Factory.Markup("/").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(string.Empty, 15, 0, 15), new LocationTagged<string>("/", 15, 0, 15))),
Factory.Markup("\"").With(SpanChunkGenerator.Null)),
Factory.Markup(">").Accepts(AcceptedCharacters.None)),
Factory.Markup(">").Accepts(AcceptedCharactersInternal.None)),
new MarkupTagBlock(
Factory.Markup("</bar>").Accepts(AcceptedCharacters.None)),
Factory.Markup("</bar>").Accepts(AcceptedCharactersInternal.None)),
new MarkupTagBlock(
Factory.Markup("</foo>").Accepts(AcceptedCharacters.None))));
Factory.Markup("</foo>").Accepts(AcceptedCharactersInternal.None))));
}
[Fact]
@ -314,18 +314,18 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ParseBlockTest("<foo><bar baz=\'/\'></bar></foo>",
new MarkupBlock(
new MarkupTagBlock(
Factory.Markup("<foo>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<foo>").Accepts(AcceptedCharactersInternal.None)),
new MarkupTagBlock(
Factory.Markup("<bar"),
new MarkupBlock(new AttributeBlockChunkGenerator("baz", new LocationTagged<string>(" baz='", 9, 0, 9), new LocationTagged<string>("'", 16, 0, 16)),
Factory.Markup(" baz='").With(SpanChunkGenerator.Null),
Factory.Markup("/").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(string.Empty, 15, 0, 15), new LocationTagged<string>("/", 15, 0, 15))),
Factory.Markup("'").With(SpanChunkGenerator.Null)),
Factory.Markup(">").Accepts(AcceptedCharacters.None)),
Factory.Markup(">").Accepts(AcceptedCharactersInternal.None)),
new MarkupTagBlock(
Factory.Markup("</bar>").Accepts(AcceptedCharacters.None)),
Factory.Markup("</bar>").Accepts(AcceptedCharactersInternal.None)),
new MarkupTagBlock(
Factory.Markup("</foo>").Accepts(AcceptedCharacters.None))));
Factory.Markup("</foo>").Accepts(AcceptedCharactersInternal.None))));
}
[Fact]
@ -334,7 +334,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ParseBlockTest("<foo>",
new MarkupBlock(
new MarkupTagBlock(
Factory.Markup("<foo>").Accepts(AcceptedCharacters.None))),
Factory.Markup("<foo>").Accepts(AcceptedCharactersInternal.None))),
new RazorError(
LegacyResources.FormatParseError_MissingEndTag("foo"),
new SourceLocation(1, 0, 1),
@ -344,7 +344,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
[Fact]
public void ParseBlockSupportsCommentAsBlock()
{
SingleSpanBlockTest("<!-- foo -->", BlockKind.Markup, SpanKind.Markup, acceptedCharacters: AcceptedCharacters.None);
SingleSpanBlockTest("<!-- foo -->", BlockKindInternal.Markup, SpanKindInternal.Markup, acceptedCharacters: AcceptedCharactersInternal.None);
}
[Fact]
@ -353,12 +353,12 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ParseBlockTest("<foo>bar<!-- zoop -->baz</foo>",
new MarkupBlock(
new MarkupTagBlock(
Factory.Markup("<foo>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<foo>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup("bar"),
Factory.Markup("<!-- zoop -->").Accepts(AcceptedCharacters.None),
Factory.Markup("<!-- zoop -->").Accepts(AcceptedCharactersInternal.None),
Factory.Markup("baz"),
new MarkupTagBlock(
Factory.Markup("</foo>").Accepts(AcceptedCharacters.None))));
Factory.Markup("</foo>").Accepts(AcceptedCharactersInternal.None))));
}
public static TheoryData HtmlCommentSupportsMultipleDashesData
@ -373,37 +373,37 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
"<div><!--- Hello World ---></div>",
new MarkupBlock(
new MarkupTagBlock(
factory.Markup("<div>").Accepts(AcceptedCharacters.None)),
factory.Markup("<!--- Hello World --->").Accepts(AcceptedCharacters.None),
factory.Markup("<div>").Accepts(AcceptedCharactersInternal.None)),
factory.Markup("<!--- Hello World --->").Accepts(AcceptedCharactersInternal.None),
new MarkupTagBlock(
factory.Markup("</div>").Accepts(AcceptedCharacters.None)))
factory.Markup("</div>").Accepts(AcceptedCharactersInternal.None)))
},
{
"<div><!---- Hello World ----></div>",
new MarkupBlock(
new MarkupTagBlock(
factory.Markup("<div>").Accepts(AcceptedCharacters.None)),
factory.Markup("<!---- Hello World ---->").Accepts(AcceptedCharacters.None),
factory.Markup("<div>").Accepts(AcceptedCharactersInternal.None)),
factory.Markup("<!---- Hello World ---->").Accepts(AcceptedCharactersInternal.None),
new MarkupTagBlock(
factory.Markup("</div>").Accepts(AcceptedCharacters.None)))
factory.Markup("</div>").Accepts(AcceptedCharactersInternal.None)))
},
{
"<div><!----- Hello World -----></div>",
new MarkupBlock(
new MarkupTagBlock(
factory.Markup("<div>").Accepts(AcceptedCharacters.None)),
factory.Markup("<!----- Hello World ----->").Accepts(AcceptedCharacters.None),
factory.Markup("<div>").Accepts(AcceptedCharactersInternal.None)),
factory.Markup("<!----- Hello World ----->").Accepts(AcceptedCharactersInternal.None),
new MarkupTagBlock(
factory.Markup("</div>").Accepts(AcceptedCharacters.None)))
factory.Markup("</div>").Accepts(AcceptedCharactersInternal.None)))
},
{
"<div><!----- Hello < --- > World </div> -----></div>",
new MarkupBlock(
new MarkupTagBlock(
factory.Markup("<div>").Accepts(AcceptedCharacters.None)),
factory.Markup("<!----- Hello < --- > World </div> ----->").Accepts(AcceptedCharacters.None),
factory.Markup("<div>").Accepts(AcceptedCharactersInternal.None)),
factory.Markup("<!----- Hello < --- > World </div> ----->").Accepts(AcceptedCharactersInternal.None),
new MarkupTagBlock(
factory.Markup("</div>").Accepts(AcceptedCharacters.None)))
factory.Markup("</div>").Accepts(AcceptedCharactersInternal.None)))
},
};
}
@ -421,19 +421,19 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
[Fact]
public void ParseBlockProperlyBalancesCommentStartAndEndTags()
{
SingleSpanBlockTest("<!--<foo></bar>-->", BlockKind.Markup, SpanKind.Markup, acceptedCharacters: AcceptedCharacters.None);
SingleSpanBlockTest("<!--<foo></bar>-->", BlockKindInternal.Markup, SpanKindInternal.Markup, acceptedCharacters: AcceptedCharactersInternal.None);
}
[Fact]
public void ParseBlockTerminatesAtEOFWhenParsingComment()
{
SingleSpanBlockTest("<!--<foo>", "<!--<foo>", BlockKind.Markup, SpanKind.Markup);
SingleSpanBlockTest("<!--<foo>", "<!--<foo>", BlockKindInternal.Markup, SpanKindInternal.Markup);
}
[Fact]
public void ParseBlockOnlyTerminatesCommentOnFullEndSequence()
{
SingleSpanBlockTest("<!--<foo>--</bar>-->", BlockKind.Markup, SpanKind.Markup, acceptedCharacters: AcceptedCharacters.None);
SingleSpanBlockTest("<!--<foo>--</bar>-->", BlockKindInternal.Markup, SpanKindInternal.Markup, acceptedCharacters: AcceptedCharactersInternal.None);
}
[Fact]
@ -442,11 +442,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ParseBlockTest("<foo><!--<foo></bar-->--></foo>",
new MarkupBlock(
new MarkupTagBlock(
Factory.Markup("<foo>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<!--<foo></bar-->").Accepts(AcceptedCharacters.None),
Factory.Markup("<foo>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup("<!--<foo></bar-->").Accepts(AcceptedCharactersInternal.None),
Factory.Markup("-->"),
new MarkupTagBlock(
Factory.Markup("</foo>").Accepts(AcceptedCharacters.None))));
Factory.Markup("</foo>").Accepts(AcceptedCharactersInternal.None))));
}
[Fact]
@ -455,9 +455,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ParseBlockTest("<foo></!-- bar --></foo>",
new MarkupBlock(
new MarkupTagBlock(
Factory.Markup("<foo>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<foo>").Accepts(AcceptedCharactersInternal.None)),
new MarkupTagBlock(
Factory.Markup("</!-- bar -->").Accepts(AcceptedCharacters.None))),
Factory.Markup("</!-- bar -->").Accepts(AcceptedCharactersInternal.None))),
new RazorError(
LegacyResources.FormatParseError_MissingEndTag("foo"),
new SourceLocation(1, 0, 1),
@ -471,10 +471,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ParseBlockTest("<foo><!DOCTYPE foo bar baz></foo>",
new MarkupBlock(
new MarkupTagBlock(
Factory.Markup("<foo>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<!DOCTYPE foo bar baz>").Accepts(AcceptedCharacters.None),
Factory.Markup("<foo>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup("<!DOCTYPE foo bar baz>").Accepts(AcceptedCharactersInternal.None),
new MarkupTagBlock(
Factory.Markup("</foo>").Accepts(AcceptedCharacters.None))));
Factory.Markup("</foo>").Accepts(AcceptedCharactersInternal.None))));
}
[Fact]
@ -483,11 +483,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ParseBlockTest("<foo><!DOCTYPE foo bar> baz></foo>",
new MarkupBlock(
new MarkupTagBlock(
Factory.Markup("<foo>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<!DOCTYPE foo bar>").Accepts(AcceptedCharacters.None),
Factory.Markup("<foo>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup("<!DOCTYPE foo bar>").Accepts(AcceptedCharactersInternal.None),
Factory.Markup(" baz>"),
new MarkupTagBlock(
Factory.Markup("</foo>").Accepts(AcceptedCharacters.None))));
Factory.Markup("</foo>").Accepts(AcceptedCharactersInternal.None))));
}
[Fact]
@ -496,10 +496,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ParseBlockTest("<foo><?xml foo bar baz?></foo>",
new MarkupBlock(
new MarkupTagBlock(
Factory.Markup("<foo>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<?xml foo bar baz?>").Accepts(AcceptedCharacters.None),
Factory.Markup("<foo>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup("<?xml foo bar baz?>").Accepts(AcceptedCharactersInternal.None),
new MarkupTagBlock(
Factory.Markup("</foo>").Accepts(AcceptedCharacters.None))));
Factory.Markup("</foo>").Accepts(AcceptedCharactersInternal.None))));
}
[Fact]
@ -508,11 +508,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ParseBlockTest("<foo><?xml foo bar baz?> baz</foo>",
new MarkupBlock(
new MarkupTagBlock(
Factory.Markup("<foo>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<?xml foo bar baz?>").Accepts(AcceptedCharacters.None),
Factory.Markup("<foo>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup("<?xml foo bar baz?>").Accepts(AcceptedCharactersInternal.None),
Factory.Markup(" baz"),
new MarkupTagBlock(
Factory.Markup("</foo>").Accepts(AcceptedCharacters.None))));
Factory.Markup("</foo>").Accepts(AcceptedCharactersInternal.None))));
}
[Fact]
@ -521,10 +521,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ParseBlockTest("<foo><?xml foo bar> baz?></foo>",
new MarkupBlock(
new MarkupTagBlock(
Factory.Markup("<foo>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<?xml foo bar> baz?>").Accepts(AcceptedCharacters.None),
Factory.Markup("<foo>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup("<?xml foo bar> baz?>").Accepts(AcceptedCharactersInternal.None),
new MarkupTagBlock(
Factory.Markup("</foo>").Accepts(AcceptedCharacters.None))));
Factory.Markup("</foo>").Accepts(AcceptedCharactersInternal.None))));
}
[Fact]
@ -533,10 +533,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ParseBlockTest(@"<script>if(foo<bar) { alert(""baz"");)</script>",
new MarkupBlock(
new MarkupTagBlock(
Factory.Markup("<script>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<script>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup(@"if(foo<bar) { alert(""baz"");)"),
new MarkupTagBlock(
Factory.Markup("</script>").Accepts(AcceptedCharacters.None))));
Factory.Markup("</script>").Accepts(AcceptedCharactersInternal.None))));
}
[Fact]
@ -545,10 +545,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ParseBlockTest(@"<script>if(foo < bar) { alert(""baz"");)</script>",
new MarkupBlock(
new MarkupTagBlock(
Factory.Markup("<script>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<script>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup(@"if(foo < bar) { alert(""baz"");)"),
new MarkupTagBlock(
Factory.Markup("</script>").Accepts(AcceptedCharacters.None))));
Factory.Markup("</script>").Accepts(AcceptedCharactersInternal.None))));
}
[Fact]
@ -568,9 +568,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new MarkupBlock(
new MarkupTagBlock(
Factory.MarkupTransition("<text>")),
Factory.Markup("Foo Bar ").Accepts(AcceptedCharacters.None),
Factory.Markup("Foo Bar ").Accepts(AcceptedCharactersInternal.None),
new MarkupTagBlock(
Factory.Markup("<foo>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<foo>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup(" Baz"),
new MarkupTagBlock(
Factory.MarkupTransition("</text>"))));
@ -584,13 +584,13 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new MarkupTagBlock(
Factory.MarkupTransition("<text>")),
new MarkupTagBlock(
Factory.Markup("<text>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<text>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup("Foo Bar "),
new MarkupTagBlock(
Factory.Markup("<foo>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<foo>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup(" Baz"),
new MarkupTagBlock(
Factory.Markup("</text>").Accepts(AcceptedCharacters.None)),
Factory.Markup("</text>").Accepts(AcceptedCharactersInternal.None)),
new MarkupTagBlock(
Factory.MarkupTransition("</text>"))));
}
@ -601,15 +601,15 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ParseBlockTest("<foo><text><bar></bar></foo>",
new MarkupBlock(
new MarkupTagBlock(
Factory.Markup("<foo>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<foo>").Accepts(AcceptedCharactersInternal.None)),
new MarkupTagBlock(
Factory.Markup("<text>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<text>").Accepts(AcceptedCharactersInternal.None)),
new MarkupTagBlock(
Factory.Markup("<bar>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<bar>").Accepts(AcceptedCharactersInternal.None)),
new MarkupTagBlock(
Factory.Markup("</bar>").Accepts(AcceptedCharacters.None)),
Factory.Markup("</bar>").Accepts(AcceptedCharactersInternal.None)),
new MarkupTagBlock(
Factory.Markup("</foo>").Accepts(AcceptedCharacters.None))
Factory.Markup("</foo>").Accepts(AcceptedCharactersInternal.None))
));
}
@ -632,14 +632,14 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ParseBlockTest("<div>Foo @if(true) {} Bar</div>",
new MarkupBlock(
new MarkupTagBlock(
Factory.Markup("<div>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<div>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup("Foo "),
new StatementBlock(
Factory.CodeTransition(),
Factory.Code("if(true) {}").AsStatement()),
Factory.Markup(" Bar"),
new MarkupTagBlock(
Factory.Markup("</div>").Accepts(AcceptedCharacters.None))));
Factory.Markup("</div>").Accepts(AcceptedCharactersInternal.None))));
}
[Fact]
@ -648,16 +648,16 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ParseBlockTest(@"<script>foo<bar baz='@boz'></script>",
new MarkupBlock(
new MarkupTagBlock(
Factory.Markup("<script>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<script>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup("foo<bar baz='"),
new ExpressionBlock(
Factory.CodeTransition(),
Factory.Code("boz")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords, acceptTrailingDot: false)
.Accepts(AcceptedCharacters.NonWhiteSpace)),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)),
Factory.Markup("'>"),
new MarkupTagBlock(
Factory.Markup("</script>").Accepts(AcceptedCharacters.None))));
Factory.Markup("</script>").Accepts(AcceptedCharactersInternal.None))));
}
}
}

View File

@ -25,16 +25,16 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.Code("if(false) {").AsStatement(),
new MarkupBlock(
Factory.Markup(" "),
BlockFactory.MarkupTagBlock("<div>", AcceptedCharacters.None),
BlockFactory.MarkupTagBlock("<div>", AcceptedCharactersInternal.None),
Factory.EmptyHtml(),
new ExpressionBlock(
Factory.CodeTransition(),
Factory.Code("something")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords, acceptTrailingDot: false)
.Accepts(AcceptedCharacters.NonWhiteSpace)),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)),
Factory.Markup("."),
BlockFactory.MarkupTagBlock("</div>", AcceptedCharacters.None),
Factory.Markup(" ").Accepts(AcceptedCharacters.None)),
BlockFactory.MarkupTagBlock("</div>", AcceptedCharactersInternal.None),
Factory.Markup(" ").Accepts(AcceptedCharactersInternal.None)),
Factory.Code("}").AsStatement()),
Factory.Code(" }").AsStatement())));
}
@ -48,7 +48,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
[Fact]
public void ParseDocumentOutputsWhitespaceOnlyContentAsSingleWhitespaceMarkupSpan()
{
SingleSpanDocumentTest(" ", BlockKind.Markup, SpanKind.Markup);
SingleSpanDocumentTest(" ", BlockKindInternal.Markup, SpanKindInternal.Markup);
}
[Fact]
@ -61,7 +61,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.CodeTransition(),
Factory.EmptyCSharp()
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace)),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)),
Factory.EmptyHtml()),
new RazorError(
LegacyResources.ParseError_Unexpected_EndOfFile_At_Start_Of_CodeBlock,
@ -111,26 +111,26 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.EmptyHtml(),
new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor),
Factory.CodeTransition(),
Factory.MetaCode("section").Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
Factory.Span(SpanKind.Code, "Foo", CSharpSymbolType.Identifier)
.Accepts(AcceptedCharacters.NonWhiteSpace)
Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace),
Factory.Span(SpanKindInternal.Code, "Foo", CSharpSymbolType.Identifier)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())),
Factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace),
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharacters.None),
Factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace),
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None),
new MarkupBlock(
Factory.Markup(Environment.NewLine + " "),
BlockFactory.MarkupTagBlock("<html>"),
BlockFactory.MarkupTagBlock("</html>"),
Factory.Markup(Environment.NewLine)),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)),
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
Factory.EmptyHtml()));
}
[Fact]
public void ParseDocumentParsesWholeContentAsOneSpanIfNoSwapCharacterEncountered()
{
SingleSpanDocumentTest("foo baz", BlockKind.Markup, SpanKind.Markup);
SingleSpanDocumentTest("foo baz", BlockKindInternal.Markup, SpanKindInternal.Markup);
}
[Fact]
@ -143,7 +143,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.CodeTransition(),
Factory.Code("bar")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace)),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)),
Factory.Markup(" baz")));
}
@ -157,7 +157,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.CodeTransition(),
Factory.EmptyCSharp()
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace)),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)),
Factory.EmptyHtml()),
new RazorError(
LegacyResources.ParseError_Unexpected_EndOfFile_At_Start_Of_CodeBlock,
@ -175,14 +175,14 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.CodeTransition(),
Factory.Code("bar")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace)),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)),
Factory.EmptyHtml()));
}
[Fact]
public void ParseDocumentDoesNotSwitchToCodeOnEmailAddressInText()
{
SingleSpanDocumentTest("anurse@microsoft.com", BlockKind.Markup, SpanKind.Markup);
SingleSpanDocumentTest("anurse@microsoft.com", BlockKindInternal.Markup, SpanKindInternal.Markup);
}
[Fact]
@ -218,7 +218,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
[Fact]
public void ParseDocumentReturnsOneMarkupSegmentIfNoCodeBlocksEncountered()
{
SingleSpanDocumentTest("Foo Baz<!--Foo-->Bar<!--F> Qux", BlockKind.Markup, SpanKind.Markup);
SingleSpanDocumentTest("Foo Baz<!--Foo-->Bar<!--F> Qux", BlockKindInternal.Markup, SpanKindInternal.Markup);
}
[Fact]
@ -263,7 +263,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.CodeTransition(),
Factory.Code("boz")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords, acceptTrailingDot: false)
.Accepts(AcceptedCharacters.NonWhiteSpace)),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)),
Factory.Markup("'>"),
BlockFactory.MarkupTagBlock("</script>")));
}
@ -276,9 +276,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.EmptyHtml(),
new StatementBlock(
Factory.CodeTransition(),
Factory.MetaCode("{").Accepts(AcceptedCharacters.None),
Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
Factory.Code("\r\n").AsStatement().AutoCompleteWith(null, false),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)),
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup("\r\n").With(SpanChunkGenerator.Null),
BlockFactory.MarkupTagBlock("<html>")));
}
@ -291,9 +291,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.EmptyHtml(),
new StatementBlock(
Factory.CodeTransition(),
Factory.MetaCode("{").Accepts(AcceptedCharacters.None),
Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
Factory.Code("\r\n").AsStatement().AutoCompleteWith(null, false),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)),
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup(" \t\r\n").With(SpanChunkGenerator.Null),
BlockFactory.MarkupTagBlock("<html>")));
}
@ -306,15 +306,15 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.EmptyHtml(),
new StatementBlock(
Factory.CodeTransition(),
Factory.MetaCode("{").Accepts(AcceptedCharacters.None),
Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
new MarkupBlock(
new MarkupTagBlock(
Factory.MarkupTransition("<text>")),
Factory.Markup("Blah").Accepts(AcceptedCharacters.None),
Factory.Markup("Blah").Accepts(AcceptedCharactersInternal.None),
new MarkupTagBlock(
Factory.MarkupTransition("</text>"))),
Factory.Code("\r\n\r\n").AsStatement(),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)),
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
BlockFactory.MarkupTagBlock("<html>")));
}
@ -326,20 +326,20 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.EmptyHtml(),
new StatementBlock(
Factory.CodeTransition(),
Factory.MetaCode("{").Accepts(AcceptedCharacters.None),
Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
new MarkupBlock(
new MarkupTagBlock(
Factory.MarkupTransition("<text>")),
Factory.Markup("Blah").Accepts(AcceptedCharacters.None),
Factory.Markup("Blah").Accepts(AcceptedCharactersInternal.None),
new MarkupTagBlock(
Factory.MarkupTransition("</text>")),
Factory.Markup("\r\n").Accepts(AcceptedCharacters.None)),
Factory.Markup("\r\n").Accepts(AcceptedCharactersInternal.None)),
new MarkupBlock(
new MarkupTagBlock(
Factory.Markup("<input/>").Accepts(AcceptedCharacters.None)),
Factory.Markup("\r\n").Accepts(AcceptedCharacters.None)),
Factory.Markup("<input/>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup("\r\n").Accepts(AcceptedCharactersInternal.None)),
Factory.EmptyCSharp().AsStatement(),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)),
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
BlockFactory.MarkupTagBlock("<html>")));
}
@ -351,22 +351,22 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.EmptyHtml(),
new StatementBlock(
Factory.CodeTransition(),
Factory.MetaCode("{").Accepts(AcceptedCharacters.None),
Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
new MarkupBlock(
new MarkupTagBlock(
Factory.MarkupTransition("<text>")),
Factory.Markup("Blah").Accepts(AcceptedCharacters.None),
Factory.Markup("Blah").Accepts(AcceptedCharactersInternal.None),
new MarkupTagBlock(
Factory.MarkupTransition("</text>")),
Factory.Markup("\r\n").Accepts(AcceptedCharacters.None)),
Factory.Markup("\r\n").Accepts(AcceptedCharactersInternal.None)),
new MarkupBlock(
Factory.MarkupTransition(),
Factory.MetaMarkup(":", HtmlSymbolType.Colon),
Factory.Markup(" Bleh\r\n")
.With(new SpanEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString))
.Accepts(AcceptedCharacters.None)),
.Accepts(AcceptedCharactersInternal.None)),
Factory.EmptyCSharp().AsStatement(),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)),
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
BlockFactory.MarkupTagBlock("<html>")));
}
@ -378,9 +378,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.EmptyHtml(),
new StatementBlock(
Factory.CodeTransition(),
Factory.MetaCode("{").Accepts(AcceptedCharacters.None),
Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
Factory.Code("\r\n").AsStatement().AutoCompleteWith(null, false),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)),
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup("\r\n").With(SpanChunkGenerator.Null),
BlockFactory.MarkupTagBlock("<html>"),
Factory.Markup("\r\n")));
@ -394,9 +394,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.EmptyHtml(),
new StatementBlock(
Factory.CodeTransition(),
Factory.MetaCode("{").Accepts(AcceptedCharacters.None),
Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
Factory.Code("\r\n").AsStatement().AutoCompleteWith(null, false),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)),
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup(" \t"),
BlockFactory.MarkupTagBlock("<html>"),
Factory.Markup("\r\n")));
@ -410,13 +410,13 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.EmptyHtml(),
new StatementBlock(
Factory.CodeTransition(),
Factory.MetaCode("{").Accepts(AcceptedCharacters.None),
Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
Factory.Code("\r\n").AsStatement().AutoCompleteWith(null, false),
new StatementBlock(
Factory.CodeTransition(),
Factory.Code("if(true){\r\n}").AsStatement()),
Factory.Code(" \r\n").AsStatement(),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)),
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup("\r\n").With(SpanChunkGenerator.Null),
BlockFactory.MarkupTagBlock("<html>")));
}
@ -429,7 +429,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.EmptyHtml(),
new StatementBlock(
Factory.CodeTransition(),
Factory.MetaCode("{").Accepts(AcceptedCharacters.None),
Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
Factory.Code("\r\n").AsStatement().AutoCompleteWith(null, false),
new StatementBlock(
Factory.CodeTransition(),
@ -437,10 +437,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new MarkupBlock(
Factory.Markup(" "),
new MarkupTagBlock(
Factory.Markup("<input>").Accepts(AcceptedCharacters.None)),
Factory.Markup(" ").Accepts(AcceptedCharacters.None)),
Factory.Markup("<input>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup(" ").Accepts(AcceptedCharactersInternal.None)),
Factory.EmptyCSharp().AsStatement(),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)),
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
Factory.EmptyHtml()));
}
@ -452,7 +452,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.EmptyHtml(),
new StatementBlock(
Factory.CodeTransition(),
Factory.MetaCode("{").Accepts(AcceptedCharacters.None),
Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
Factory.Code("\r\n").AsStatement().AutoCompleteWith(null, false),
new StatementBlock(
Factory.CodeTransition(),
@ -460,10 +460,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.Code(" \r\n").AsStatement(),
new MarkupBlock(
new MarkupTagBlock(
Factory.Markup("<input>").Accepts(AcceptedCharacters.None)),
Factory.Markup(" \r\n").Accepts(AcceptedCharacters.None)),
Factory.Markup("<input>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup(" \r\n").Accepts(AcceptedCharactersInternal.None)),
Factory.EmptyCSharp().AsStatement(),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)),
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
new MarkupTagBlock(
Factory.Markup("<html>"))));
}
@ -476,13 +476,13 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.EmptyHtml(),
new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor),
Factory.CodeTransition(),
Factory.MetaCode("section").Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
Factory.Span(SpanKind.Code, "Foo", CSharpSymbolType.Identifier)
.Accepts(AcceptedCharacters.NonWhiteSpace)
Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace),
Factory.Span(SpanKindInternal.Code, "Foo", CSharpSymbolType.Identifier)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())),
Factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace),
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharacters.None),
Factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace),
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None),
new MarkupBlock(
Factory.Markup(" "),
BlockFactory.MarkupTagBlock("<script>"),
@ -491,11 +491,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.CodeTransition(),
Factory.Code("boz")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords, acceptTrailingDot: false)
.Accepts(AcceptedCharacters.NonWhiteSpace)),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)),
Factory.Markup("'>"),
BlockFactory.MarkupTagBlock("</script>"),
Factory.Markup(" ")),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)),
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
Factory.EmptyHtml()));
}
@ -515,7 +515,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.CodeTransition(),
factory.Code("DateTime.Now")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace));
.Accepts(AcceptedCharactersInternal.NonWhiteSpace));
return new TheoryData<string, Block>
{
@ -529,8 +529,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new AttributeBlockChunkGenerator("foo", new LocationTagged<string>(" foo='", 5, 0, 5), new LocationTagged<string>("'", 13, 0, 13)),
factory.Markup(" foo='").With(SpanChunkGenerator.Null),
new MarkupBlock(
factory.Markup("@").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(string.Empty, 11, 0, 11), new LocationTagged<string>("@", 11, 0, 11))).Accepts(AcceptedCharacters.None),
factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharacters.None)),
factory.Markup("@").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(string.Empty, 11, 0, 11), new LocationTagged<string>("@", 11, 0, 11))).Accepts(AcceptedCharactersInternal.None),
factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None)),
factory.Markup("'").With(SpanChunkGenerator.Null)),
factory.Markup(" />")))
},
@ -545,8 +545,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.Markup(" foo='").With(SpanChunkGenerator.Null),
factory.Markup("abc").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(string.Empty, 11, 0, 11), new LocationTagged<string>("abc", 11, 0, 11))),
new MarkupBlock(
factory.Markup("@").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(string.Empty, 14, 0, 14), new LocationTagged<string>("@", 14, 0, 14))).Accepts(AcceptedCharacters.None),
factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharacters.None)),
factory.Markup("@").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(string.Empty, 14, 0, 14), new LocationTagged<string>("@", 14, 0, 14))).Accepts(AcceptedCharactersInternal.None),
factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None)),
factory.Markup("'").With(SpanChunkGenerator.Null)),
factory.Markup(" />")))
},
@ -560,8 +560,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new AttributeBlockChunkGenerator("foo", new LocationTagged<string>(" foo='", 5, 0, 5), new LocationTagged<string>("'", 16, 0, 16)),
factory.Markup(" foo='").With(SpanChunkGenerator.Null),
new MarkupBlock(
factory.Markup("@").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(string.Empty, 11, 0, 11), new LocationTagged<string>("@", 11, 0, 11))).Accepts(AcceptedCharacters.None),
factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharacters.None)),
factory.Markup("@").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(string.Empty, 11, 0, 11), new LocationTagged<string>("@", 11, 0, 11))).Accepts(AcceptedCharactersInternal.None),
factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None)),
factory.Markup("def").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(string.Empty, 13, 0, 13), new LocationTagged<string>("def", 13, 0, 13))),
factory.Markup("'").With(SpanChunkGenerator.Null)),
factory.Markup(" />")))
@ -577,8 +577,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.Markup(" foo='").With(SpanChunkGenerator.Null),
factory.Markup("abc").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(string.Empty, 11, 0, 11), new LocationTagged<string>("abc", 11, 0, 11))),
new MarkupBlock(
factory.Markup(" @").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(" ", 14, 0, 14), new LocationTagged<string>("@", 15, 0, 15))).Accepts(AcceptedCharacters.None),
factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharacters.None)),
factory.Markup(" @").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(" ", 14, 0, 14), new LocationTagged<string>("@", 15, 0, 15))).Accepts(AcceptedCharactersInternal.None),
factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None)),
factory.Markup(" def").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(" ", 17, 0, 17), new LocationTagged<string>("def", 18, 0, 18))),
factory.Markup("'").With(SpanChunkGenerator.Null)),
factory.Markup(" />")))
@ -593,8 +593,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new AttributeBlockChunkGenerator("foo", new LocationTagged<string>(" foo='", 5, 0, 5), new LocationTagged<string>("'", 26, 0, 26)),
factory.Markup(" foo='").With(SpanChunkGenerator.Null),
new MarkupBlock(
factory.Markup("@").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(string.Empty, 11, 0, 11), new LocationTagged<string>("@", 11, 0, 11))).Accepts(AcceptedCharacters.None),
factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharacters.None)),
factory.Markup("@").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(string.Empty, 11, 0, 11), new LocationTagged<string>("@", 11, 0, 11))).Accepts(AcceptedCharactersInternal.None),
factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None)),
new MarkupBlock(
new DynamicAttributeBlockChunkGenerator(new LocationTagged<string>(string.Empty, 13, 0, 13), 13, 0, 13),
factory.EmptyHtml().With(SpanChunkGenerator.Null),
@ -614,8 +614,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new DynamicAttributeBlockChunkGenerator(new LocationTagged<string>(string.Empty, 11, 0, 11), 11, 0, 11),
datetimeBlock),
new MarkupBlock(
factory.Markup(" @").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(" ", 24, 0, 24), new LocationTagged<string>("@", 25, 0, 25))).Accepts(AcceptedCharacters.None),
factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharacters.None)),
factory.Markup(" @").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(" ", 24, 0, 24), new LocationTagged<string>("@", 25, 0, 25))).Accepts(AcceptedCharactersInternal.None),
factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None)),
factory.Markup("'").With(SpanChunkGenerator.Null)),
factory.Markup(" />")))
},
@ -631,12 +631,12 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new DynamicAttributeBlockChunkGenerator(new LocationTagged<string>(string.Empty, 11, 0, 11), 11, 0, 11),
new ExpressionBlock(
factory.CodeTransition(),
factory.MetaCode("(").With(SpanChunkGenerator.Null).Accepts(AcceptedCharacters.None),
factory.MetaCode("(").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None),
factory.Code("2+3").AsExpression(),
factory.MetaCode(")").With(SpanChunkGenerator.Null).Accepts(AcceptedCharacters.None))),
factory.MetaCode(")").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None))),
new MarkupBlock(
factory.Markup("@").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(string.Empty, 17, 0, 17), new LocationTagged<string>("@", 17, 0, 17))).Accepts(AcceptedCharacters.None),
factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharacters.None)),
factory.Markup("@").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(string.Empty, 17, 0, 17), new LocationTagged<string>("@", 17, 0, 17))).Accepts(AcceptedCharactersInternal.None),
factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None)),
new MarkupBlock(
new DynamicAttributeBlockChunkGenerator(new LocationTagged<string>(string.Empty, 19, 0, 19), 19, 0, 19),
factory.EmptyHtml().With(SpanChunkGenerator.Null),
@ -653,16 +653,16 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new AttributeBlockChunkGenerator("foo", new LocationTagged<string>(" foo='", 5, 0, 5), new LocationTagged<string>("'", 19, 0, 19)),
factory.Markup(" foo='").With(SpanChunkGenerator.Null),
new MarkupBlock(
factory.Markup("@").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(string.Empty, 11, 0, 11), new LocationTagged<string>("@", 11, 0, 11))).Accepts(AcceptedCharacters.None),
factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharacters.None)),
factory.Markup("@").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(string.Empty, 11, 0, 11), new LocationTagged<string>("@", 11, 0, 11))).Accepts(AcceptedCharactersInternal.None),
factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None)),
new MarkupBlock(
new DynamicAttributeBlockChunkGenerator(new LocationTagged<string>(string.Empty, 13, 0, 13), 13, 0, 13),
factory.EmptyHtml().With(SpanChunkGenerator.Null),
new ExpressionBlock(
factory.CodeTransition(),
factory.MetaCode("(").With(SpanChunkGenerator.Null).Accepts(AcceptedCharacters.None),
factory.MetaCode("(").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None),
factory.Code("2+3").AsExpression(),
factory.MetaCode(")").With(SpanChunkGenerator.Null).Accepts(AcceptedCharacters.None))),
factory.MetaCode(")").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None))),
factory.Markup("'").With(SpanChunkGenerator.Null)),
factory.Markup(" />")))
},
@ -678,8 +678,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new DynamicAttributeBlockChunkGenerator(new LocationTagged<string>(string.Empty, 11, 0, 11), 11, 0, 11),
datetimeBlock),
new MarkupBlock(
factory.Markup("@").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(string.Empty, 24, 0, 24), new LocationTagged<string>("@", 24, 0, 24))).Accepts(AcceptedCharacters.None),
factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharacters.None)),
factory.Markup("@").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(string.Empty, 24, 0, 24), new LocationTagged<string>("@", 24, 0, 24))).Accepts(AcceptedCharactersInternal.None),
factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None)),
factory.Markup("'").With(SpanChunkGenerator.Null)),
factory.Markup(" />")))
},
@ -694,8 +694,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.Markup(" foo='").With(SpanChunkGenerator.Null),
factory.Markup("abc@def.com").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(string.Empty, 11, 0, 11), new LocationTagged<string>("abc@def.com", 11, 0, 11))),
new MarkupBlock(
factory.Markup(" @").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(" ", 22, 0, 22), new LocationTagged<string>("@", 23, 0, 23))).Accepts(AcceptedCharacters.None),
factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharacters.None)),
factory.Markup(" @").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(" ", 22, 0, 22), new LocationTagged<string>("@", 23, 0, 23))).Accepts(AcceptedCharactersInternal.None),
factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None)),
factory.Markup("'").With(SpanChunkGenerator.Null)),
factory.Markup(" />")))
},
@ -709,12 +709,12 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.Markup(" foo='").With(SpanChunkGenerator.Null),
factory.Markup("abc").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(string.Empty, 11, 0, 11), new LocationTagged<string>("abc", 11, 0, 11))),
new MarkupBlock(
factory.Markup("@").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(string.Empty, 14, 0, 14), new LocationTagged<string>("@", 14, 0, 14))).Accepts(AcceptedCharacters.None),
factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharacters.None)),
factory.Markup("@").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(string.Empty, 14, 0, 14), new LocationTagged<string>("@", 14, 0, 14))).Accepts(AcceptedCharactersInternal.None),
factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None)),
factory.Markup("def.com").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(string.Empty, 16, 0, 16), new LocationTagged<string>("def.com", 16, 0, 16))),
new MarkupBlock(
factory.Markup(" @").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(" ", 23, 0, 23), new LocationTagged<string>("@", 24, 0, 24))).Accepts(AcceptedCharacters.None),
factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharacters.None)),
factory.Markup(" @").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(" ", 23, 0, 23), new LocationTagged<string>("@", 24, 0, 24))).Accepts(AcceptedCharactersInternal.None),
factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None)),
factory.Markup("'").With(SpanChunkGenerator.Null)),
factory.Markup(" />")))
},
@ -728,8 +728,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new AttributeBlockChunkGenerator("foo", new LocationTagged<string>(" foo='", 5, 0, 5), new LocationTagged<string>(string.Empty, 13, 0, 13)),
factory.Markup(" foo='").With(SpanChunkGenerator.Null),
new MarkupBlock(
factory.Markup("@").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(string.Empty, 11, 0, 11), new LocationTagged<string>("@", 11, 0, 11))).Accepts(AcceptedCharacters.None),
factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharacters.None)))),
factory.Markup("@").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(string.Empty, 11, 0, 11), new LocationTagged<string>("@", 11, 0, 11))).Accepts(AcceptedCharactersInternal.None),
factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None)))),
factory.EmptyHtml())
},
{
@ -743,8 +743,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.Markup(" foo=\"").With(SpanChunkGenerator.Null),
factory.Markup(@"/^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(string.Empty, 11, 0, 11), new LocationTagged<string>(@"/^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+", 11, 0, 11))),
new MarkupBlock(
factory.Markup("@").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(string.Empty, 43, 0, 43), new LocationTagged<string>("@", 43, 0, 43))).Accepts(AcceptedCharacters.None),
factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharacters.None)),
factory.Markup("@").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(string.Empty, 43, 0, 43), new LocationTagged<string>("@", 43, 0, 43))).Accepts(AcceptedCharactersInternal.None),
factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None)),
factory.Markup(@"[a-z0-9]([a-z0-9-]*[a-z0-9])?\.([a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(string.Empty, 45, 0, 45), new LocationTagged<string>(@"[a-z0-9]([a-z0-9-]*[a-z0-9])?\.([a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i", 45, 0, 45))),
factory.Markup("\"").With(SpanChunkGenerator.Null)),
factory.Markup(" />")))
@ -777,13 +777,13 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new DynamicAttributeBlockChunkGenerator(new LocationTagged<string>(string.Empty, 11, 0, 11), 11, 0, 11),
new ExpressionBlock(
Factory.CodeTransition(),
Factory.EmptyCSharp().AsImplicitExpression(CSharpCodeParser.DefaultKeywords).Accepts(AcceptedCharacters.NonWhiteSpace))),
Factory.EmptyCSharp().AsImplicitExpression(CSharpCodeParser.DefaultKeywords).Accepts(AcceptedCharactersInternal.NonWhiteSpace))),
new MarkupBlock(
new DynamicAttributeBlockChunkGenerator(new LocationTagged<string>(" ", 12, 0, 12), 12, 0, 12),
Factory.Markup(" ").With(SpanChunkGenerator.Null),
new ExpressionBlock(
Factory.CodeTransition().Accepts(AcceptedCharacters.None).With(SpanChunkGenerator.Null),
Factory.EmptyCSharp().AsImplicitExpression(CSharpCodeParser.DefaultKeywords).Accepts(AcceptedCharacters.NonWhiteSpace))),
Factory.CodeTransition().Accepts(AcceptedCharactersInternal.None).With(SpanChunkGenerator.Null),
Factory.EmptyCSharp().AsImplicitExpression(CSharpCodeParser.DefaultKeywords).Accepts(AcceptedCharactersInternal.NonWhiteSpace))),
Factory.Markup("'").With(SpanChunkGenerator.Null)),
Factory.Markup(" />")));
var expectedErrors = new RazorError[]

View File

@ -13,10 +13,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ParseBlockTest("<1-foo+bar>foo</1-foo+bar>",
new MarkupBlock(
new MarkupTagBlock(
Factory.Markup("<1-foo+bar>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<1-foo+bar>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup("foo"),
new MarkupTagBlock(
Factory.Markup("</1-foo+bar>").Accepts(AcceptedCharacters.None))));
Factory.Markup("</1-foo+bar>").Accepts(AcceptedCharactersInternal.None))));
}
[Fact]
@ -25,7 +25,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ParseBlockTest("<text foo bar></text>",
new MarkupBlock(
new MarkupTagBlock(
Factory.MarkupTransition("<text foo bar>").Accepts(AcceptedCharacters.Any)),
Factory.MarkupTransition("<text foo bar>").Accepts(AcceptedCharactersInternal.Any)),
new MarkupTagBlock(
Factory.MarkupTransition("</text>"))),
new RazorError(
@ -42,7 +42,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new MarkupTagBlock(
Factory.MarkupTransition("<text>")),
new MarkupTagBlock(
Factory.MarkupTransition("</text foo bar>").Accepts(AcceptedCharacters.Any))),
Factory.MarkupTransition("</text foo bar>").Accepts(AcceptedCharactersInternal.Any))),
new RazorError(
LegacyResources.ParseError_TextTagCannotContainAttributes,
new SourceLocation(8, 0, 8),
@ -66,8 +66,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ParseBlockTest("</foo> bar baz",
new MarkupBlock(
new MarkupTagBlock(
Factory.Markup("</foo>").Accepts(AcceptedCharacters.None)),
Factory.Markup(" ").Accepts(AcceptedCharacters.None)),
Factory.Markup("</foo>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup(" ").Accepts(AcceptedCharactersInternal.None)),
new RazorError(
LegacyResources.FormatParseError_UnexpectedEndTag("foo"),
new SourceLocation(2, 0, 2),
@ -80,11 +80,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ParseBlockTest("<p><foo></bar>",
new MarkupBlock(
new MarkupTagBlock(
Factory.Markup("<p>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<p>").Accepts(AcceptedCharactersInternal.None)),
new MarkupTagBlock(
Factory.Markup("<foo>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<foo>").Accepts(AcceptedCharactersInternal.None)),
new MarkupTagBlock(
Factory.Markup("</bar>").Accepts(AcceptedCharacters.None))),
Factory.Markup("</bar>").Accepts(AcceptedCharactersInternal.None))),
new RazorError(
LegacyResources.FormatParseError_MissingEndTag("p"),
new SourceLocation(1, 0, 1),
@ -97,7 +97,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ParseBlockTest("<foo>blah blah blah blah blah",
new MarkupBlock(
new MarkupTagBlock(
Factory.Markup("<foo>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<foo>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup("blah blah blah blah blah")),
new RazorError(
LegacyResources.FormatParseError_MissingEndTag("foo"),

View File

@ -7,7 +7,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
internal class HtmlParserTestUtils
{
public static void RunSingleAtEscapeTest(Action<string, Block> testMethod, AcceptedCharacters lastSpanAcceptedCharacters = AcceptedCharacters.None)
public static void RunSingleAtEscapeTest(Action<string, Block> testMethod, AcceptedCharactersInternal lastSpanAcceptedCharacters = AcceptedCharactersInternal.None)
{
var factory = new SpanFactory();
testMethod("<foo>@@bar</foo>",
@ -20,7 +20,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.Markup("</foo>").Accepts(lastSpanAcceptedCharacters))));
}
public static void RunMultiAtEscapeTest(Action<string, Block> testMethod, AcceptedCharacters lastSpanAcceptedCharacters = AcceptedCharacters.None)
public static void RunMultiAtEscapeTest(Action<string, Block> testMethod, AcceptedCharactersInternal lastSpanAcceptedCharacters = AcceptedCharactersInternal.None)
{
var factory = new SpanFactory();
testMethod("<foo>@@@@@bar</foo>",
@ -35,7 +35,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.CodeTransition(),
factory.Code("bar")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace)),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)),
new MarkupTagBlock(
factory.Markup("</foo>").Accepts(lastSpanAcceptedCharacters))));
}

View File

@ -36,9 +36,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
ParseBlockTest("<p></> Bar",
new MarkupBlock(
BlockFactory.MarkupTagBlock("<p>", AcceptedCharacters.None),
BlockFactory.MarkupTagBlock("</>", AcceptedCharacters.None),
Factory.Markup(" ").Accepts(AcceptedCharacters.None)),
BlockFactory.MarkupTagBlock("<p>", AcceptedCharactersInternal.None),
BlockFactory.MarkupTagBlock("</>", AcceptedCharactersInternal.None),
Factory.Markup(" ").Accepts(AcceptedCharactersInternal.None)),
new RazorError(
LegacyResources.FormatParseError_MissingEndTag("p"),
new SourceLocation(1, 0, 1),
@ -52,9 +52,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
// the contents of an HTML tag.
ParseBlockTest("<></> Bar",
new MarkupBlock(
BlockFactory.MarkupTagBlock("<>", AcceptedCharacters.None),
BlockFactory.MarkupTagBlock("</>", AcceptedCharacters.None),
Factory.Markup(" ").Accepts(AcceptedCharacters.None)));
BlockFactory.MarkupTagBlock("<>", AcceptedCharactersInternal.None),
BlockFactory.MarkupTagBlock("</>", AcceptedCharactersInternal.None),
Factory.Markup(" ").Accepts(AcceptedCharactersInternal.None)));
}
[Fact]
@ -62,8 +62,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
ParseBlockTest("<!--Foo--> Bar",
new MarkupBlock(
Factory.Markup("<!--Foo-->").Accepts(AcceptedCharacters.None),
Factory.Markup(" ").Accepts(AcceptedCharacters.None)));
Factory.Markup("<!--Foo-->").Accepts(AcceptedCharactersInternal.None),
Factory.Markup(" ").Accepts(AcceptedCharactersInternal.None)));
}
[Fact]
@ -71,8 +71,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
ParseBlockTest("<!DOCTYPE html> foo",
new MarkupBlock(
Factory.Markup("<!DOCTYPE html>").Accepts(AcceptedCharacters.None),
Factory.Markup(" ").Accepts(AcceptedCharacters.None)));
Factory.Markup("<!DOCTYPE html>").Accepts(AcceptedCharactersInternal.None),
Factory.Markup(" ").Accepts(AcceptedCharactersInternal.None)));
}
[Fact]
@ -80,8 +80,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
ParseBlockTest("<?xml version=\"1.0\" ?> foo",
new MarkupBlock(
Factory.Markup("<?xml version=\"1.0\" ?>").Accepts(AcceptedCharacters.None),
Factory.Markup(" ").Accepts(AcceptedCharacters.None)));
Factory.Markup("<?xml version=\"1.0\" ?>").Accepts(AcceptedCharactersInternal.None),
Factory.Markup(" ").Accepts(AcceptedCharactersInternal.None)));
}
[Fact]
@ -89,10 +89,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
ParseBlockTest("<p>Foo</p> Bar",
new MarkupBlock(
BlockFactory.MarkupTagBlock("<p>", AcceptedCharacters.None),
BlockFactory.MarkupTagBlock("<p>", AcceptedCharactersInternal.None),
Factory.Markup("Foo"),
BlockFactory.MarkupTagBlock("</p>", AcceptedCharacters.None),
Factory.Markup(" ").Accepts(AcceptedCharacters.None)));
BlockFactory.MarkupTagBlock("</p>", AcceptedCharactersInternal.None),
Factory.Markup(" ").Accepts(AcceptedCharactersInternal.None)));
}
[Fact]
@ -102,7 +102,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new MarkupBlock(
new MarkupTagBlock(
Factory.MarkupTransition("<text>")),
Factory.Markup("Foo").Accepts(AcceptedCharacters.None),
Factory.Markup("Foo").Accepts(AcceptedCharactersInternal.None),
new MarkupTagBlock(
Factory.MarkupTransition("</text>"))));
}
@ -112,8 +112,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
ParseBlockTest("<![CDATA[Foo]]> Bar",
new MarkupBlock(
Factory.Markup("<![CDATA[Foo]]>").Accepts(AcceptedCharacters.None),
Factory.Markup(" ").Accepts(AcceptedCharacters.None)));
Factory.Markup("<![CDATA[Foo]]>").Accepts(AcceptedCharactersInternal.None),
Factory.Markup(" ").Accepts(AcceptedCharactersInternal.None)));
}
[Fact]
@ -172,7 +172,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
ParseBlockTest("<" + tagName + ">foo",
new MarkupBlock(
BlockFactory.MarkupTagBlock("<" + tagName + ">", AcceptedCharacters.None)));
BlockFactory.MarkupTagBlock("<" + tagName + ">", AcceptedCharactersInternal.None)));
}
[Theory]
@ -181,7 +181,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
ParseBlockTest("<" + tagName + "><other>foo",
new MarkupBlock(
BlockFactory.MarkupTagBlock("<" + tagName + ">", AcceptedCharacters.None)));
BlockFactory.MarkupTagBlock("<" + tagName + ">", AcceptedCharactersInternal.None)));
}
[Theory]
@ -190,9 +190,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
ParseBlockTest("<" + tagName + "> </" + tagName + ">foo",
new MarkupBlock(
BlockFactory.MarkupTagBlock("<" + tagName + ">", AcceptedCharacters.None),
BlockFactory.MarkupTagBlock("<" + tagName + ">", AcceptedCharactersInternal.None),
Factory.Markup(" "),
BlockFactory.MarkupTagBlock("</" + tagName + ">", AcceptedCharacters.None)));
BlockFactory.MarkupTagBlock("</" + tagName + ">", AcceptedCharactersInternal.None)));
}
[Theory]
@ -201,7 +201,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
ParseBlockTest("<" + tagName + "></" + tagName,
new MarkupBlock(
BlockFactory.MarkupTagBlock("<" + tagName + ">", AcceptedCharacters.None),
BlockFactory.MarkupTagBlock("<" + tagName + ">", AcceptedCharactersInternal.None),
BlockFactory.MarkupTagBlock("</" + tagName)));
}
}

View File

@ -15,13 +15,13 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ParseBlockTest("<p>foo#@i</p>",
new MarkupBlock(
new MarkupTagBlock(
Factory.Markup("<p>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<p>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup("foo#"),
new ExpressionBlock(
Factory.CodeTransition(),
Factory.Code("i").AsImplicitExpression(CSharpCodeParser.DefaultKeywords).Accepts(AcceptedCharacters.NonWhiteSpace)),
Factory.Code("i").AsImplicitExpression(CSharpCodeParser.DefaultKeywords).Accepts(AcceptedCharactersInternal.NonWhiteSpace)),
new MarkupTagBlock(
Factory.Markup("</p>").Accepts(AcceptedCharacters.None))));
Factory.Markup("</p>").Accepts(AcceptedCharactersInternal.None))));
}
[Fact]
@ -35,8 +35,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.CodeTransition(),
Factory.Code("bar")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace)),
Factory.Markup(" />").Accepts(AcceptedCharacters.None))));
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)),
Factory.Markup(" />").Accepts(AcceptedCharactersInternal.None))));
}
[Fact]
@ -53,9 +53,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.CodeTransition(),
Factory.Code("baz")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace))),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace))),
Factory.Markup("\"").With(SpanChunkGenerator.Null)),
Factory.Markup(" />").Accepts(AcceptedCharacters.None))));
Factory.Markup(" />").Accepts(AcceptedCharactersInternal.None))));
}
[Fact]
@ -64,25 +64,25 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ParseBlockTest("<foo>@bar<baz>@boz</baz></foo>",
new MarkupBlock(
new MarkupTagBlock(
Factory.Markup("<foo>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<foo>").Accepts(AcceptedCharactersInternal.None)),
Factory.EmptyHtml(),
new ExpressionBlock(
Factory.CodeTransition(),
Factory.Code("bar")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace)),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)),
new MarkupTagBlock(
Factory.Markup("<baz>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<baz>").Accepts(AcceptedCharactersInternal.None)),
Factory.EmptyHtml(),
new ExpressionBlock(
Factory.CodeTransition(),
Factory.Code("boz")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace)),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)),
new MarkupTagBlock(
Factory.Markup("</baz>").Accepts(AcceptedCharacters.None)),
Factory.Markup("</baz>").Accepts(AcceptedCharactersInternal.None)),
new MarkupTagBlock(
Factory.Markup("</foo>").Accepts(AcceptedCharacters.None))));
Factory.Markup("</foo>").Accepts(AcceptedCharactersInternal.None))));
}
[Fact]
@ -99,9 +99,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.CodeTransition(),
Factory.Code("Bar")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace)),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)),
Factory.Markup(" Baz" + Environment.NewLine)
.Accepts(AcceptedCharacters.None)));
.Accepts(AcceptedCharactersInternal.None)));
}
[Fact]
@ -110,16 +110,16 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ParseBlockTest("<foo><!-- @foo --></foo>",
new MarkupBlock(
new MarkupTagBlock(
Factory.Markup("<foo>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<foo>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup("<!-- "),
new ExpressionBlock(
Factory.CodeTransition(),
Factory.Code("foo")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace)),
Factory.Markup(" -->").Accepts(AcceptedCharacters.None),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)),
Factory.Markup(" -->").Accepts(AcceptedCharactersInternal.None),
new MarkupTagBlock(
Factory.Markup("</foo>").Accepts(AcceptedCharacters.None))));
Factory.Markup("</foo>").Accepts(AcceptedCharactersInternal.None))));
}
[Fact]
@ -128,16 +128,16 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ParseBlockTest("<foo><!DOCTYPE foo @bar baz></foo>",
new MarkupBlock(
new MarkupTagBlock(
Factory.Markup("<foo>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<foo>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup("<!DOCTYPE foo "),
new ExpressionBlock(
Factory.CodeTransition(),
Factory.Code("bar")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace)),
Factory.Markup(" baz>").Accepts(AcceptedCharacters.None),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)),
Factory.Markup(" baz>").Accepts(AcceptedCharactersInternal.None),
new MarkupTagBlock(
Factory.Markup("</foo>").Accepts(AcceptedCharacters.None))));
Factory.Markup("</foo>").Accepts(AcceptedCharactersInternal.None))));
}
[Fact]
@ -146,16 +146,16 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ParseBlockTest("<foo><![CDATA[ foo @bar baz]]></foo>",
new MarkupBlock(
new MarkupTagBlock(
Factory.Markup("<foo>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<foo>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup("<![CDATA[ foo "),
new ExpressionBlock(
Factory.CodeTransition(),
Factory.Code("bar")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace)),
Factory.Markup(" baz]]>").Accepts(AcceptedCharacters.None),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)),
Factory.Markup(" baz]]>").Accepts(AcceptedCharactersInternal.None),
new MarkupTagBlock(
Factory.Markup("</foo>").Accepts(AcceptedCharacters.None))));
Factory.Markup("</foo>").Accepts(AcceptedCharactersInternal.None))));
}
[Fact]
@ -164,16 +164,16 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ParseBlockTest("<foo><?xml foo @bar baz?></foo>",
new MarkupBlock(
new MarkupTagBlock(
Factory.Markup("<foo>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<foo>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup("<?xml foo "),
new ExpressionBlock(
Factory.CodeTransition(),
Factory.Code("bar")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace)),
Factory.Markup(" baz?>").Accepts(AcceptedCharacters.None),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)),
Factory.Markup(" baz?>").Accepts(AcceptedCharactersInternal.None),
new MarkupTagBlock(
Factory.Markup("</foo>").Accepts(AcceptedCharacters.None))));
Factory.Markup("</foo>").Accepts(AcceptedCharactersInternal.None))));
}
[Fact]
@ -182,10 +182,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ParseBlockTest("<foo>anurse@microsoft.com</foo>",
new MarkupBlock(
new MarkupTagBlock(
Factory.Markup("<foo>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<foo>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup("anurse@microsoft.com"),
new MarkupTagBlock(
Factory.Markup("</foo>").Accepts(AcceptedCharacters.None))));
Factory.Markup("</foo>").Accepts(AcceptedCharactersInternal.None))));
}
[Fact]
@ -200,10 +200,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.Markup("mailto:anurse@microsoft.com")
.With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(string.Empty, 9, 0, 9), new LocationTagged<string>("mailto:anurse@microsoft.com", 9, 0, 9))),
Factory.Markup("\"").With(SpanChunkGenerator.Null)),
Factory.Markup(">").Accepts(AcceptedCharacters.None)),
Factory.Markup(">").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup("Email me"),
new MarkupTagBlock(
Factory.Markup("</a>").Accepts(AcceptedCharacters.None))));
Factory.Markup("</a>").Accepts(AcceptedCharactersInternal.None))));
}
[Fact]
@ -217,7 +217,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new MarkupBlock(
Factory.Markup(" "),
new MarkupTagBlock(
Factory.Markup("<ul>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<ul>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup(Environment.NewLine),
new StatementBlock(
Factory.Code(" ").AsStatement(),
@ -226,20 +226,20 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new MarkupBlock(
Factory.Markup(" "),
new MarkupTagBlock(
Factory.Markup("<li>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<li>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup("Product: "),
new ExpressionBlock(
Factory.CodeTransition(),
Factory.Code("p.Name")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace)),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)),
new MarkupTagBlock(
Factory.Markup("</li>").Accepts(AcceptedCharacters.None)),
Factory.Markup(Environment.NewLine).Accepts(AcceptedCharacters.None)),
Factory.Code(" }" + Environment.NewLine).AsStatement().Accepts(AcceptedCharacters.None)),
Factory.Markup("</li>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup(Environment.NewLine).Accepts(AcceptedCharactersInternal.None)),
Factory.Code(" }" + Environment.NewLine).AsStatement().Accepts(AcceptedCharactersInternal.None)),
Factory.Markup(" "),
new MarkupTagBlock(
Factory.Markup("</ul>").Accepts(AcceptedCharacters.None))));
Factory.Markup("</ul>").Accepts(AcceptedCharactersInternal.None))));
}
[Fact]
@ -262,17 +262,17 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new MarkupBlock(
Factory.Markup(" "),
new MarkupTagBlock(
Factory.Markup("<li>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<li>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup("Product: "),
new ExpressionBlock(
Factory.CodeTransition(),
Factory.Code("p.Name")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace)),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)),
new MarkupTagBlock(
Factory.Markup("</li>").Accepts(AcceptedCharacters.None)),
Factory.Markup(Environment.NewLine).Accepts(AcceptedCharacters.None)),
Factory.Code(" }" + Environment.NewLine).AsStatement().Accepts(AcceptedCharacters.None)),
Factory.Markup("</li>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup(Environment.NewLine).Accepts(AcceptedCharactersInternal.None)),
Factory.Code(" }" + Environment.NewLine).AsStatement().Accepts(AcceptedCharactersInternal.None)),
Factory.Markup(" "),
new MarkupTagBlock(
Factory.Markup("</ul>"))));
@ -293,13 +293,13 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.EmptyHtml(),
new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor),
Factory.CodeTransition(),
Factory.MetaCode("section").Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
Factory.Span(SpanKind.Code, "foo", CSharpSymbolType.Identifier)
.Accepts(AcceptedCharacters.NonWhiteSpace)
Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace),
Factory.Span(SpanKindInternal.Code, "foo", CSharpSymbolType.Identifier)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())),
Factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace),
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharacters.None),
Factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace),
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None),
new MarkupBlock(
Factory.Markup(Environment.NewLine + " "),
new MarkupTagBlock(
@ -312,22 +312,22 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new MarkupBlock(
Factory.Markup(" "),
new MarkupTagBlock(
Factory.Markup("<li>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<li>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup("Product: "),
new ExpressionBlock(
Factory.CodeTransition(),
Factory.Code("p.Name")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace)),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)),
new MarkupTagBlock(
Factory.Markup("</li>").Accepts(AcceptedCharacters.None)),
Factory.Markup(Environment.NewLine).Accepts(AcceptedCharacters.None)),
Factory.Code(" }" + Environment.NewLine).AsStatement().Accepts(AcceptedCharacters.None)),
Factory.Markup("</li>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup(Environment.NewLine).Accepts(AcceptedCharactersInternal.None)),
Factory.Code(" }" + Environment.NewLine).AsStatement().Accepts(AcceptedCharactersInternal.None)),
Factory.Markup(" "),
new MarkupTagBlock(
Factory.Markup("</ul>")),
Factory.Markup(Environment.NewLine)),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)),
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
Factory.EmptyHtml()));
}
@ -342,24 +342,24 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new MarkupBlock(
Factory.Markup(" "),
new MarkupTagBlock(
Factory.Markup("<ul>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<ul>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup(Environment.NewLine + " "),
new StatementBlock(
Factory.CodeTransition(),
Factory.Code($"foreach(var p in Products) {{{Environment.NewLine} ").AsStatement(),
new MarkupBlock(
new MarkupTagBlock(
Factory.Markup("<li>").Accepts(AcceptedCharacters.None)),
Factory.Markup("<li>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup("Product: "),
new ExpressionBlock(
Factory.CodeTransition(),
Factory.Code("p.Name").AsImplicitExpression(CSharpCodeParser.DefaultKeywords).Accepts(AcceptedCharacters.NonWhiteSpace)),
Factory.Code("p.Name").AsImplicitExpression(CSharpCodeParser.DefaultKeywords).Accepts(AcceptedCharactersInternal.NonWhiteSpace)),
new MarkupTagBlock(
Factory.Markup("</li>").Accepts(AcceptedCharacters.None))),
Factory.Code(Environment.NewLine + " }").AsStatement().Accepts(AcceptedCharacters.None)),
Factory.Markup("</li>").Accepts(AcceptedCharactersInternal.None))),
Factory.Code(Environment.NewLine + " }").AsStatement().Accepts(AcceptedCharactersInternal.None)),
Factory.Markup(Environment.NewLine + " "),
new MarkupTagBlock(
Factory.Markup("</ul>").Accepts(AcceptedCharacters.None))),
Factory.Markup("</ul>").Accepts(AcceptedCharactersInternal.None))),
designTime: true);
}
@ -379,13 +379,13 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
[Fact]
public void ParseDocumentTreatsTwoAtSignsAsEscapeSequence()
{
HtmlParserTestUtils.RunSingleAtEscapeTest(ParseDocumentTest, lastSpanAcceptedCharacters: AcceptedCharacters.Any);
HtmlParserTestUtils.RunSingleAtEscapeTest(ParseDocumentTest, lastSpanAcceptedCharacters: AcceptedCharactersInternal.Any);
}
[Fact]
public void ParseDocumentTreatsPairsOfAtSignsAsEscapeSequence()
{
HtmlParserTestUtils.RunMultiAtEscapeTest(ParseDocumentTest, lastSpanAcceptedCharacters: AcceptedCharacters.Any);
HtmlParserTestUtils.RunMultiAtEscapeTest(ParseDocumentTest, lastSpanAcceptedCharacters: AcceptedCharactersInternal.Any);
}
[Fact]
@ -396,13 +396,13 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.EmptyHtml(),
new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor),
Factory.CodeTransition(),
Factory.MetaCode("section").Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
Factory.Span(SpanKind.Code, "Foo", CSharpSymbolType.Identifier)
.Accepts(AcceptedCharacters.NonWhiteSpace)
Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace),
Factory.Span(SpanKindInternal.Code, "Foo", CSharpSymbolType.Identifier)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())),
Factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace),
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharacters.None),
Factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace),
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None),
new MarkupBlock(
Factory.Markup(" "),
new MarkupTagBlock(
@ -412,7 +412,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new MarkupTagBlock(
Factory.Markup("</foo>")),
Factory.Markup(" ")),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)),
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
Factory.EmptyHtml()));
}
@ -424,13 +424,13 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.EmptyHtml(),
new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor),
Factory.CodeTransition(),
Factory.MetaCode("section").Accepts(AcceptedCharacters.None),
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
Factory.Span(SpanKind.Code, "Foo", CSharpSymbolType.Identifier)
.Accepts(AcceptedCharacters.NonWhiteSpace)
Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace),
Factory.Span(SpanKindInternal.Code, "Foo", CSharpSymbolType.Identifier)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())),
Factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace),
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharacters.None),
Factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace),
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None),
new MarkupBlock(
Factory.Markup(" "),
new MarkupTagBlock(
@ -443,11 +443,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.CodeTransition(),
Factory.Code("bar")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace)),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)),
new MarkupTagBlock(
Factory.Markup("</foo>")),
Factory.Markup(" ")),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)),
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
Factory.EmptyHtml()));
}
}

View File

@ -11,7 +11,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
return ParseHtmlBlock(document, designTime);
}
internal virtual void SingleSpanDocumentTest(string document, BlockKind blockKind, SpanKind spanType)
internal virtual void SingleSpanDocumentTest(string document, BlockKindInternal blockKind, SpanKindInternal spanType)
{
var b = CreateSimpleBlockAndSpan(document, blockKind, spanType);
ParseDocumentTest(document, b);

View File

@ -190,38 +190,38 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
}
}
internal virtual void SingleSpanBlockTest(string document, BlockKind blockKind, SpanKind spanType, AcceptedCharacters acceptedCharacters = AcceptedCharacters.Any)
internal virtual void SingleSpanBlockTest(string document, BlockKindInternal blockKind, SpanKindInternal spanType, AcceptedCharactersInternal acceptedCharacters = AcceptedCharactersInternal.Any)
{
SingleSpanBlockTest(document, blockKind, spanType, acceptedCharacters, expectedError: null);
}
internal virtual void SingleSpanBlockTest(string document, string spanContent, BlockKind blockKind, SpanKind spanType, AcceptedCharacters acceptedCharacters = AcceptedCharacters.Any)
internal virtual void SingleSpanBlockTest(string document, string spanContent, BlockKindInternal blockKind, SpanKindInternal spanType, AcceptedCharactersInternal acceptedCharacters = AcceptedCharactersInternal.Any)
{
SingleSpanBlockTest(document, spanContent, blockKind, spanType, acceptedCharacters, expectedErrors: null);
}
internal virtual void SingleSpanBlockTest(string document, BlockKind blockKind, SpanKind spanType, params RazorError[] expectedError)
internal virtual void SingleSpanBlockTest(string document, BlockKindInternal blockKind, SpanKindInternal spanType, params RazorError[] expectedError)
{
SingleSpanBlockTest(document, document, blockKind, spanType, expectedError);
}
internal virtual void SingleSpanBlockTest(string document, string spanContent, BlockKind blockKind, SpanKind spanType, params RazorError[] expectedErrors)
internal virtual void SingleSpanBlockTest(string document, string spanContent, BlockKindInternal blockKind, SpanKindInternal spanType, params RazorError[] expectedErrors)
{
SingleSpanBlockTest(document, spanContent, blockKind, spanType, AcceptedCharacters.Any, expectedErrors ?? new RazorError[0]);
SingleSpanBlockTest(document, spanContent, blockKind, spanType, AcceptedCharactersInternal.Any, expectedErrors ?? new RazorError[0]);
}
internal virtual void SingleSpanBlockTest(string document, BlockKind blockKind, SpanKind spanType, AcceptedCharacters acceptedCharacters, params RazorError[] expectedError)
internal virtual void SingleSpanBlockTest(string document, BlockKindInternal blockKind, SpanKindInternal spanType, AcceptedCharactersInternal acceptedCharacters, params RazorError[] expectedError)
{
SingleSpanBlockTest(document, document, blockKind, spanType, acceptedCharacters, expectedError);
}
internal virtual void SingleSpanBlockTest(string document, string spanContent, BlockKind blockKind, SpanKind spanType, AcceptedCharacters acceptedCharacters, params RazorError[] expectedErrors)
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 == SpanKind.Markup).Accepts(acceptedCharacters));
var expected = ConfigureAndAddSpanToBlock(builder, Factory.Span(spanType, spanContent, spanType == SpanKindInternal.Markup).Accepts(acceptedCharacters));
if (FixupSpans)
{
@ -552,9 +552,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Trace.WriteLine(string.Format(format, args));
}
internal virtual Block CreateSimpleBlockAndSpan(string spanContent, BlockKind blockKind, SpanKind spanType, AcceptedCharacters acceptedCharacters = AcceptedCharacters.Any)
internal virtual Block CreateSimpleBlockAndSpan(string spanContent, BlockKindInternal blockKind, SpanKindInternal spanType, AcceptedCharactersInternal acceptedCharacters = AcceptedCharactersInternal.Any)
{
var span = Factory.Span(spanType, spanContent, spanType == SpanKind.Markup).Accepts(acceptedCharacters);
var span = Factory.Span(spanType, spanContent, spanType == SpanKindInternal.Markup).Accepts(acceptedCharacters);
var b = new BlockBuilder()
{
Type = blockKind
@ -566,13 +566,13 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
switch (block.Type)
{
case BlockKind.Markup:
case BlockKindInternal.Markup:
span.With(new MarkupChunkGenerator());
break;
case BlockKind.Statement:
case BlockKindInternal.Statement:
span.With(new StatementChunkGenerator());
break;
case BlockKind.Expression:
case BlockKindInternal.Expression:
block.ChunkGenerator = new ExpressionChunkGenerator();
span.With(new ExpressionChunkGenerator());
break;
@ -583,7 +583,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
private class IgnoreOutputBlock : Block
{
public IgnoreOutputBlock() : base(BlockKind.Template, new SyntaxTreeNode[0], null) { }
public IgnoreOutputBlock() : base(BlockKindInternal.Template, new SyntaxTreeNode[0], null) { }
}
// Corrects the parents and previous/next information for spans

View File

@ -34,7 +34,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.CodeTransition(),
factory.Code("bar")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace)),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)),
factory.Markup(" baz")));
}
@ -57,7 +57,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.CodeTransition(),
factory.Code("bar")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace)),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)),
factory.Markup(" baz")));
}
}

View File

@ -664,7 +664,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.CodeTransition(),
factory.Code("DateTime.Now")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace)))),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)))),
HtmlAttributeValueStyle.DoubleQuotes)
})),
new []
@ -956,7 +956,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.CodeTransition(),
factory.Code("DateTime.Now")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace)));
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)));
return new TheoryData<string, Block>
{
@ -1074,9 +1074,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.CodeMarkup(" ?").With(new ExpressionChunkGenerator()),
new MarkupBlock(
factory.CodeMarkup(" @").With(new ExpressionChunkGenerator())
.As(SpanKind.Code),
.As(SpanKindInternal.Code),
factory.CodeMarkup("@").With(SpanChunkGenerator.Null)
.As(SpanKind.Code)),
.As(SpanKindInternal.Code)),
factory.CodeMarkup("DateTime").With(new ExpressionChunkGenerator()),
factory.CodeMarkup(" :").With(new ExpressionChunkGenerator()),
new MarkupBlock(
@ -1121,10 +1121,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new MarkupBlock(
factory.Markup("Time:"),
new MarkupBlock(
factory.Markup(" @").Accepts(AcceptedCharacters.None),
factory.Markup(" @").Accepts(AcceptedCharactersInternal.None),
factory.Markup("@")
.With(SpanChunkGenerator.Null)
.Accepts(AcceptedCharacters.None)),
.Accepts(AcceptedCharactersInternal.None)),
dateTimeNow))
}))
},
@ -1143,10 +1143,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
"name",
new MarkupBlock(
new MarkupBlock(
factory.Markup("@").Accepts(AcceptedCharacters.None),
factory.Markup("@").Accepts(AcceptedCharactersInternal.None),
factory.Markup("@")
.With(SpanChunkGenerator.Null)
.Accepts(AcceptedCharacters.None)),
.Accepts(AcceptedCharactersInternal.None)),
factory.Markup("BoundStringAttribute")))
}))
},
@ -1166,7 +1166,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new MarkupBlock(
factory.EmptyHtml()
.AsCodeMarkup().With(new ExpressionChunkGenerator())
.As(SpanKind.Code),
.As(SpanKindInternal.Code),
new ExpressionBlock(
factory.CSharpCodeMarkup("@").With(new ExpressionChunkGenerator()),
factory.CSharpCodeMarkup("(").With(new ExpressionChunkGenerator()),
@ -1252,7 +1252,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.CodeTransition(),
factory.Code("DateTime.Now")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace)))),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)))),
HtmlAttributeValueStyle.DoubleQuotes),
new TagHelperAttributeNode("style", factory.Markup("color:red;"))
},
@ -1439,7 +1439,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.CodeTransition(),
factory.Code("DateTime.Now")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace)))));
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)))));
var doWhileString = "@do { var foo = bar; <text>Foo</text> foo++; } while (foo<bar>);";
var doWhile = new Func<int, SyntaxTreeNode>(index =>
new MarkupBlock(
@ -1455,13 +1455,13 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new MarkupBlock(
new MarkupTagBlock(
factory.MarkupTransition("<text>")),
factory.Markup("Foo").Accepts(AcceptedCharacters.None),
factory.Markup("Foo").Accepts(AcceptedCharactersInternal.None),
new MarkupTagBlock(
factory.MarkupTransition("</text>"))),
factory
.Code(" foo++; } while (foo<bar>);")
.AsStatement()
.Accepts(AcceptedCharacters.None)))));
.Accepts(AcceptedCharactersInternal.None)))));
var currentFormattedString = "<p class=\"{0}\" style='{0}'></p>";
yield return new object[]
@ -1579,7 +1579,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.CodeTransition(),
factory.Code("DateTime.Now")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace))),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace))),
factory.Markup("\"").With(SpanChunkGenerator.Null)),
factory.Markup(">")),
factory.Markup("inside of strong tag"),
@ -1608,7 +1608,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.CodeTransition(),
factory.Code("DateTime.Now")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace));
.Accepts(AcceptedCharactersInternal.NonWhiteSpace));
var doWhileString = "@do { var foo = bar; <p>Foo</p> foo++; } while (foo<bar>);";
var doWhile = new StatementBlock(
factory.CodeTransition(),
@ -1617,10 +1617,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.Markup(" "),
new MarkupTagHelperBlock("p",
factory.Markup("Foo")),
factory.Markup(" ").Accepts(AcceptedCharacters.None)),
factory.Markup(" ").Accepts(AcceptedCharactersInternal.None)),
factory.Code("foo++; } while (foo<bar>);")
.AsStatement()
.Accepts(AcceptedCharacters.None));
.Accepts(AcceptedCharactersInternal.None));
var currentFormattedString = "<p>{0}</p>";
yield return new object[]
@ -1722,7 +1722,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.CodeTransition(),
factory.Code("DateTime.Now")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace));
.Accepts(AcceptedCharactersInternal.NonWhiteSpace));
return new TheoryData<string, MarkupBlock>
{
@ -2348,8 +2348,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
"class",
new MarkupBlock(
new MarkupBlock(
factory.Markup("@").Accepts(AcceptedCharacters.None),
factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharacters.None)),
factory.Markup("@").Accepts(AcceptedCharactersInternal.None),
factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None)),
factory.Markup("foo@bar.com"))),
new TagHelperAttributeNode("style", factory.Markup("color:red;"))
}),
@ -2458,7 +2458,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.CodeTransition(),
factory.Code("DateTime.Now")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace)))));
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)))));
yield return new object[]
{
@ -2499,8 +2499,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new MarkupBlock(
factory.Markup("color"),
new MarkupBlock(
factory.Markup("@").Accepts(AcceptedCharacters.None),
factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharacters.None)),
factory.Markup("@").Accepts(AcceptedCharactersInternal.None),
factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None)),
factory.Markup(":red;")),
HtmlAttributeValueStyle.DoubleQuotes)
},
@ -2709,7 +2709,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.CodeTransition(),
factory.Code("DateTime.Now")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace));
.Accepts(AcceptedCharactersInternal.NonWhiteSpace));
// documentContent, expectedOutput
return new TheoryData<string, MarkupBlock>
@ -2836,10 +2836,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.EmptyHtml(),
new StatementBlock(
factory.CodeTransition(),
factory.MetaCode("{").Accepts(AcceptedCharacters.None),
factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
insideBuilder(),
factory.EmptyCSharp().AsStatement(),
factory.MetaCode("}").Accepts(AcceptedCharacters.None)),
factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
factory.EmptyHtml());
};
@ -2889,7 +2889,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.CodeTransition(),
factory.Code("DateTime.Now")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace))),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace))),
factory.Markup(" +")
.With(new LiteralAttributeChunkGenerator(
prefix: new LocationTagged<string>(" ", index + 13, 0, index + 13),
@ -3524,10 +3524,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.EmptyHtml(),
new StatementBlock(
factory.CodeTransition(),
factory.MetaCode("{").Accepts(AcceptedCharacters.None),
factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
insideBuilder(),
factory.EmptyCSharp().AsStatement(),
factory.MetaCode("}").Accepts(AcceptedCharacters.None)),
factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
factory.EmptyHtml());
};
Action<MarkupBlock> updateDynamicChunkGenerators = (block) =>

View File

@ -58,7 +58,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
var rootBlock = Assert.IsType<Block>(document);
var child = Assert.Single(rootBlock.Children);
var tagBlock = Assert.IsType<Block>(child);
Assert.Equal(BlockKind.Tag, tagBlock.Type);
Assert.Equal(BlockKindInternal.Tag, tagBlock.Type);
Assert.Empty(errorSink.Errors);
// Act
@ -1210,7 +1210,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.CodeTransition(),
factory.Code("DateTime.Now")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace)))));
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)))));
// documentContent, expectedOutput
return new TheoryData<string, MarkupBlock>
@ -1543,8 +1543,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new TagHelperAttributeNode("catchAll",
new MarkupBlock(
new MarkupBlock(
factory.Markup("@").Accepts(AcceptedCharacters.None),
factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharacters.None)),
factory.Markup("@").Accepts(AcceptedCharactersInternal.None),
factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None)),
factory.Markup("hi"))),
},
children: factory.Markup("words and spaces")))
@ -1633,7 +1633,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.CodeTransition(),
factory.Code("DateTime.Now")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace))));
.Accepts(AcceptedCharactersInternal.NonWhiteSpace))));
// documentContent, expectedOutput
return new TheoryData<string, MarkupBlock>
@ -2219,7 +2219,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.CodeTransition(),
factory.Code("DateTime.Now")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords, acceptTrailingDot: true)
.Accepts(AcceptedCharacters.AnyExceptNewline)))))
.Accepts(AcceptedCharactersInternal.AnyExceptNewline)))))
}
})),
availableDescriptorsColon
@ -2264,10 +2264,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.EmptyHtml(),
new StatementBlock(
factory.CodeTransition(),
factory.MetaCode("{").Accepts(AcceptedCharacters.None),
factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
insideBuilder(),
factory.EmptyCSharp().AsStatement(),
factory.MetaCode("}").Accepts(AcceptedCharacters.None)),
factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
factory.EmptyHtml());
};
@ -2280,7 +2280,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.EmptyHtml(),
new StatementBlock(
factory.CodeTransition(),
factory.MetaCode("{").Accepts(AcceptedCharacters.None),
factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
new MarkupBlock(
new MarkupTagBlock(
factory.Markup("<"),
@ -2297,7 +2297,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
prefix: new LocationTagged<string>(string.Empty, 16, 0, 16),
value: new LocationTagged<string>("btn", 16, 0, 16))),
factory.Markup("\"").With(SpanChunkGenerator.Null)),
factory.Markup(">").Accepts(AcceptedCharacters.None)),
factory.Markup(">").Accepts(AcceptedCharactersInternal.None)),
factory.Markup("}")))),
new []
{
@ -2328,8 +2328,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
prefix: new LocationTagged<string>(string.Empty, 16, 0, 16),
value: new LocationTagged<string>("btn", 16, 0, 16))),
factory.Markup("\"").With(SpanChunkGenerator.Null)),
factory.Markup(">").Accepts(AcceptedCharacters.None)),
blockFactory.EscapedMarkupTagBlock("</", "text>", AcceptedCharacters.None))),
factory.Markup(">").Accepts(AcceptedCharactersInternal.None)),
blockFactory.EscapedMarkupTagBlock("</", "text>", AcceptedCharactersInternal.None))),
new RazorError[0]
},
{
@ -2351,9 +2351,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
prefix: new LocationTagged<string>(string.Empty, 16, 0, 16),
value: new LocationTagged<string>("btn", 16, 0, 16))),
factory.Markup("\"").With(SpanChunkGenerator.Null)),
factory.Markup(">").Accepts(AcceptedCharacters.None)),
factory.Markup(">").Accepts(AcceptedCharactersInternal.None)),
factory.Markup("words with spaces"),
blockFactory.EscapedMarkupTagBlock("</", "text>", AcceptedCharacters.None))),
blockFactory.EscapedMarkupTagBlock("</", "text>", AcceptedCharactersInternal.None))),
new RazorError[0]
},
{
@ -2389,8 +2389,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new LiteralAttributeChunkGenerator(
prefix: new LocationTagged<string>(string.Empty, 34, 0, 34),
value: new LocationTagged<string>("btn", 34, 0, 34)))),
factory.Markup(">").Accepts(AcceptedCharacters.None)),
blockFactory.EscapedMarkupTagBlock("</", "text>", AcceptedCharacters.None))),
factory.Markup(">").Accepts(AcceptedCharactersInternal.None)),
blockFactory.EscapedMarkupTagBlock("</", "text>", AcceptedCharactersInternal.None))),
new RazorError[0]
},
{
@ -2419,14 +2419,14 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.CodeTransition(),
factory.Code("DateTime.Now")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace))),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace))),
factory.Markup(" btn2").With(
new LiteralAttributeChunkGenerator(
prefix: new LocationTagged<string>(" ", 34, 0, 34),
value: new LocationTagged<string>("btn2", 35, 0, 35))),
factory.Markup("'").With(SpanChunkGenerator.Null)),
factory.Markup(">").Accepts(AcceptedCharacters.None)),
blockFactory.EscapedMarkupTagBlock("</", "text>", AcceptedCharacters.None))),
factory.Markup(">").Accepts(AcceptedCharactersInternal.None)),
blockFactory.EscapedMarkupTagBlock("</", "text>", AcceptedCharactersInternal.None))),
new RazorError[0]
},
};
@ -2459,10 +2459,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.EmptyHtml(),
new StatementBlock(
factory.CodeTransition(),
factory.MetaCode("{").Accepts(AcceptedCharacters.None),
factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
insideBuilder(),
factory.EmptyCSharp().AsStatement(),
factory.MetaCode("}").Accepts(AcceptedCharacters.None)),
factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
factory.EmptyHtml());
};
@ -2475,9 +2475,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.EmptyHtml(),
new StatementBlock(
factory.CodeTransition(),
factory.MetaCode("{").Accepts(AcceptedCharacters.None),
factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
new MarkupBlock(
blockFactory.EscapedMarkupTagBlock("<", "text>", AcceptedCharacters.None),
blockFactory.EscapedMarkupTagBlock("<", "text>", AcceptedCharactersInternal.None),
factory.Markup("}")))),
new []
{
@ -2493,7 +2493,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
"@{</!text>}",
buildStatementBlock(
() => new MarkupBlock(
blockFactory.EscapedMarkupTagBlock("</", "text>", AcceptedCharacters.None))),
blockFactory.EscapedMarkupTagBlock("</", "text>", AcceptedCharactersInternal.None))),
new []
{
new RazorError(
@ -2505,25 +2505,25 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
"@{<!text></!text>}",
buildStatementBlock(
() => new MarkupBlock(
blockFactory.EscapedMarkupTagBlock("<", "text>", AcceptedCharacters.None),
blockFactory.EscapedMarkupTagBlock("</", "text>", AcceptedCharacters.None))),
blockFactory.EscapedMarkupTagBlock("<", "text>", AcceptedCharactersInternal.None),
blockFactory.EscapedMarkupTagBlock("</", "text>", AcceptedCharactersInternal.None))),
new RazorError[0]
},
{
"@{<!text>words and spaces</!text>}",
buildStatementBlock(
() => new MarkupBlock(
blockFactory.EscapedMarkupTagBlock("<", "text>", AcceptedCharacters.None),
blockFactory.EscapedMarkupTagBlock("<", "text>", AcceptedCharactersInternal.None),
factory.Markup("words and spaces"),
blockFactory.EscapedMarkupTagBlock("</", "text>", AcceptedCharacters.None))),
blockFactory.EscapedMarkupTagBlock("</", "text>", AcceptedCharactersInternal.None))),
new RazorError[0]
},
{
"@{<!text></text>}",
buildStatementBlock(
() => new MarkupBlock(
blockFactory.EscapedMarkupTagBlock("<", "text>", AcceptedCharacters.None),
blockFactory.MarkupTagBlock("</text>", AcceptedCharacters.None))),
blockFactory.EscapedMarkupTagBlock("<", "text>", AcceptedCharactersInternal.None),
blockFactory.MarkupTagBlock("</text>", AcceptedCharactersInternal.None))),
new []
{
new RazorError(
@ -2540,9 +2540,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
() => new MarkupBlock(
new MarkupTagBlock(factory.MarkupTransition("<text>")),
new MarkupTagBlock(
factory.Markup("</").Accepts(AcceptedCharacters.None),
factory.Markup("</").Accepts(AcceptedCharactersInternal.None),
factory.BangEscape(),
factory.Markup("text>").Accepts(AcceptedCharacters.None)))),
factory.Markup("text>").Accepts(AcceptedCharactersInternal.None)))),
new []
{
new RazorError(
@ -2554,9 +2554,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
"@{<!text><text></text></!text>}",
buildStatementBlock(
() => new MarkupBlock(
blockFactory.EscapedMarkupTagBlock("<", "text>", AcceptedCharacters.None),
blockFactory.EscapedMarkupTagBlock("<", "text>", AcceptedCharactersInternal.None),
new MarkupTagHelperBlock("text"),
blockFactory.EscapedMarkupTagBlock("</", "text>", AcceptedCharacters.None))),
blockFactory.EscapedMarkupTagBlock("</", "text>", AcceptedCharactersInternal.None))),
new RazorError[0]
},
{
@ -2565,14 +2565,14 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.EmptyHtml(),
new StatementBlock(
factory.CodeTransition(),
factory.MetaCode("{").Accepts(AcceptedCharacters.None),
factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
new MarkupBlock(
new MarkupTagBlock(factory.MarkupTransition("<text>")),
new MarkupTagBlock(
factory.Markup("<").Accepts(AcceptedCharacters.None),
factory.Markup("<").Accepts(AcceptedCharactersInternal.None),
factory.BangEscape(),
factory.Markup("text>").Accepts(AcceptedCharacters.None)),
blockFactory.EscapedMarkupTagBlock("</", "text>", AcceptedCharacters.None),
factory.Markup("text>").Accepts(AcceptedCharactersInternal.None)),
blockFactory.EscapedMarkupTagBlock("</", "text>", AcceptedCharactersInternal.None),
factory.Markup("}")))),
new []
{
@ -2590,14 +2590,14 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.EmptyHtml(),
new StatementBlock(
factory.CodeTransition(),
factory.MetaCode("{").Accepts(AcceptedCharacters.None),
factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
new MarkupBlock(
blockFactory.EscapedMarkupTagBlock("<", "text>", AcceptedCharacters.None),
blockFactory.EscapedMarkupTagBlock("</", "text>", AcceptedCharacters.None)),
blockFactory.EscapedMarkupTagBlock("<", "text>", AcceptedCharactersInternal.None),
blockFactory.EscapedMarkupTagBlock("</", "text>", AcceptedCharactersInternal.None)),
new MarkupBlock(
blockFactory.MarkupTagBlock("</text>", AcceptedCharacters.None)),
blockFactory.MarkupTagBlock("</text>", AcceptedCharactersInternal.None)),
factory.EmptyCSharp().AsStatement(),
factory.MetaCode("}").Accepts(AcceptedCharacters.None)),
factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
factory.EmptyHtml()),
new []
{
@ -2646,7 +2646,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.EmptyHtml(),
new StatementBlock(
factory.CodeTransition(),
factory.MetaCode("{").Accepts(AcceptedCharacters.None),
factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
insideBuilder()));
};
@ -2840,7 +2840,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.EmptyHtml(),
new StatementBlock(
factory.CodeTransition(),
factory.MetaCode("{").Accepts(AcceptedCharacters.None),
factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
insideBuilder()));
};
@ -2965,8 +2965,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
prefix: new LocationTagged<string>(string.Empty, 13, 0, 13),
value: new LocationTagged<string>("btn", 13, 0, 13))),
new MarkupBlock(
factory.Markup("@").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(string.Empty, 16, 0, 16), new LocationTagged<string>("@", 16, 0, 16))).Accepts(AcceptedCharacters.None),
factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharacters.None)),
factory.Markup("@").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(string.Empty, 16, 0, 16), new LocationTagged<string>("@", 16, 0, 16))).Accepts(AcceptedCharactersInternal.None),
factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None)),
factory.Markup("}").With(
new LiteralAttributeChunkGenerator(
prefix: new LocationTagged<string>(string.Empty, 18, 0, 18),
@ -3192,10 +3192,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.EmptyHtml(),
new StatementBlock(
factory.CodeTransition(),
factory.MetaCode("{").Accepts(AcceptedCharacters.None),
factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
insideBuilder(),
factory.EmptyCSharp().AsStatement(),
factory.MetaCode("}").Accepts(AcceptedCharacters.None)),
factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
factory.EmptyHtml());
};
@ -3208,9 +3208,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.EmptyHtml(),
new StatementBlock(
factory.CodeTransition(),
factory.MetaCode("{").Accepts(AcceptedCharacters.None),
factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
new MarkupBlock(
blockFactory.EscapedMarkupTagBlock("<", "p>", AcceptedCharacters.None),
blockFactory.EscapedMarkupTagBlock("<", "p>", AcceptedCharactersInternal.None),
factory.Markup("}")))),
new []
{
@ -3226,7 +3226,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
"@{</!p>}",
buildStatementBlock(
() => new MarkupBlock(
blockFactory.EscapedMarkupTagBlock("</", "p>", AcceptedCharacters.None))),
blockFactory.EscapedMarkupTagBlock("</", "p>", AcceptedCharactersInternal.None))),
new []
{
new RazorError(
@ -3238,25 +3238,25 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
"@{<!p></!p>}",
buildStatementBlock(
() => new MarkupBlock(
blockFactory.EscapedMarkupTagBlock("<", "p>", AcceptedCharacters.None),
blockFactory.EscapedMarkupTagBlock("</", "p>", AcceptedCharacters.None))),
blockFactory.EscapedMarkupTagBlock("<", "p>", AcceptedCharactersInternal.None),
blockFactory.EscapedMarkupTagBlock("</", "p>", AcceptedCharactersInternal.None))),
new RazorError[0]
},
{
"@{<!p>words and spaces</!p>}",
buildStatementBlock(
() => new MarkupBlock(
blockFactory.EscapedMarkupTagBlock("<", "p>", AcceptedCharacters.None),
blockFactory.EscapedMarkupTagBlock("<", "p>", AcceptedCharactersInternal.None),
factory.Markup("words and spaces"),
blockFactory.EscapedMarkupTagBlock("</", "p>", AcceptedCharacters.None))),
blockFactory.EscapedMarkupTagBlock("</", "p>", AcceptedCharactersInternal.None))),
new RazorError[0]
},
{
"@{<!p></p>}",
buildStatementBlock(
() => new MarkupBlock(
blockFactory.EscapedMarkupTagBlock("<", "p>", AcceptedCharacters.None),
blockFactory.MarkupTagBlock("</p>", AcceptedCharacters.None))),
blockFactory.EscapedMarkupTagBlock("<", "p>", AcceptedCharactersInternal.None),
blockFactory.MarkupTagBlock("</p>", AcceptedCharactersInternal.None))),
new []
{
new RazorError(
@ -3272,7 +3272,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
buildStatementBlock(
() => new MarkupBlock(
new MarkupTagHelperBlock("p",
blockFactory.EscapedMarkupTagBlock("</", "p>", AcceptedCharacters.None)))),
blockFactory.EscapedMarkupTagBlock("</", "p>", AcceptedCharactersInternal.None)))),
new []
{
new RazorError(
@ -3288,8 +3288,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
buildStatementBlock(
() => new MarkupBlock(
new MarkupTagHelperBlock("p",
blockFactory.EscapedMarkupTagBlock("<", "p>", AcceptedCharacters.None),
blockFactory.EscapedMarkupTagBlock("</", "p>", AcceptedCharacters.None)))),
blockFactory.EscapedMarkupTagBlock("<", "p>", AcceptedCharactersInternal.None),
blockFactory.EscapedMarkupTagBlock("</", "p>", AcceptedCharactersInternal.None)))),
new RazorError[0]
},
{
@ -3298,11 +3298,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.EmptyHtml(),
new StatementBlock(
factory.CodeTransition(),
factory.MetaCode("{").Accepts(AcceptedCharacters.None),
factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
new MarkupBlock(
new MarkupTagHelperBlock("p",
blockFactory.EscapedMarkupTagBlock("<", "p>", AcceptedCharacters.None),
blockFactory.EscapedMarkupTagBlock("</", "p>", AcceptedCharacters.None),
blockFactory.EscapedMarkupTagBlock("<", "p>", AcceptedCharactersInternal.None),
blockFactory.EscapedMarkupTagBlock("</", "p>", AcceptedCharactersInternal.None),
factory.Markup("}"))))),
new []
{
@ -3323,14 +3323,14 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.EmptyHtml(),
new StatementBlock(
factory.CodeTransition(),
factory.MetaCode("{").Accepts(AcceptedCharacters.None),
factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
new MarkupBlock(
blockFactory.EscapedMarkupTagBlock("<", "p>", AcceptedCharacters.None),
blockFactory.EscapedMarkupTagBlock("</", "p>", AcceptedCharacters.None)),
blockFactory.EscapedMarkupTagBlock("<", "p>", AcceptedCharactersInternal.None),
blockFactory.EscapedMarkupTagBlock("</", "p>", AcceptedCharactersInternal.None)),
new MarkupBlock(
blockFactory.MarkupTagBlock("</p>", AcceptedCharacters.None)),
blockFactory.MarkupTagBlock("</p>", AcceptedCharactersInternal.None)),
factory.EmptyCSharp().AsStatement(),
factory.MetaCode("}").Accepts(AcceptedCharacters.None)),
factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
factory.EmptyHtml()),
new []
{
@ -3348,14 +3348,14 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.EmptyHtml(),
new StatementBlock(
factory.CodeTransition(),
factory.MetaCode("{").Accepts(AcceptedCharacters.None),
factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
new MarkupBlock(
new MarkupTagHelperBlock("strong",
blockFactory.EscapedMarkupTagBlock("</", "p>", AcceptedCharacters.None))),
blockFactory.EscapedMarkupTagBlock("</", "p>", AcceptedCharactersInternal.None))),
new MarkupBlock(
blockFactory.MarkupTagBlock("</strong>", AcceptedCharacters.None)),
blockFactory.MarkupTagBlock("</strong>", AcceptedCharactersInternal.None)),
factory.EmptyCSharp().AsStatement(),
factory.MetaCode("}").Accepts(AcceptedCharacters.None)),
factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
factory.EmptyHtml()),
new []
{
@ -3379,14 +3379,14 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.EmptyHtml(),
new StatementBlock(
factory.CodeTransition(),
factory.MetaCode("{").Accepts(AcceptedCharacters.None),
factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
new MarkupBlock(
new MarkupTagHelperBlock("strong")),
new MarkupBlock(
blockFactory.EscapedMarkupTagBlock("<", "p>", AcceptedCharacters.None),
blockFactory.EscapedMarkupTagBlock("</", "p>", AcceptedCharacters.None)),
blockFactory.EscapedMarkupTagBlock("<", "p>", AcceptedCharactersInternal.None),
blockFactory.EscapedMarkupTagBlock("</", "p>", AcceptedCharactersInternal.None)),
factory.EmptyCSharp().AsStatement(),
factory.MetaCode("}").Accepts(AcceptedCharacters.None)),
factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
factory.EmptyHtml()),
new RazorError[0]
},
@ -3396,18 +3396,18 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.EmptyHtml(),
new StatementBlock(
factory.CodeTransition(),
factory.MetaCode("{").Accepts(AcceptedCharacters.None),
factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
new MarkupBlock(
new MarkupTagHelperBlock("p",
new MarkupTagHelperBlock("strong",
blockFactory.EscapedMarkupTagBlock("</", "strong>", AcceptedCharacters.None)))),
blockFactory.EscapedMarkupTagBlock("</", "strong>", AcceptedCharactersInternal.None)))),
new MarkupBlock(
blockFactory.EscapedMarkupTagBlock("<", "p>", AcceptedCharacters.None),
blockFactory.MarkupTagBlock("</strong>", AcceptedCharacters.None)),
blockFactory.EscapedMarkupTagBlock("<", "p>", AcceptedCharactersInternal.None),
blockFactory.MarkupTagBlock("</strong>", AcceptedCharactersInternal.None)),
new MarkupBlock(
blockFactory.EscapedMarkupTagBlock("</", "p>", AcceptedCharacters.None)),
blockFactory.EscapedMarkupTagBlock("</", "p>", AcceptedCharactersInternal.None)),
factory.EmptyCSharp().AsStatement(),
factory.MetaCode("}").Accepts(AcceptedCharacters.None)),
factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
factory.EmptyHtml()),
new []
{
@ -3455,10 +3455,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.EmptyHtml(),
new StatementBlock(
factory.CodeTransition(),
factory.MetaCode("{").Accepts(AcceptedCharacters.None),
factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
insideBuilder(),
factory.EmptyCSharp().AsStatement(),
factory.MetaCode("}").Accepts(AcceptedCharacters.None)),
factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
factory.EmptyHtml());
};
@ -3471,7 +3471,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.EmptyHtml(),
new StatementBlock(
factory.CodeTransition(),
factory.MetaCode("{").Accepts(AcceptedCharacters.None),
factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
new MarkupBlock(
new MarkupTagBlock(
factory.Markup("<"),
@ -3488,7 +3488,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
prefix: new LocationTagged<string>(string.Empty, 13, 0, 13),
value: new LocationTagged<string>("btn", 13, 0, 13))),
factory.Markup("\"").With(SpanChunkGenerator.Null)),
factory.Markup(">").Accepts(AcceptedCharacters.None)),
factory.Markup(">").Accepts(AcceptedCharactersInternal.None)),
factory.Markup("}")))),
new []
{
@ -3519,8 +3519,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
prefix: new LocationTagged<string>(string.Empty, 13, 0, 13),
value: new LocationTagged<string>("btn", 13, 0, 13))),
factory.Markup("\"").With(SpanChunkGenerator.Null)),
factory.Markup(">").Accepts(AcceptedCharacters.None)),
blockFactory.EscapedMarkupTagBlock("</", "p>", AcceptedCharacters.None))),
factory.Markup(">").Accepts(AcceptedCharactersInternal.None)),
blockFactory.EscapedMarkupTagBlock("</", "p>", AcceptedCharactersInternal.None))),
new RazorError[0]
},
{
@ -3542,9 +3542,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
prefix: new LocationTagged<string>(string.Empty, 13, 0, 13),
value: new LocationTagged<string>("btn", 13, 0, 13))),
factory.Markup("\"").With(SpanChunkGenerator.Null)),
factory.Markup(">").Accepts(AcceptedCharacters.None)),
factory.Markup(">").Accepts(AcceptedCharactersInternal.None)),
factory.Markup("words with spaces"),
blockFactory.EscapedMarkupTagBlock("</", "p>", AcceptedCharacters.None))),
blockFactory.EscapedMarkupTagBlock("</", "p>", AcceptedCharactersInternal.None))),
new RazorError[0]
},
{
@ -3580,8 +3580,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new LiteralAttributeChunkGenerator(
prefix: new LocationTagged<string>(string.Empty, 31, 0, 31),
value: new LocationTagged<string>("btn", 31, 0, 31)))),
factory.Markup(">").Accepts(AcceptedCharacters.None)),
blockFactory.EscapedMarkupTagBlock("</", "p>", AcceptedCharacters.None))),
factory.Markup(">").Accepts(AcceptedCharactersInternal.None)),
blockFactory.EscapedMarkupTagBlock("</", "p>", AcceptedCharactersInternal.None))),
new RazorError[0]
},
{
@ -3610,14 +3610,14 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.CodeTransition(),
factory.Code("DateTime.Now")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace))),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace))),
factory.Markup(" btn2").With(
new LiteralAttributeChunkGenerator(
prefix: new LocationTagged<string>(" ", 31, 0, 31),
value: new LocationTagged<string>("btn2", 32, 0, 32))),
factory.Markup("'").With(SpanChunkGenerator.Null)),
factory.Markup(">").Accepts(AcceptedCharacters.None)),
blockFactory.EscapedMarkupTagBlock("</", "p>", AcceptedCharacters.None))),
factory.Markup(">").Accepts(AcceptedCharactersInternal.None)),
blockFactory.EscapedMarkupTagBlock("</", "p>", AcceptedCharactersInternal.None))),
new RazorError[0]
},
};
@ -3906,7 +3906,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.CodeTransition(),
factory.Code("DateTime.Now")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace))),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace))),
factory.Markup(" btn2").With(
new LiteralAttributeChunkGenerator(
prefix: new LocationTagged<string>(" ", 29, 0, 29),
@ -3952,15 +3952,15 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.EmptyHtml(),
new StatementBlock(
factory.CodeTransition(),
factory.MetaCode("{").Accepts(AcceptedCharacters.None),
factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
new MarkupBlock(
new MarkupTagBlock(
factory.MarkupTransition("<text>")),
factory.Markup("Hello World").Accepts(AcceptedCharacters.None),
factory.Markup("Hello World").Accepts(AcceptedCharactersInternal.None),
new MarkupTagBlock(
factory.MarkupTransition("</text>"))),
factory.EmptyCSharp().AsStatement(),
factory.MetaCode("}").Accepts(AcceptedCharacters.None)),
factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
factory.EmptyHtml())
};
yield return new object[]
@ -3970,7 +3970,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.EmptyHtml(),
new StatementBlock(
factory.CodeTransition(),
factory.MetaCode("{").Accepts(AcceptedCharacters.None),
factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
new MarkupBlock(
new MarkupTagBlock(
factory.MarkupTransition("<text>")),
@ -3979,7 +3979,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new MarkupTagBlock(
factory.MarkupTransition("</text>"))),
factory.EmptyCSharp().AsStatement(),
factory.MetaCode("}").Accepts(AcceptedCharacters.None)),
factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
factory.EmptyHtml())
};
yield return new object[]
@ -3989,13 +3989,13 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.EmptyHtml(),
new StatementBlock(
factory.CodeTransition(),
factory.MetaCode("{").Accepts(AcceptedCharacters.None),
factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
new MarkupBlock(
new MarkupTagHelperBlock("p",
new MarkupTagHelperBlock("text",
factory.Markup("Hello World")))),
factory.EmptyCSharp().AsStatement(),
factory.MetaCode("}").Accepts(AcceptedCharacters.None)),
factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
factory.EmptyHtml())
};
}
@ -4037,7 +4037,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.CodeTransition(),
factory.Code("foo")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace)),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)),
factory.Markup(" -->"),
new MarkupTagBlock(
factory.Markup("</foo>")))
@ -4063,7 +4063,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.CodeTransition(),
factory.Code("foo")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace)),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)),
factory.Markup(" ?>"),
new MarkupTagBlock(
factory.Markup("</foo>")))
@ -4079,7 +4079,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.CodeTransition(),
factory.Code("foo")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace)),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)),
factory.Markup(" >"),
new MarkupTagBlock(
factory.Markup("</foo>")))
@ -4115,7 +4115,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.CodeTransition(),
factory.Code("foo")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharacters.NonWhiteSpace)),
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)),
factory.Markup(" ]]>"),
new MarkupTagBlock(
factory.Markup("</foo>")))
@ -4203,12 +4203,12 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.Markup("<div>")),
new StatementBlock(
Factory.CodeTransition(),
Factory.MetaCode("{").Accepts(AcceptedCharacters.None),
Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
new MarkupBlock(
new MarkupTagBlock(
Factory.Markup("</div>").Accepts(AcceptedCharacters.None))),
Factory.Markup("</div>").Accepts(AcceptedCharactersInternal.None))),
Factory.EmptyCSharp().AsStatement(),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)),
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
Factory.EmptyHtml());
var expectedErrors = new[]
{

View File

@ -13,7 +13,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
return new UnclassifiedCodeSpanConstructor(
self.Span(
SpanKind.Code,
SpanKindInternal.Code,
new CSharpSymbol(string.Empty, CSharpSymbolType.Unknown)));
}
@ -21,7 +21,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
return self
.Span(
SpanKind.Markup,
SpanKindInternal.Markup,
new HtmlSymbol(string.Empty, HtmlSymbolType.Unknown))
.With(new MarkupChunkGenerator());
}
@ -29,109 +29,109 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
public static UnclassifiedCodeSpanConstructor Code(this SpanFactory self, string content)
{
return new UnclassifiedCodeSpanConstructor(
self.Span(SpanKind.Code, content, markup: false));
self.Span(SpanKindInternal.Code, content, markup: false));
}
public static SpanConstructor CodeTransition(this SpanFactory self)
{
return self
.Span(SpanKind.Transition, SyntaxConstants.TransitionString, markup: false)
.Accepts(AcceptedCharacters.None);
.Span(SpanKindInternal.Transition, SyntaxConstants.TransitionString, markup: false)
.Accepts(AcceptedCharactersInternal.None);
}
public static SpanConstructor CodeTransition(this SpanFactory self, string content)
{
return self.Span(SpanKind.Transition, content, markup: false).Accepts(AcceptedCharacters.None);
return self.Span(SpanKindInternal.Transition, content, markup: false).Accepts(AcceptedCharactersInternal.None);
}
public static SpanConstructor CodeTransition(this SpanFactory self, CSharpSymbolType type)
{
return self
.Span(SpanKind.Transition, SyntaxConstants.TransitionString, type)
.Accepts(AcceptedCharacters.None);
.Span(SpanKindInternal.Transition, SyntaxConstants.TransitionString, type)
.Accepts(AcceptedCharactersInternal.None);
}
public static SpanConstructor CodeTransition(this SpanFactory self, string content, CSharpSymbolType type)
{
return self.Span(SpanKind.Transition, content, type).Accepts(AcceptedCharacters.None);
return self.Span(SpanKindInternal.Transition, content, type).Accepts(AcceptedCharactersInternal.None);
}
public static SpanConstructor MarkupTransition(this SpanFactory self)
{
return self
.Span(SpanKind.Transition, SyntaxConstants.TransitionString, markup: true)
.Accepts(AcceptedCharacters.None);
.Span(SpanKindInternal.Transition, SyntaxConstants.TransitionString, markup: true)
.Accepts(AcceptedCharactersInternal.None);
}
public static SpanConstructor MarkupTransition(this SpanFactory self, string content)
{
return self.Span(SpanKind.Transition, content, markup: true).Accepts(AcceptedCharacters.None);
return self.Span(SpanKindInternal.Transition, content, markup: true).Accepts(AcceptedCharactersInternal.None);
}
public static SpanConstructor MarkupTransition(this SpanFactory self, HtmlSymbolType type)
{
return self
.Span(SpanKind.Transition, SyntaxConstants.TransitionString, type)
.Accepts(AcceptedCharacters.None);
.Span(SpanKindInternal.Transition, SyntaxConstants.TransitionString, type)
.Accepts(AcceptedCharactersInternal.None);
}
public static SpanConstructor MarkupTransition(this SpanFactory self, string content, HtmlSymbolType type)
{
return self.Span(SpanKind.Transition, content, type).Accepts(AcceptedCharacters.None);
return self.Span(SpanKindInternal.Transition, content, type).Accepts(AcceptedCharactersInternal.None);
}
public static SpanConstructor MetaCode(this SpanFactory self, string content)
{
return self.Span(SpanKind.MetaCode, content, markup: false);
return self.Span(SpanKindInternal.MetaCode, content, markup: false);
}
public static SpanConstructor MetaCode(this SpanFactory self, string content, CSharpSymbolType type)
{
return self.Span(SpanKind.MetaCode, content, type);
return self.Span(SpanKindInternal.MetaCode, content, type);
}
public static SpanConstructor MetaMarkup(this SpanFactory self, string content)
{
return self.Span(SpanKind.MetaCode, content, markup: true);
return self.Span(SpanKindInternal.MetaCode, content, markup: true);
}
public static SpanConstructor MetaMarkup(this SpanFactory self, string content, HtmlSymbolType type)
{
return self.Span(SpanKind.MetaCode, content, type);
return self.Span(SpanKindInternal.MetaCode, content, type);
}
public static SpanConstructor Comment(this SpanFactory self, string content, CSharpSymbolType type)
{
return self.Span(SpanKind.Comment, content, type);
return self.Span(SpanKindInternal.Comment, content, type);
}
public static SpanConstructor Comment(this SpanFactory self, string content, HtmlSymbolType type)
{
return self.Span(SpanKind.Comment, content, type);
return self.Span(SpanKindInternal.Comment, content, type);
}
public static SpanConstructor BangEscape(this SpanFactory self)
{
return self
.Span(SpanKind.MetaCode, "!", markup: true)
.Span(SpanKindInternal.MetaCode, "!", markup: true)
.With(SpanChunkGenerator.Null)
.Accepts(AcceptedCharacters.None);
.Accepts(AcceptedCharactersInternal.None);
}
public static SpanConstructor Markup(this SpanFactory self, string content)
{
return self.Span(SpanKind.Markup, content, markup: true).With(new MarkupChunkGenerator());
return self.Span(SpanKindInternal.Markup, content, markup: true).With(new MarkupChunkGenerator());
}
public static SpanConstructor Markup(this SpanFactory self, params string[] content)
{
return self.Span(SpanKind.Markup, content, markup: true).With(new MarkupChunkGenerator());
return self.Span(SpanKindInternal.Markup, content, markup: true).With(new MarkupChunkGenerator());
}
public static SpanConstructor CodeMarkup(this SpanFactory self, params string[] content)
{
return self
.Span(SpanKind.Code, content, markup: true)
.Span(SpanKindInternal.Code, content, markup: true)
.AsCodeMarkup();
}
@ -150,7 +150,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
CSharpCodeParser.DefaultKeywords,
acceptTrailingDot: true))
.With(new MarkupChunkGenerator())
.Accepts(AcceptedCharacters.AnyExceptNewline);
.Accepts(AcceptedCharactersInternal.AnyExceptNewline);
}
public static SourceLocation GetLocationAndAdvance(this SourceLocationTracker self, string content)
@ -176,27 +176,27 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
public SourceLocationTracker LocationTracker { get; }
public SpanConstructor Span(SpanKind kind, string content, CSharpSymbolType type)
public SpanConstructor Span(SpanKindInternal kind, string content, CSharpSymbolType type)
{
return CreateSymbolSpan(kind, content, () => new CSharpSymbol(content, type));
}
public SpanConstructor Span(SpanKind kind, string content, HtmlSymbolType type)
public SpanConstructor Span(SpanKindInternal kind, string content, HtmlSymbolType type)
{
return CreateSymbolSpan(kind, content, () => new HtmlSymbol(content, type));
}
public SpanConstructor Span(SpanKind kind, string content, bool markup)
public SpanConstructor Span(SpanKindInternal kind, string content, bool markup)
{
return new SpanConstructor(kind, LocationTracker.CurrentLocation, Tokenize(new[] { content }, markup));
}
public SpanConstructor Span(SpanKind kind, string[] content, bool markup)
public SpanConstructor Span(SpanKindInternal kind, string[] content, bool markup)
{
return new SpanConstructor(kind, LocationTracker.CurrentLocation, Tokenize(content, markup));
}
public SpanConstructor Span(SpanKind kind, params ISymbol[] symbols)
public SpanConstructor Span(SpanKindInternal kind, params ISymbol[] symbols)
{
var start = LocationTracker.CurrentLocation;
foreach (var symbol in symbols)
@ -207,7 +207,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
return new SpanConstructor(kind, start, symbols);
}
private SpanConstructor CreateSymbolSpan(SpanKind kind, string content, Func<ISymbol> ctor)
private SpanConstructor CreateSymbolSpan(SpanKindInternal kind, string content, Func<ISymbol> ctor)
{
var start = LocationTracker.CurrentLocation;
LocationTracker.UpdateLocation(content);
@ -255,7 +255,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
internal static class SpanConstructorExtensions
{
public static SpanConstructor Accepts(this SpanConstructor self, AcceptedCharacters accepted)
public static SpanConstructor Accepts(this SpanConstructor self, AcceptedCharactersInternal accepted)
{
return self.With(eh => eh.AcceptedCharacters = accepted);
}
@ -290,7 +290,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
public SpanConstructor AsMetaCode()
{
_self.Builder.Kind = SpanKind.MetaCode;
_self.Builder.Kind = SpanKindInternal.MetaCode;
return _self;
}
@ -330,21 +330,21 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
return _self
.With(new AddTagHelperChunkGenerator(lookupText))
.Accepts(AcceptedCharacters.AnyExceptNewline);
.Accepts(AcceptedCharactersInternal.AnyExceptNewline);
}
public SpanConstructor AsRemoveTagHelper(string lookupText)
{
return _self
.With(new RemoveTagHelperChunkGenerator(lookupText))
.Accepts(AcceptedCharacters.AnyExceptNewline);
.Accepts(AcceptedCharactersInternal.AnyExceptNewline);
}
public SpanConstructor AsTagHelperPrefixDirective(string prefix)
{
return _self
.With(new TagHelperPrefixDirectiveChunkGenerator(prefix))
.Accepts(AcceptedCharacters.AnyExceptNewline);
.Accepts(AcceptedCharactersInternal.AnyExceptNewline);
}
public SpanConstructor As(ISpanChunkGenerator chunkGenerator)
@ -362,7 +362,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
yield return new RawTextSymbol(SourceLocation.Zero, str);
}
public SpanConstructor(SpanKind kind, SourceLocation location, IEnumerable<ISymbol> symbols)
public SpanConstructor(SpanKindInternal kind, SourceLocation location, IEnumerable<ISymbol> symbols)
{
Builder = new SpanBuilder(location);
Builder.Kind = kind;
@ -378,7 +378,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
return Builder.Build();
}
public SpanConstructor As(SpanKind spanKind)
public SpanConstructor As(SpanKindInternal spanKind)
{
Builder.Kind = spanKind;
return this;

View File

@ -1,274 +0,0 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using Moq;
using Xunit;
#pragma warning disable CS0612 // Type or member is obsolete
namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
public class TextChangeTest
{
[Fact]
public void ConstructorRequiresNonNegativeOldPosition()
{
var parameterName = "oldPosition";
var exception = Assert.Throws<ArgumentOutOfRangeException>(parameterName, () => new TextChange(-1, 0, new Mock<ITextBuffer>().Object, 0, 0, new Mock<ITextBuffer>().Object));
ExceptionHelpers.ValidateArgumentException(parameterName, "Value must be greater than or equal to 0.", exception);
}
[Fact]
public void ConstructorRequiresNonNegativeNewPosition()
{
var parameterName = "newPosition";
var exception = Assert.Throws<ArgumentOutOfRangeException>(parameterName, () => new TextChange(0, 0, new Mock<ITextBuffer>().Object, -1, 0, new Mock<ITextBuffer>().Object));
ExceptionHelpers.ValidateArgumentException(parameterName, "Value must be greater than or equal to 0.", exception);
}
[Fact]
public void ConstructorRequiresNonNegativeOldLength()
{
var parameterName = "oldLength";
var exception = Assert.Throws<ArgumentOutOfRangeException>(parameterName, () => new TextChange(0, -1, new Mock<ITextBuffer>().Object, 0, 0, new Mock<ITextBuffer>().Object));
ExceptionHelpers.ValidateArgumentException(parameterName, "Value must be greater than or equal to 0.", exception);
}
[Fact]
public void ConstructorRequiresNonNegativeNewLength()
{
var parameterName = "newLength";
var exception = Assert.Throws<ArgumentOutOfRangeException>(parameterName, () => new TextChange(0, 0, new Mock<ITextBuffer>().Object, 0, -1, new Mock<ITextBuffer>().Object));
ExceptionHelpers.ValidateArgumentException(parameterName, "Value must be greater than or equal to 0.", exception);
}
[Fact]
public void ConstructorInitializesProperties()
{
// Act
var oldBuffer = new Mock<ITextBuffer>().Object;
var newBuffer = new Mock<ITextBuffer>().Object;
var change = new TextChange(42, 24, oldBuffer, 1337, newBuffer);
// Assert
Assert.Equal(42, change.OldPosition);
Assert.Equal(24, change.OldLength);
Assert.Equal(1337, change.NewLength);
Assert.Same(newBuffer, change.NewBuffer);
Assert.Same(oldBuffer, change.OldBuffer);
}
[Fact]
public void TestIsDelete()
{
// Arrange
var oldBuffer = new Mock<ITextBuffer>().Object;
var newBuffer = new Mock<ITextBuffer>().Object;
var change = new TextChange(0, 1, oldBuffer, 0, newBuffer);
// Assert
Assert.True(change.IsDelete);
}
[Fact]
public void TestDeleteCreatesTheRightSizeChange()
{
// Arrange
var oldBuffer = new Mock<ITextBuffer>().Object;
var newBuffer = new Mock<ITextBuffer>().Object;
var change = new TextChange(0, 1, oldBuffer, 0, newBuffer);
// Assert
Assert.Equal(0, change.NewText.Length);
Assert.Equal(1, change.OldText.Length);
}
[Fact]
public void TestIsInsert()
{
// Arrange
var oldBuffer = new Mock<ITextBuffer>().Object;
var newBuffer = new Mock<ITextBuffer>().Object;
var change = new TextChange(0, 0, oldBuffer, 35, newBuffer);
// Assert
Assert.True(change.IsInsert);
}
[Fact]
public void TestInsertCreateTheRightSizeChange()
{
// Arrange
var oldBuffer = new Mock<ITextBuffer>().Object;
var newBuffer = new Mock<ITextBuffer>().Object;
var change = new TextChange(0, 0, oldBuffer, 1, newBuffer);
// Assert
Assert.Equal(1, change.NewText.Length);
Assert.Equal(0, change.OldText.Length);
}
[Fact]
public void TestIsReplace()
{
// Arrange
var oldBuffer = new Mock<ITextBuffer>().Object;
var newBuffer = new Mock<ITextBuffer>().Object;
var change = new TextChange(0, 5, oldBuffer, 10, newBuffer);
// Assert
Assert.True(change.IsReplace);
}
[Fact]
public void ReplaceCreatesTheRightSizeChange()
{
// Arrange
var oldBuffer = new Mock<ITextBuffer>().Object;
var newBuffer = new Mock<ITextBuffer>().Object;
var change = new TextChange(0, 5, oldBuffer, 10, newBuffer);
// Assert
Assert.Equal(10, change.NewText.Length);
Assert.Equal(5, change.OldText.Length);
}
[Fact]
public void ReplaceCreatesTheRightSizeChange1()
{
// Arrange
var oldBuffer = new Mock<ITextBuffer>().Object;
var newBuffer = new Mock<ITextBuffer>().Object;
var change = new TextChange(0, 5, oldBuffer, 1, newBuffer);
// Assert
Assert.Equal(1, change.NewText.Length);
Assert.Equal(5, change.OldText.Length);
}
[Fact]
public void OldTextReturnsOldSpanFromOldBuffer()
{
// Arrange
var newBuffer = new StringTextBuffer("test");
var oldBuffer = new StringTextBuffer("text");
var textChange = new TextChange(2, 1, oldBuffer, 1, newBuffer);
// Act
var text = textChange.OldText;
// Assert
Assert.Equal("x", text);
}
[Fact]
public void OldTextReturnsOldSpanFromOldBuffer2()
{
// Arrange
var newBuffer = new StringTextBuffer("test");
var oldBuffer = new StringTextBuffer("text");
var textChange = new TextChange(2, 2, oldBuffer, 1, newBuffer);
// Act
var text = textChange.OldText;
// Assert
Assert.Equal("xt", text);
}
[Fact]
public void NewTextWithInsertReturnsChangedTextFromBuffer()
{
// Arrange
var newBuffer = new StringTextBuffer("test");
var oldBuffer = new StringTextBuffer("");
var textChange = new TextChange(0, 0, oldBuffer, 3, newBuffer);
// Act
var text = textChange.NewText;
var oldText = textChange.OldText;
// Assert
Assert.Equal("tes", text);
Assert.Equal("", oldText);
}
[Fact]
public void NewTextWithDeleteReturnsEmptyString()
{
// Arrange
var newBuffer = new StringTextBuffer("test");
var oldBuffer = new StringTextBuffer("");
var textChange = new TextChange(1, 1, oldBuffer, 0, newBuffer);
// Act
var text = textChange.NewText;
// Assert
Assert.Equal(string.Empty, text);
}
[Fact]
public void NewTextWithReplaceReturnsChangedTextFromBuffer()
{
// Arrange
var newBuffer = new StringTextBuffer("test");
var oldBuffer = new StringTextBuffer("tebb");
var textChange = new TextChange(2, 2, oldBuffer, 1, newBuffer);
// Act
var newText = textChange.NewText;
var oldText = textChange.OldText;
// Assert
Assert.Equal("s", newText);
Assert.Equal("bb", oldText);
}
[Fact]
public void NormalizeFixesUpIntelliSenseStyleReplacements()
{
// Arrange
var newBuffer = new StringTextBuffer("Date.");
var oldBuffer = new StringTextBuffer("Date");
var original = new TextChange(0, 4, oldBuffer, 5, newBuffer);
// Act
var normalized = original.Normalize();
// Assert
Assert.Equal(new TextChange(4, 0, oldBuffer, 1, newBuffer), normalized);
}
[Fact]
public void NormalizeDoesntAffectChangesWithoutCommonPrefixes()
{
// Arrange
var newBuffer = new StringTextBuffer("DateTime.");
var oldBuffer = new StringTextBuffer("Date.");
var original = new TextChange(0, 5, oldBuffer, 9, newBuffer);
// Act
var normalized = original.Normalize();
// Assert
Assert.Equal(original, normalized);
}
[Fact]
public void NormalizeDoesntAffectShrinkingReplacements()
{
// Arrange
var newBuffer = new StringTextBuffer("D");
var oldBuffer = new StringTextBuffer("DateTime");
var original = new TextChange(0, 8, oldBuffer, 1, newBuffer);
// Act
var normalized = original.Normalize();
// Assert
Assert.Equal(original, normalized);
}
}
}
#pragma warning restore CS0612 // Type or member is obsolete

View File

@ -72,7 +72,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Test
Assert.NotNull(syntaxTree);
Assert.Equal(6, syntaxTree.Root.Children.Count);
var block = Assert.IsType<Block>(syntaxTree.Root.Children[4]);
Assert.Equal(BlockKind.Directive, block.Type);
Assert.Equal(BlockKindInternal.Directive, block.Type);
Assert.Empty(syntaxTree.Diagnostics);
}
}