' Licensed to the .NET Foundation under one or more agreements. ' The .NET Foundation licenses this file to you under the MIT license. ' See the LICENSE file in the project root for more information. Imports System.Threading Imports Microsoft.CodeAnalysis.Collections Imports Microsoft.CodeAnalysis.Formatting Imports Microsoft.CodeAnalysis.Text Namespace Microsoft.CodeAnalysis.VisualBasic.Formatting Partial Friend Class TriviaDataFactory Private MustInherit Class AbstractLineBreakTrivia Inherits Whitespace Protected ReadOnly _original As String Protected ReadOnly _newString As String Public Sub New(options As LineFormattingOptions, original As String, lineBreaks As Integer, indentation As Integer, elastic As Boolean) MyBase.New(options, lineBreaks, indentation, elastic) Me._original = original Me._newString = CreateStringFromState() End Sub Protected MustOverride Function CreateStringFromState() As String Public Overrides Function WithSpace(space As Integer, context As FormattingContext, formattingRules As ChainedFormattingRules) As TriviaData throw ExceptionUtilities.Unreachable End Function Public Overrides Function WithLine(line As Integer, indentation As Integer, context As FormattingContext, formattingRules As ChainedFormattingRules, cancellationToken As CancellationToken) As TriviaData throw ExceptionUtilities.Unreachable End Function Public Overrides ReadOnly Property ContainsChanges As Boolean Get Return Not Me._original.Equals(Me._newString) OrElse Me.TreatAsElastic End Get End Property Public Overrides Function GetTextChanges(textSpan As TextSpan) As IEnumerable(Of TextChange) Return SpecializedCollections.SingletonEnumerable(New TextChange(textSpan, Me._newString)) End Function Public Overrides Sub Format(context As FormattingContext, formattingRules As ChainedFormattingRules, formattingResultApplier As Action(Of Integer, TokenStream, TriviaData), cancellationToken As CancellationToken, Optional tokenPairIndex As Integer = TokenPairIndexNotNeeded) If Me.ContainsChanges Then formattingResultApplier(tokenPairIndex, context.TokenStream, Me) End If End Sub End Class End Class End Namespace |