diff --git a/api/Avalonia.nupkg.xml b/api/Avalonia.nupkg.xml index 79381a04d7..be134deadc 100644 --- a/api/Avalonia.nupkg.xml +++ b/api/Avalonia.nupkg.xml @@ -7,6 +7,30 @@ baseline/netstandard2.0/Avalonia.Base.dll target/netstandard2.0/Avalonia.Base.dll + + CP0001 + T:Avalonia.Utilities.CharacterReader + baseline/netstandard2.0/Avalonia.Base.dll + target/netstandard2.0/Avalonia.Base.dll + + + CP0001 + T:Avalonia.Utilities.IdentifierParser + baseline/netstandard2.0/Avalonia.Base.dll + target/netstandard2.0/Avalonia.Base.dll + + + CP0001 + T:Avalonia.Utilities.KeywordParser + baseline/netstandard2.0/Avalonia.Base.dll + target/netstandard2.0/Avalonia.Base.dll + + + CP0001 + T:Avalonia.Utilities.StyleClassParser + baseline/netstandard2.0/Avalonia.Base.dll + target/netstandard2.0/Avalonia.Base.dll + CP0002 M:Avalonia.Diagnostics.AppliedStyle.get_HasActivator diff --git a/src/Avalonia.Base/Utilities/CharacterReader.cs b/src/Avalonia.Base/Utilities/CharacterReader.cs index e28d10d654..ec5e6b7f55 100644 --- a/src/Avalonia.Base/Utilities/CharacterReader.cs +++ b/src/Avalonia.Base/Utilities/CharacterReader.cs @@ -2,11 +2,7 @@ using System; namespace Avalonia.Utilities { - // TODO12: This should not be public -#if !BUILDTASK - public -#endif - ref struct CharacterReader + internal ref struct CharacterReader { private ReadOnlySpan _s; diff --git a/src/Avalonia.Base/Utilities/IdentifierParser.cs b/src/Avalonia.Base/Utilities/IdentifierParser.cs index f32d5f79a2..511f326187 100644 --- a/src/Avalonia.Base/Utilities/IdentifierParser.cs +++ b/src/Avalonia.Base/Utilities/IdentifierParser.cs @@ -3,10 +3,7 @@ using System.Globalization; namespace Avalonia.Utilities { -#if !BUILDTASK - public -#endif - static class IdentifierParser + internal static class IdentifierParser { public static ReadOnlySpan ParseIdentifier(this #if NET7SDK diff --git a/src/Avalonia.Base/Utilities/KeywordParser.cs b/src/Avalonia.Base/Utilities/KeywordParser.cs index 16ef95f5f4..d289f9577b 100644 --- a/src/Avalonia.Base/Utilities/KeywordParser.cs +++ b/src/Avalonia.Base/Utilities/KeywordParser.cs @@ -2,10 +2,7 @@ using System; namespace Avalonia.Utilities { -#if !BUILDTASK - public -#endif - static class KeywordParser + internal static class KeywordParser { public static bool CheckKeyword(this ref CharacterReader r, string keyword) { diff --git a/src/Avalonia.Base/Utilities/StyleClassParser.cs b/src/Avalonia.Base/Utilities/StyleClassParser.cs index 2db58f73d9..d528f0b7ca 100644 --- a/src/Avalonia.Base/Utilities/StyleClassParser.cs +++ b/src/Avalonia.Base/Utilities/StyleClassParser.cs @@ -3,10 +3,7 @@ using System.Globalization; namespace Avalonia.Utilities { -#if !BUILDTASK - public -#endif - static class StyleClassParser + internal static class StyleClassParser { public static ReadOnlySpan ParseStyleClass(this ref CharacterReader r) { diff --git a/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlBindingPathParser.cs b/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlBindingPathParser.cs index 62e81f44d8..c74118b6f7 100644 --- a/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlBindingPathParser.cs +++ b/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlBindingPathParser.cs @@ -22,8 +22,7 @@ namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions.Transformers if (binding.Arguments.Count > 0 && binding.Arguments[0] is XamlAstTextNode bindingPathText) { - var reader = new CharacterReader(bindingPathText.Text.AsSpan()); - var (nodes, _) = BindingExpressionGrammar.Parse(ref reader); + var (nodes, _) = BindingExpressionGrammar.Parse(bindingPathText.Text); if (convertedNode != null) { @@ -48,8 +47,7 @@ namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions.Transformers if (bindingPathAssignment != null && bindingPathAssignment.Values[0] is XamlAstTextNode pathValue) { - var reader = new CharacterReader(pathValue.Text.AsSpan()); - var (nodes, _) = BindingExpressionGrammar.Parse(ref reader); + var (nodes, _) = BindingExpressionGrammar.Parse(pathValue.Text); if (nodes.Count == 1 && nodes[0] is BindingExpressionGrammar.EmptyExpressionNode) { diff --git a/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/XamlIlAvaloniaPropertyHelper.cs b/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/XamlIlAvaloniaPropertyHelper.cs index 0d4b6eceef..48d7f26a5e 100644 --- a/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/XamlIlAvaloniaPropertyHelper.cs +++ b/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/XamlIlAvaloniaPropertyHelper.cs @@ -64,7 +64,7 @@ namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions { XamlAstNamePropertyReference forgedReference; - var parsedPropertyName = PropertyParser.Parse(new CharacterReader(propertyName.AsSpan())); + var parsedPropertyName = PropertyParser.Parse(propertyName); if(parsedPropertyName.owner == null) forgedReference = new XamlAstNamePropertyReference(lineInfo, selectorTypeReference, propertyName, selectorTypeReference); diff --git a/src/Markup/Avalonia.Markup.Xaml/Parsers/PropertyParser.cs b/src/Markup/Avalonia.Markup.Xaml/Parsers/PropertyParser.cs index a55a44dfe5..0f12307046 100644 --- a/src/Markup/Avalonia.Markup.Xaml/Parsers/PropertyParser.cs +++ b/src/Markup/Avalonia.Markup.Xaml/Parsers/PropertyParser.cs @@ -1,10 +1,17 @@ -using Avalonia.Data.Core; +using System; +using Avalonia.Data.Core; using Avalonia.Utilities; namespace Avalonia.Markup.Xaml.Parsers { internal class PropertyParser { + public static (string? ns, string? owner, string name) Parse(string text) + { + var r = new CharacterReader(text.AsSpan()); + return Parse(r); + } + public static (string? ns, string? owner, string name) Parse(CharacterReader r) { if (r.End) diff --git a/src/Markup/Avalonia.Markup/Markup/Parsers/BindingExpressionGrammar.cs b/src/Markup/Avalonia.Markup/Markup/Parsers/BindingExpressionGrammar.cs index 2529950691..97ae40931e 100644 --- a/src/Markup/Avalonia.Markup/Markup/Parsers/BindingExpressionGrammar.cs +++ b/src/Markup/Avalonia.Markup/Markup/Parsers/BindingExpressionGrammar.cs @@ -1,10 +1,10 @@ // Copyright (c) The Avalonia Project. All rights reserved. // Licensed under the MIT license. See licence.md file in the project root for full license information. -using Avalonia.Data.Core; -using Avalonia.Utilities; using System; using System.Collections.Generic; +using Avalonia.Data.Core; +using Avalonia.Utilities; namespace Avalonia.Markup.Parsers { @@ -18,6 +18,12 @@ namespace Avalonia.Markup.Parsers { private static readonly List s_pool = new(); + public static (List Nodes, SourceMode Mode) Parse(string text) + { + var r = new CharacterReader(text.AsSpan()); + return Parse(ref r); + } + public static (List Nodes, SourceMode Mode) Parse(ref CharacterReader r) { var result = new List();