diff --git a/src/Microsoft.AspNetCore.Mvc.Razor.Extensions/ViewComponentTagHelperDescriptorFactory.cs b/src/Microsoft.AspNetCore.Mvc.Razor.Extensions/ViewComponentTagHelperDescriptorFactory.cs index 99d6236941..48d6eed74b 100644 --- a/src/Microsoft.AspNetCore.Mvc.Razor.Extensions/ViewComponentTagHelperDescriptorFactory.cs +++ b/src/Microsoft.AspNetCore.Mvc.Razor.Extensions/ViewComponentTagHelperDescriptorFactory.cs @@ -56,16 +56,16 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions var tagName = $"vc:{HtmlConventions.ToHtmlCase(shortName)}"; var typeName = $"__Generated__{shortName}ViewComponentTagHelper"; var displayName = shortName + "ViewComponentTagHelper"; - var descriptorBuilder = TagHelperDescriptorBuilder.Create(ViewComponentTagHelperConventions.Kind, typeName, assemblyName) - .SetTypeName(typeName) - .DisplayName(displayName); + var descriptorBuilder = TagHelperDescriptorBuilder.Create(ViewComponentTagHelperConventions.Kind, typeName, assemblyName); + descriptorBuilder.SetTypeName(typeName); + descriptorBuilder.DisplayName = displayName; if (TryFindInvokeMethod(type, out var method, out var diagnostic)) { var methodParameters = method.Parameters; descriptorBuilder.TagMatchingRule(ruleBuilder => { - ruleBuilder.RequireTagName(tagName); + ruleBuilder.TagName = tagName; AddRequiredAttributes(methodParameters, ruleBuilder); }); @@ -73,10 +73,10 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions } else { - descriptorBuilder.AddDiagnostic(diagnostic); + descriptorBuilder.Diagnostics.Add(diagnostic); } - descriptorBuilder.AddMetadata(ViewComponentTagHelperMetadata.Name, shortName); + descriptorBuilder.Metadata[ViewComponentTagHelperMetadata.Name] = shortName; var descriptor = descriptorBuilder.Build(); return descriptor; @@ -161,10 +161,10 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions { // Set required attributes only for non-indexer attributes. Indexer attributes can't be required attributes // because there are two ways of setting values for the attribute. - builder.RequireAttribute(attributeBuilder => + builder.Attribute(attributeBuilder => { var lowerKebabName = HtmlConventions.ToHtmlCase(parameter.Name); - attributeBuilder.Name(lowerKebabName); + attributeBuilder.Name =lowerKebabName; }); } } @@ -184,15 +184,14 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions builder.BindAttribute(attributeBuilder => { - attributeBuilder - .Name(lowerKebabName) - .SetPropertyName(parameter.Name) - .TypeName(typeName) - .DisplayName($"{simpleName} {containingDisplayName}.{parameter.Name}"); + attributeBuilder.Name = lowerKebabName; + attributeBuilder.TypeName = typeName; + attributeBuilder.DisplayName = $"{simpleName} {containingDisplayName}.{parameter.Name}"; + attributeBuilder.SetPropertyName(parameter.Name); if (parameter.Type.TypeKind == TypeKind.Enum) { - attributeBuilder.AsEnum(); + attributeBuilder.IsEnum = true; } else { diff --git a/src/Microsoft.AspNetCore.Razor.Language/BoundAttributeDescriptorBuilder.cs b/src/Microsoft.AspNetCore.Razor.Language/BoundAttributeDescriptorBuilder.cs index cfa42236a7..b2cbfba675 100644 --- a/src/Microsoft.AspNetCore.Razor.Language/BoundAttributeDescriptorBuilder.cs +++ b/src/Microsoft.AspNetCore.Razor.Language/BoundAttributeDescriptorBuilder.cs @@ -7,23 +7,24 @@ namespace Microsoft.AspNetCore.Razor.Language { public abstract class BoundAttributeDescriptorBuilder { + public abstract string Name { get; set; } + + public abstract string TypeName { get; set; } + + public abstract bool IsEnum { get; set; } + + public abstract bool IsDictionary { get; set; } + + public abstract string IndexerAttributeNamePrefix { get; set; } + + public abstract string IndexerValueTypeName { get; set; } + + public abstract string Documentation { get; set; } + + public abstract string DisplayName { get; set; } + public abstract IDictionary Metadata { get; } - public abstract BoundAttributeDescriptorBuilder Name(string name); - - public abstract BoundAttributeDescriptorBuilder TypeName(string typeName); - - public abstract BoundAttributeDescriptorBuilder AsEnum(); - - public abstract BoundAttributeDescriptorBuilder AsDictionary(string attributeNamePrefix, string valueTypeName); - - public abstract BoundAttributeDescriptorBuilder Documentation(string documentation); - - public abstract BoundAttributeDescriptorBuilder AddMetadata(string key, string value); - - public abstract BoundAttributeDescriptorBuilder AddDiagnostic(RazorDiagnostic diagnostic); - - public abstract BoundAttributeDescriptorBuilder DisplayName(string displayName); - + public abstract RazorDiagnosticCollection Diagnostics { get; } } } diff --git a/src/Microsoft.AspNetCore.Razor.Language/BoundAttributeDescriptorBuilderExtensions.cs b/src/Microsoft.AspNetCore.Razor.Language/BoundAttributeDescriptorBuilderExtensions.cs index dbccc91b7a..8d1ab038ab 100644 --- a/src/Microsoft.AspNetCore.Razor.Language/BoundAttributeDescriptorBuilderExtensions.cs +++ b/src/Microsoft.AspNetCore.Razor.Language/BoundAttributeDescriptorBuilderExtensions.cs @@ -7,7 +7,7 @@ namespace Microsoft.AspNetCore.Razor.Language { public static class BoundAttributeDescriptorBuilderExtensions { - public static BoundAttributeDescriptorBuilder SetPropertyName(this BoundAttributeDescriptorBuilder builder, string propertyName) + public static void SetPropertyName(this BoundAttributeDescriptorBuilder builder, string propertyName) { if (builder == null) { @@ -19,9 +19,7 @@ namespace Microsoft.AspNetCore.Razor.Language throw new ArgumentNullException(nameof(propertyName)); } - builder.AddMetadata(TagHelperMetadata.Common.PropertyName, propertyName); - - return builder; + builder.Metadata[TagHelperMetadata.Common.PropertyName] = propertyName; } public static string GetPropertyName(this BoundAttributeDescriptorBuilder builder) @@ -38,5 +36,20 @@ namespace Microsoft.AspNetCore.Razor.Language return null; } + + public static void AsDictionary( + this BoundAttributeDescriptorBuilder builder, + string attributeNamePrefix, + string valueTypeName) + { + if (builder == null) + { + throw new ArgumentNullException(nameof(builder)); + } + + builder.IsDictionary = true; + builder.IndexerAttributeNamePrefix = attributeNamePrefix; + builder.IndexerValueTypeName = valueTypeName; + } } } diff --git a/src/Microsoft.AspNetCore.Razor.Language/DefaultBoundAttributeDescriptorBuilder.cs b/src/Microsoft.AspNetCore.Razor.Language/DefaultBoundAttributeDescriptorBuilder.cs index 16556e99bd..0db2e0d826 100644 --- a/src/Microsoft.AspNetCore.Razor.Language/DefaultBoundAttributeDescriptorBuilder.cs +++ b/src/Microsoft.AspNetCore.Razor.Language/DefaultBoundAttributeDescriptorBuilder.cs @@ -30,17 +30,9 @@ namespace Microsoft.AspNetCore.Razor.Language private readonly DefaultTagHelperDescriptorBuilder _parent; private readonly string _kind; - - private string _displayName; - private bool _isEnum; - private bool _hasIndexer; - private string _indexerValueTypeName; - private string _name; - private string _typeName; - private string _documentation; - private string _indexerNamePrefix; private readonly Dictionary _metadata; - private HashSet _diagnostics; + + private DefaultRazorDiagnosticCollection _diagnostics; public DefaultBoundAttributeDescriptorBuilder(DefaultTagHelperDescriptorBuilder parent, string kind) { @@ -50,70 +42,35 @@ namespace Microsoft.AspNetCore.Razor.Language _metadata = new Dictionary(); } + public override string Name { get; set; } + + public override string TypeName { get; set; } + + public override bool IsEnum { get; set; } + + public override bool IsDictionary { get; set; } + + public override string IndexerAttributeNamePrefix { get; set; } + + public override string IndexerValueTypeName { get; set; } + + public override string Documentation { get; set; } + + public override string DisplayName { get; set; } + public override IDictionary Metadata => _metadata; - public override BoundAttributeDescriptorBuilder Name(string name) + public override RazorDiagnosticCollection Diagnostics { - _name = name; - - return this; - } - - public override BoundAttributeDescriptorBuilder TypeName(string typeName) - { - _typeName = typeName; - - return this; - } - - public override BoundAttributeDescriptorBuilder AsEnum() - { - _isEnum = true; - - return this; - } - - public override BoundAttributeDescriptorBuilder AsDictionary(string attributeNamePrefix, string valueTypeName) - { - _indexerNamePrefix = attributeNamePrefix; - _indexerValueTypeName = valueTypeName; - _hasIndexer = true; - - return this; - } - - public override BoundAttributeDescriptorBuilder Documentation(string documentation) - { - _documentation = documentation; - - return this; - } - - public override BoundAttributeDescriptorBuilder AddMetadata(string key, string value) - { - _metadata[key] = value; - - return this; - } - - public override BoundAttributeDescriptorBuilder AddDiagnostic(RazorDiagnostic diagnostic) - { - EnsureDiagnostics(); - _diagnostics.Add(diagnostic); - - return this; - } - - public override BoundAttributeDescriptorBuilder DisplayName(string displayName) - { - if (displayName == null) + get { - throw new ArgumentNullException(nameof(displayName)); + if (_diagnostics == null) + { + _diagnostics = new DefaultRazorDiagnosticCollection(); + } + + return _diagnostics; } - - _displayName = displayName; - - return this; } public BoundAttributeDescriptor Build() @@ -127,15 +84,15 @@ namespace Microsoft.AspNetCore.Razor.Language var descriptor = new DefaultBoundAttributeDescriptor( _kind, - _name, - _typeName, - _isEnum, - _hasIndexer, - _indexerNamePrefix, - _indexerValueTypeName, - _documentation, + Name, + TypeName, + IsEnum, + IsDictionary, + IndexerAttributeNamePrefix, + IndexerValueTypeName, + Documentation, GetDisplayName(), - new Dictionary(_metadata), + new Dictionary(Metadata), diagnostics.ToArray()); return descriptor; @@ -143,28 +100,28 @@ namespace Microsoft.AspNetCore.Razor.Language private string GetDisplayName() { - if (_displayName != null) + if (DisplayName != null) { - return _displayName; + return DisplayName; } var parentTypeName = _parent.GetTypeName(); var propertyName = this.GetPropertyName(); - if (_typeName != null && + if (TypeName != null && propertyName != null && parentTypeName != null) { // This looks like a normal c# property, so lets compute a display name based on that. - if (!PrimitiveDisplayTypeNameLookups.TryGetValue(_typeName, out var simpleTypeName)) + if (!PrimitiveDisplayTypeNameLookups.TryGetValue(TypeName, out var simpleTypeName)) { - simpleTypeName = _typeName; + simpleTypeName = TypeName; } return $"{simpleTypeName} {parentTypeName}.{propertyName}"; } - return _name; + return Name; } private IEnumerable Validate() @@ -173,9 +130,9 @@ namespace Microsoft.AspNetCore.Razor.Language // the server; therefore it's invalid for TagHelpers to bind to them. const string DataDashPrefix = "data-"; - if (string.IsNullOrWhiteSpace(_name)) + if (string.IsNullOrWhiteSpace(Name)) { - if (_indexerNamePrefix == null) + if (IndexerAttributeNamePrefix == null) { var diagnostic = RazorDiagnosticFactory.CreateTagHelper_InvalidBoundAttributeNullOrWhitespace( _parent.GetDisplayName(), @@ -186,24 +143,24 @@ namespace Microsoft.AspNetCore.Razor.Language } else { - if (_name.StartsWith(DataDashPrefix, StringComparison.OrdinalIgnoreCase)) + if (Name.StartsWith(DataDashPrefix, StringComparison.OrdinalIgnoreCase)) { var diagnostic = RazorDiagnosticFactory.CreateTagHelper_InvalidBoundAttributeNameStartsWith( _parent.GetDisplayName(), GetDisplayName(), - _name); + Name); yield return diagnostic; } - foreach (var character in _name) + foreach (var character in Name) { if (char.IsWhiteSpace(character) || HtmlConventions.InvalidNonWhitespaceHtmlCharacters.Contains(character)) { var diagnostic = RazorDiagnosticFactory.CreateTagHelper_InvalidBoundAttributeName( _parent.GetDisplayName(), GetDisplayName(), - _name, + Name, character); yield return diagnostic; @@ -211,18 +168,18 @@ namespace Microsoft.AspNetCore.Razor.Language } } - if (_indexerNamePrefix != null) + if (IndexerAttributeNamePrefix != null) { - if (_indexerNamePrefix.StartsWith(DataDashPrefix, StringComparison.OrdinalIgnoreCase)) + if (IndexerAttributeNamePrefix.StartsWith(DataDashPrefix, StringComparison.OrdinalIgnoreCase)) { var diagnostic = RazorDiagnosticFactory.CreateTagHelper_InvalidBoundAttributePrefixStartsWith( _parent.GetDisplayName(), GetDisplayName(), - _indexerNamePrefix); + IndexerAttributeNamePrefix); yield return diagnostic; } - else if (_indexerNamePrefix.Length > 0 && string.IsNullOrWhiteSpace(_indexerNamePrefix)) + else if (IndexerAttributeNamePrefix.Length > 0 && string.IsNullOrWhiteSpace(IndexerAttributeNamePrefix)) { var diagnostic = RazorDiagnosticFactory.CreateTagHelper_InvalidBoundAttributeNullOrWhitespace( _parent.GetDisplayName(), @@ -232,14 +189,14 @@ namespace Microsoft.AspNetCore.Razor.Language } else { - foreach (var character in _indexerNamePrefix) + foreach (var character in IndexerAttributeNamePrefix) { if (char.IsWhiteSpace(character) || HtmlConventions.InvalidNonWhitespaceHtmlCharacters.Contains(character)) { var diagnostic = RazorDiagnosticFactory.CreateTagHelper_InvalidBoundAttributePrefix( _parent.GetDisplayName(), GetDisplayName(), - _indexerNamePrefix, + IndexerAttributeNamePrefix, character); yield return diagnostic; @@ -248,13 +205,5 @@ namespace Microsoft.AspNetCore.Razor.Language } } } - - private void EnsureDiagnostics() - { - if (_diagnostics == null) - { - _diagnostics = new HashSet(); - } - } } } diff --git a/src/Microsoft.AspNetCore.Razor.Language/DefaultRequiredAttributeDescriptorBuilder.cs b/src/Microsoft.AspNetCore.Razor.Language/DefaultRequiredAttributeDescriptorBuilder.cs index 2620051e60..d46f40323d 100644 --- a/src/Microsoft.AspNetCore.Razor.Language/DefaultRequiredAttributeDescriptorBuilder.cs +++ b/src/Microsoft.AspNetCore.Razor.Language/DefaultRequiredAttributeDescriptorBuilder.cs @@ -9,46 +9,27 @@ namespace Microsoft.AspNetCore.Razor.Language { internal class DefaultRequiredAttributeDescriptorBuilder : RequiredAttributeDescriptorBuilder { - private string _name; - private RequiredAttributeDescriptor.NameComparisonMode _nameComparison; - private string _value; - private RequiredAttributeDescriptor.ValueComparisonMode _valueComparison; - private HashSet _diagnostics; + private DefaultRazorDiagnosticCollection _diagnostics; - public override RequiredAttributeDescriptorBuilder Name(string name) + public override string Name { get; set; } + + public override RequiredAttributeDescriptor.NameComparisonMode NameComparisonMode { get; set; } + + public override string Value { get; set; } + + public override RequiredAttributeDescriptor.ValueComparisonMode ValueComparisonMode { get; set; } + + public override RazorDiagnosticCollection Diagnostics { - _name = name; + get + { + if (_diagnostics == null) + { + _diagnostics = new DefaultRazorDiagnosticCollection(); + } - return this; - } - - public override RequiredAttributeDescriptorBuilder NameComparisonMode(RequiredAttributeDescriptor.NameComparisonMode nameComparison) - { - _nameComparison = nameComparison; - - return this; - } - - public override RequiredAttributeDescriptorBuilder Value(string value) - { - _value = value; - - return this; - } - - public override RequiredAttributeDescriptorBuilder ValueComparisonMode(RequiredAttributeDescriptor.ValueComparisonMode valueComparison) - { - _valueComparison = valueComparison; - - return this; - } - - public override RequiredAttributeDescriptorBuilder AddDiagnostic(RazorDiagnostic diagnostic) - { - EnsureDiagnostics(); - _diagnostics.Add(diagnostic); - - return this; + return _diagnostics; + } } public RequiredAttributeDescriptor Build() @@ -60,12 +41,12 @@ namespace Microsoft.AspNetCore.Razor.Language diagnostics.UnionWith(_diagnostics); } - var displayName = _nameComparison == RequiredAttributeDescriptor.NameComparisonMode.PrefixMatch ? string.Concat(_name, "...") : _name; + var displayName = NameComparisonMode == RequiredAttributeDescriptor.NameComparisonMode.PrefixMatch ? string.Concat(Name, "...") : Name; var rule = new DefaultRequiredAttributeDescriptor( - _name, - _nameComparison, - _value, - _valueComparison, + Name, + NameComparisonMode, + Value, + ValueComparisonMode, displayName, diagnostics?.ToArray() ?? Array.Empty()); @@ -74,7 +55,7 @@ namespace Microsoft.AspNetCore.Razor.Language private IEnumerable Validate() { - if (string.IsNullOrWhiteSpace(_name)) + if (string.IsNullOrWhiteSpace(Name)) { var diagnostic = RazorDiagnosticFactory.CreateTagHelper_InvalidTargetedAttributeNameNullOrWhitespace(); @@ -82,24 +63,16 @@ namespace Microsoft.AspNetCore.Razor.Language } else { - foreach (var character in _name) + foreach (var character in Name) { if (char.IsWhiteSpace(character) || HtmlConventions.InvalidNonWhitespaceHtmlCharacters.Contains(character)) { - var diagnostic = RazorDiagnosticFactory.CreateTagHelper_InvalidTargetedAttributeName(_name, character); + var diagnostic = RazorDiagnosticFactory.CreateTagHelper_InvalidTargetedAttributeName(Name, character); yield return diagnostic; } } } } - - private void EnsureDiagnostics() - { - if (_diagnostics == null) - { - _diagnostics = new HashSet(); - } - } } } diff --git a/src/Microsoft.AspNetCore.Razor.Language/DefaultTagHelperDescriptorBuilder.cs b/src/Microsoft.AspNetCore.Razor.Language/DefaultTagHelperDescriptorBuilder.cs index b6ff3aa015..040a957e15 100644 --- a/src/Microsoft.AspNetCore.Razor.Language/DefaultTagHelperDescriptorBuilder.cs +++ b/src/Microsoft.AspNetCore.Razor.Language/DefaultTagHelperDescriptorBuilder.cs @@ -10,31 +10,83 @@ namespace Microsoft.AspNetCore.Razor.Language internal class DefaultTagHelperDescriptorBuilder : TagHelperDescriptorBuilder { // Required values - private readonly string _kind; - private readonly string _name; - private readonly string _assemblyName; private readonly Dictionary _metadata; - private string _displayName; - private string _documentation; - private string _tagOutputHint; private HashSet _allowedChildTags; private List _attributeBuilders; private List _tagMatchingRuleBuilders; - private HashSet _diagnostics; + private DefaultRazorDiagnosticCollection _diagnostics; public DefaultTagHelperDescriptorBuilder(string kind, string name, string assemblyName) { - _kind = kind; - _name = name; - _assemblyName = assemblyName; + Kind = kind; + Name = name; + AssemblyName = assemblyName; _metadata = new Dictionary(StringComparer.Ordinal); } + public override string Name { get; } + + public override string AssemblyName { get; } + + public override string Kind { get; } + + public override string DisplayName { get; set; } + + public override ICollection AllowedChildTags + { + get + { + if (_allowedChildTags == null) + { + _allowedChildTags = new HashSet(StringComparer.OrdinalIgnoreCase); + } + + return _allowedChildTags; + } + } + + public override string TagOutputHint { get; set; } + + public override string Documentation { get; set; } + public override IDictionary Metadata => _metadata; - public override TagHelperDescriptorBuilder BindAttribute(Action configure) + public override RazorDiagnosticCollection Diagnostics + { + get + { + if (_diagnostics == null) + { + _diagnostics = new DefaultRazorDiagnosticCollection(); + } + + return _diagnostics; + } + } + + public override IReadOnlyList BoundAttributes + { + get + { + EnsureAttributeBuilders(); + + return _attributeBuilders; + } + } + + public override IReadOnlyList TagMatchingRules + { + get + { + EnsureTagMatchingRuleBuilders(); + + return _tagMatchingRuleBuilders; + } + } + + public override void BindAttribute(Action configure) { if (configure == null) { @@ -43,13 +95,12 @@ namespace Microsoft.AspNetCore.Razor.Language EnsureAttributeBuilders(); - var builder = new DefaultBoundAttributeDescriptorBuilder(this, _kind); + var builder = new DefaultBoundAttributeDescriptorBuilder(this, Kind); configure(builder); _attributeBuilders.Add(builder); - return this; } - public override TagHelperDescriptorBuilder TagMatchingRule(Action configure) + public override void TagMatchingRule(Action configure) { if (configure == null) { @@ -61,57 +112,6 @@ namespace Microsoft.AspNetCore.Razor.Language var builder = new DefaultTagMatchingRuleDescriptorBuilder(); configure(builder); _tagMatchingRuleBuilders.Add(builder); - - return this; - } - - public override TagHelperDescriptorBuilder AllowChildTag(string allowedChild) - { - EnsureAllowedChildTags(); - _allowedChildTags.Add(allowedChild); - - return this; - } - - public override TagHelperDescriptorBuilder TagOutputHint(string hint) - { - _tagOutputHint = hint; - - return this; - } - - public override TagHelperDescriptorBuilder Documentation(string documentation) - { - _documentation = documentation; - - return this; - } - - public override TagHelperDescriptorBuilder AddMetadata(string key, string value) - { - _metadata[key] = value; - - return this; - } - - public override TagHelperDescriptorBuilder AddDiagnostic(RazorDiagnostic diagnostic) - { - EnsureDiagnostics(); - _diagnostics.Add(diagnostic); - - return this; - } - - public override TagHelperDescriptorBuilder DisplayName(string displayName) - { - if (displayName == null) - { - throw new ArgumentNullException(nameof(displayName)); - } - - _displayName = displayName; - - return this; } public override TagHelperDescriptor Build() @@ -148,12 +148,12 @@ namespace Microsoft.AspNetCore.Razor.Language } var descriptor = new DefaultTagHelperDescriptor( - _kind, - _name, - _assemblyName, + Kind, + Name, + AssemblyName, GetDisplayName(), - _documentation, - _tagOutputHint, + Documentation, + TagOutputHint, tagMatchingRules, attributes, _allowedChildTags?.ToArray() ?? Array.Empty(), @@ -165,8 +165,8 @@ namespace Microsoft.AspNetCore.Razor.Language public override void Reset() { - _documentation = null; - _tagOutputHint = null; + Documentation = null; + TagOutputHint = null; _allowedChildTags?.Clear(); _attributeBuilders?.Clear(); _tagMatchingRuleBuilders?.Clear(); @@ -176,12 +176,12 @@ namespace Microsoft.AspNetCore.Razor.Language public string GetDisplayName() { - if (_displayName != null) + if (DisplayName != null) { - return _displayName; + return DisplayName; } - return this.GetTypeName() ?? _name; + return this.GetTypeName() ?? Name; } private IEnumerable Validate() @@ -227,21 +227,5 @@ namespace Microsoft.AspNetCore.Razor.Language _tagMatchingRuleBuilders = new List(); } } - - private void EnsureAllowedChildTags() - { - if (_allowedChildTags == null) - { - _allowedChildTags = new HashSet(StringComparer.OrdinalIgnoreCase); - } - } - - private void EnsureDiagnostics() - { - if (_diagnostics == null) - { - _diagnostics = new HashSet(); - } - } } } diff --git a/src/Microsoft.AspNetCore.Razor.Language/DefaultTagMatchingRuleDescriptorBuilder.cs b/src/Microsoft.AspNetCore.Razor.Language/DefaultTagMatchingRuleDescriptorBuilder.cs index 3e1a659bcf..dd690c971e 100644 --- a/src/Microsoft.AspNetCore.Razor.Language/DefaultTagMatchingRuleDescriptorBuilder.cs +++ b/src/Microsoft.AspNetCore.Razor.Language/DefaultTagMatchingRuleDescriptorBuilder.cs @@ -10,38 +10,43 @@ namespace Microsoft.AspNetCore.Razor.Language { internal class DefaultTagMatchingRuleDescriptorBuilder : TagMatchingRuleDescriptorBuilder { - private string _tagName; - private string _parentTag; - private TagStructure _tagStructure; private List _requiredAttributeBuilders; - private HashSet _diagnostics; + private DefaultRazorDiagnosticCollection _diagnostics; internal DefaultTagMatchingRuleDescriptorBuilder() { } - public override TagMatchingRuleDescriptorBuilder RequireTagName(string tagName) - { - _tagName = tagName; + public override string TagName { get; set; } - return this; + public override string ParentTag { get; set; } + + public override TagStructure TagStructure { get; set; } + + public override RazorDiagnosticCollection Diagnostics + { + get + { + if (_diagnostics == null) + { + _diagnostics = new DefaultRazorDiagnosticCollection(); + } + + return _diagnostics; + } } - public override TagMatchingRuleDescriptorBuilder RequireParentTag(string parentTag) + public override IReadOnlyList Attributes { - _parentTag = parentTag; + get + { + EnsureRequiredAttributeBuilders(); - return this; + return _requiredAttributeBuilders; + } } - public override TagMatchingRuleDescriptorBuilder RequireTagStructure(TagStructure tagStructure) - { - _tagStructure = tagStructure; - - return this; - } - - public override TagMatchingRuleDescriptorBuilder RequireAttribute(Action configure) + public override void Attribute(Action configure) { if (configure == null) { @@ -53,16 +58,6 @@ namespace Microsoft.AspNetCore.Razor.Language var builder = new DefaultRequiredAttributeDescriptorBuilder(); configure(builder); _requiredAttributeBuilders.Add(builder); - - return this; - } - - public override TagMatchingRuleDescriptorBuilder AddDiagnostic(RazorDiagnostic diagnostic) - { - EnsureDiagnostics(); - _diagnostics.Add(diagnostic); - - return this; } public TagMatchingRuleDescriptor Build() @@ -87,9 +82,9 @@ namespace Microsoft.AspNetCore.Razor.Language } var rule = new DefaultTagMatchingRuleDescriptor( - _tagName, - _parentTag, - _tagStructure, + TagName, + ParentTag, + TagStructure, requiredAttributes, diagnostics.ToArray()); @@ -98,42 +93,42 @@ namespace Microsoft.AspNetCore.Razor.Language private IEnumerable Validate() { - if (string.IsNullOrWhiteSpace(_tagName)) + if (string.IsNullOrWhiteSpace(TagName)) { var diagnostic = RazorDiagnosticFactory.CreateTagHelper_InvalidTargetedTagNameNullOrWhitespace(); yield return diagnostic; } - else if (_tagName != TagHelperMatchingConventions.ElementCatchAllName) + else if (TagName != TagHelperMatchingConventions.ElementCatchAllName) { - foreach (var character in _tagName) + foreach (var character in TagName) { if (char.IsWhiteSpace(character) || HtmlConventions.InvalidNonWhitespaceHtmlCharacters.Contains(character)) { - var diagnostic = RazorDiagnosticFactory.CreateTagHelper_InvalidTargetedTagName(_tagName, character); + var diagnostic = RazorDiagnosticFactory.CreateTagHelper_InvalidTargetedTagName(TagName, character); yield return diagnostic; } } } - if (_parentTag != null) + if (ParentTag != null) { - if (string.IsNullOrWhiteSpace(_parentTag)) + if (string.IsNullOrWhiteSpace(ParentTag)) { var diagnostic = RazorDiagnosticFactory.CreateTagHelper_InvalidTargetedParentTagNameNullOrWhitespace(); - AddDiagnostic(diagnostic); + yield return diagnostic; } else { - foreach (var character in _parentTag) + foreach (var character in ParentTag) { if (char.IsWhiteSpace(character) || HtmlConventions.InvalidNonWhitespaceHtmlCharacters.Contains(character)) { - var diagnostic = RazorDiagnosticFactory.CreateTagHelper_InvalidTargetedParentTagName(_parentTag, character); + var diagnostic = RazorDiagnosticFactory.CreateTagHelper_InvalidTargetedParentTagName(ParentTag, character); - AddDiagnostic(diagnostic); + yield return diagnostic; } } } @@ -147,13 +142,5 @@ namespace Microsoft.AspNetCore.Razor.Language _requiredAttributeBuilders = new List(); } } - - private void EnsureDiagnostics() - { - if (_diagnostics == null) - { - _diagnostics = new HashSet(); - } - } } } diff --git a/src/Microsoft.AspNetCore.Razor.Language/RequiredAttributeDescriptorBuilder.cs b/src/Microsoft.AspNetCore.Razor.Language/RequiredAttributeDescriptorBuilder.cs index 77f91eacff..5cf368422f 100644 --- a/src/Microsoft.AspNetCore.Razor.Language/RequiredAttributeDescriptorBuilder.cs +++ b/src/Microsoft.AspNetCore.Razor.Language/RequiredAttributeDescriptorBuilder.cs @@ -5,14 +5,14 @@ namespace Microsoft.AspNetCore.Razor.Language { public abstract class RequiredAttributeDescriptorBuilder { - public abstract RequiredAttributeDescriptorBuilder Name(string name); + public abstract string Name { get; set; } - public abstract RequiredAttributeDescriptorBuilder NameComparisonMode(RequiredAttributeDescriptor.NameComparisonMode nameComparison); + public abstract RequiredAttributeDescriptor.NameComparisonMode NameComparisonMode { get; set; } - public abstract RequiredAttributeDescriptorBuilder Value(string value); + public abstract string Value { get; set; } - public abstract RequiredAttributeDescriptorBuilder ValueComparisonMode(RequiredAttributeDescriptor.ValueComparisonMode valueComparison); + public abstract RequiredAttributeDescriptor.ValueComparisonMode ValueComparisonMode { get; set; } - public abstract RequiredAttributeDescriptorBuilder AddDiagnostic(RazorDiagnostic diagnostic); + public abstract RazorDiagnosticCollection Diagnostics { get; } } } diff --git a/src/Microsoft.AspNetCore.Razor.Language/TagHelperDescriptorBuilder.cs b/src/Microsoft.AspNetCore.Razor.Language/TagHelperDescriptorBuilder.cs index c1ffa0f0e7..000c4844d5 100644 --- a/src/Microsoft.AspNetCore.Razor.Language/TagHelperDescriptorBuilder.cs +++ b/src/Microsoft.AspNetCore.Razor.Language/TagHelperDescriptorBuilder.cs @@ -42,23 +42,31 @@ namespace Microsoft.AspNetCore.Razor.Language return new DefaultTagHelperDescriptorBuilder(kind, name, assemblyName); } + public abstract string Name { get; } + + public abstract string AssemblyName { get; } + + public abstract string Kind { get; } + + public abstract string DisplayName { get; set; } + + public abstract string TagOutputHint { get; set; } + + public abstract string Documentation { get; set; } + + public abstract ICollection AllowedChildTags { get; } + public abstract IDictionary Metadata { get; } - public abstract TagHelperDescriptorBuilder BindAttribute(Action configure); + public abstract RazorDiagnosticCollection Diagnostics { get; } - public abstract TagHelperDescriptorBuilder TagMatchingRule(Action configure); + public abstract IReadOnlyList BoundAttributes { get; } - public abstract TagHelperDescriptorBuilder AllowChildTag(string allowedChild); + public abstract IReadOnlyList TagMatchingRules { get; } - public abstract TagHelperDescriptorBuilder TagOutputHint(string hint); + public abstract void BindAttribute(Action configure); - public abstract TagHelperDescriptorBuilder Documentation(string documentation); - - public abstract TagHelperDescriptorBuilder AddMetadata(string key, string value); - - public abstract TagHelperDescriptorBuilder AddDiagnostic(RazorDiagnostic diagnostic); - - public abstract TagHelperDescriptorBuilder DisplayName(string displayName); + public abstract void TagMatchingRule(Action configure); public abstract TagHelperDescriptor Build(); diff --git a/src/Microsoft.AspNetCore.Razor.Language/TagHelperDescriptorBuilderExtensions.cs b/src/Microsoft.AspNetCore.Razor.Language/TagHelperDescriptorBuilderExtensions.cs index 3e7edf25e6..e691035561 100644 --- a/src/Microsoft.AspNetCore.Razor.Language/TagHelperDescriptorBuilderExtensions.cs +++ b/src/Microsoft.AspNetCore.Razor.Language/TagHelperDescriptorBuilderExtensions.cs @@ -7,7 +7,7 @@ namespace Microsoft.AspNetCore.Razor.Language { public static class TagHelperDescriptorBuilderExtensions { - public static TagHelperDescriptorBuilder SetTypeName(this TagHelperDescriptorBuilder builder, string typeName) + public static void SetTypeName(this TagHelperDescriptorBuilder builder, string typeName) { if (builder == null) { @@ -19,9 +19,7 @@ namespace Microsoft.AspNetCore.Razor.Language throw new ArgumentNullException(nameof(typeName)); } - builder.AddMetadata(TagHelperMetadata.Common.TypeName, typeName); - - return builder; + builder.Metadata[TagHelperMetadata.Common.TypeName] = typeName; } public static string GetTypeName(this TagHelperDescriptorBuilder builder) diff --git a/src/Microsoft.AspNetCore.Razor.Language/TagMatchingRuleDescriptorBuilder.cs b/src/Microsoft.AspNetCore.Razor.Language/TagMatchingRuleDescriptorBuilder.cs index d3cab36921..49d2526cb3 100644 --- a/src/Microsoft.AspNetCore.Razor.Language/TagMatchingRuleDescriptorBuilder.cs +++ b/src/Microsoft.AspNetCore.Razor.Language/TagMatchingRuleDescriptorBuilder.cs @@ -2,19 +2,22 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; +using System.Collections.Generic; namespace Microsoft.AspNetCore.Razor.Language { public abstract class TagMatchingRuleDescriptorBuilder { - public abstract TagMatchingRuleDescriptorBuilder RequireTagName(string tagName); + public abstract string TagName { get; set; } - public abstract TagMatchingRuleDescriptorBuilder RequireParentTag(string parentTag); + public abstract string ParentTag { get; set; } - public abstract TagMatchingRuleDescriptorBuilder RequireTagStructure(TagStructure tagStructure); + public abstract TagStructure TagStructure { get; set; } - public abstract TagMatchingRuleDescriptorBuilder RequireAttribute(Action configure); + public abstract RazorDiagnosticCollection Diagnostics { get; } - public abstract TagMatchingRuleDescriptorBuilder AddDiagnostic(RazorDiagnostic diagnostic); + public abstract IReadOnlyList Attributes { get; } + + public abstract void Attribute(Action configure); } } diff --git a/src/Microsoft.CodeAnalysis.Razor/DefaultTagHelperDescriptorFactory.cs b/src/Microsoft.CodeAnalysis.Razor/DefaultTagHelperDescriptorFactory.cs index df48066986..e660e4fce6 100644 --- a/src/Microsoft.CodeAnalysis.Razor/DefaultTagHelperDescriptorFactory.cs +++ b/src/Microsoft.CodeAnalysis.Razor/DefaultTagHelperDescriptorFactory.cs @@ -90,7 +90,7 @@ namespace Microsoft.CodeAnalysis.Razor descriptorBuilder.TagMatchingRule(ruleBuilder => { var htmlCasedName = HtmlConventions.ToHtmlCase(name); - ruleBuilder.RequireTagName(htmlCasedName); + ruleBuilder.TagName = htmlCasedName; }); return; @@ -101,13 +101,13 @@ namespace Microsoft.CodeAnalysis.Razor descriptorBuilder.TagMatchingRule(ruleBuilder => { var tagName = HtmlTargetElementAttribute_Tag(targetElementAttribute); - ruleBuilder.RequireTagName(tagName); + ruleBuilder.TagName = tagName; var parentTag = HtmlTargetElementAttribute_ParentTag(targetElementAttribute); - ruleBuilder.RequireParentTag(parentTag); + ruleBuilder.ParentTag = parentTag; var tagStructure = HtmlTargetElementAttribute_TagStructure(targetElementAttribute); - ruleBuilder.RequireTagStructure(tagStructure); + ruleBuilder.TagStructure = tagStructure; var requiredAttributeString = HtmlTargetElementAttribute_Attributes(targetElementAttribute); RequiredAttributeParser.AddRequiredAttributes(requiredAttributeString, ruleBuilder); @@ -140,13 +140,13 @@ namespace Microsoft.CodeAnalysis.Razor return; } - builder.AllowChildTag((string)restrictChildrenAttribute.ConstructorArguments[0].Value); + builder.AllowedChildTags.Add((string)restrictChildrenAttribute.ConstructorArguments[0].Value); if (restrictChildrenAttribute.ConstructorArguments.Length == 2) { foreach (var value in restrictChildrenAttribute.ConstructorArguments[1].Values) { - builder.AllowChildTag((string)value.Value); + builder.AllowedChildTags.Add((string)value.Value); } } } @@ -162,7 +162,7 @@ namespace Microsoft.CodeAnalysis.Razor if (!string.IsNullOrEmpty(xml)) { - builder.Documentation(xml); + builder.Documentation = xml; } } @@ -177,7 +177,7 @@ namespace Microsoft.CodeAnalysis.Razor if (outputElementHintAttribute != null) { outputElementHint = (string)(outputElementHintAttribute.ConstructorArguments[0]).Value; - builder.TagOutputHint(outputElementHint); + builder.TagOutputHint = outputElementHint; } } @@ -208,17 +208,16 @@ namespace Microsoft.CodeAnalysis.Razor var hasPublicSetter = property.SetMethod != null && property.SetMethod.DeclaredAccessibility == Accessibility.Public; var typeName = GetFullName(property.Type); - builder - .TypeName(typeName) - .SetPropertyName(property.Name); + builder.TypeName = typeName; + builder.SetPropertyName(property.Name); if (hasPublicSetter) { - builder.Name(attributeName); + builder.Name = attributeName; if (property.Type.TypeKind == TypeKind.Enum) { - builder.AsEnum(); + builder.IsEnum = true; } if (DesignTime) @@ -227,7 +226,7 @@ namespace Microsoft.CodeAnalysis.Razor if (!string.IsNullOrEmpty(xml)) { - builder.Documentation(xml); + builder.Documentation = xml; } } } @@ -235,18 +234,18 @@ namespace Microsoft.CodeAnalysis.Razor { // Specified HtmlAttributeNameAttribute.Name though property has no public setter. var diagnostic = RazorDiagnosticFactory.CreateTagHelper_InvalidAttributeNameNullOrEmpty(GetFullName(containingType), property.Name); - builder.AddDiagnostic(diagnostic); + builder.Diagnostics.Add(diagnostic); } ConfigureDictionaryBoundAttribute(builder, property, containingType, attributeNameAttribute, attributeName, hasPublicSetter); } private void ConfigureDictionaryBoundAttribute( - BoundAttributeDescriptorBuilder builder, - IPropertySymbol property, - INamedTypeSymbol containingType, - AttributeData attributeNameAttribute, - string attributeName, + BoundAttributeDescriptorBuilder builder, + IPropertySymbol property, + INamedTypeSymbol containingType, + AttributeData attributeNameAttribute, + string attributeName, bool hasPublicSetter) { string dictionaryAttributePrefix = null; @@ -291,7 +290,7 @@ namespace Microsoft.CodeAnalysis.Razor // DictionaryAttributePrefix is not supported unless associated with an // IDictionary property. var diagnostic = RazorDiagnosticFactory.CreateTagHelper_InvalidAttributePrefixNotNull(GetFullName(containingType), property.Name); - builder.AddDiagnostic(diagnostic); + builder.Diagnostics.Add(diagnostic); } return; @@ -301,7 +300,7 @@ namespace Microsoft.CodeAnalysis.Razor // Must set DictionaryAttributePrefix when using HtmlAttributeNameAttribute with a dictionary property // that lacks a public setter. var diagnostic = RazorDiagnosticFactory.CreateTagHelper_InvalidAttributePrefixNull(GetFullName(containingType), property.Name); - builder.AddDiagnostic(diagnostic); + builder.Diagnostics.Add(diagnostic); return; } diff --git a/src/Microsoft.CodeAnalysis.Razor/RequiredAttributeParser.cs b/src/Microsoft.CodeAnalysis.Razor/RequiredAttributeParser.cs index 1946a723b5..898e065439 100644 --- a/src/Microsoft.CodeAnalysis.Razor/RequiredAttributeParser.cs +++ b/src/Microsoft.CodeAnalysis.Razor/RequiredAttributeParser.cs @@ -59,7 +59,7 @@ namespace Microsoft.CodeAnalysis.Razor do { var successfulParse = true; - ruleBuilder.RequireAttribute(attributeBuilder => + ruleBuilder.Attribute(attributeBuilder => { if (At('[')) { @@ -89,7 +89,7 @@ namespace Microsoft.CodeAnalysis.Razor else if (!AtEnd) { var diagnostic = RazorDiagnosticFactory.CreateTagHelper_InvalidRequiredAttributeCharacter(Current, _requiredAttributes); - attributeBuilder.AddDiagnostic(diagnostic); + attributeBuilder.Diagnostics.Add(diagnostic); successfulParse = false; return; } @@ -130,8 +130,8 @@ namespace Microsoft.CodeAnalysis.Razor } } - attributeBuilder.Name(attributeName); - attributeBuilder.NameComparisonMode(nameComparison); + attributeBuilder.Name = attributeName; + attributeBuilder.NameComparisonMode = nameComparison; } private void ParseCssAttributeName(RequiredAttributeDescriptorBuilder builder) @@ -143,7 +143,7 @@ namespace Microsoft.CodeAnalysis.Razor var attributeName = _requiredAttributes.Substring(nameStartIndex, nameEndIndex - nameStartIndex); - builder.Name(attributeName); + builder.Name = attributeName; } private bool TryParseCssValueComparison(RequiredAttributeDescriptorBuilder builder, out RequiredAttributeDescriptor.ValueComparisonMode valueComparison) @@ -163,7 +163,7 @@ namespace Microsoft.CodeAnalysis.Razor else if (op != '=') // We're at an incomplete operator (ex: [foo^] { var diagnostic = RazorDiagnosticFactory.CreateTagHelper_PartialRequiredAttributeOperator(op, _requiredAttributes); - builder.AddDiagnostic(diagnostic); + builder.Diagnostics.Add(diagnostic); return false; } @@ -171,12 +171,12 @@ namespace Microsoft.CodeAnalysis.Razor else if (!At(']')) { var diagnostic = RazorDiagnosticFactory.CreateTagHelper_InvalidRequiredAttributeOperator(Current, _requiredAttributes); - builder.AddDiagnostic(diagnostic); + builder.Diagnostics.Add(diagnostic); return false; } - builder.ValueComparisonMode(valueComparison); + builder.ValueComparisonMode = valueComparison; return true; } @@ -197,7 +197,7 @@ namespace Microsoft.CodeAnalysis.Razor if (valueEnd == -1) { var diagnostic = RazorDiagnosticFactory.CreateTagHelper_InvalidRequiredAttributeMismatchedQuotes(quote, _requiredAttributes); - builder.AddDiagnostic(diagnostic); + builder.Diagnostics.Add(diagnostic); return false; } @@ -213,7 +213,7 @@ namespace Microsoft.CodeAnalysis.Razor var value = _requiredAttributes.Substring(valueStart, valueEnd - valueStart); - builder.Value(value); + builder.Value = value; return true; } @@ -263,12 +263,12 @@ namespace Microsoft.CodeAnalysis.Razor else if (AtEnd) { var diagnostic = RazorDiagnosticFactory.CreateTagHelper_CouldNotFindMatchingEndBrace(_requiredAttributes); - attributeBuilder.AddDiagnostic(diagnostic); + attributeBuilder.Diagnostics.Add(diagnostic); } else { var diagnostic = RazorDiagnosticFactory.CreateTagHelper_InvalidRequiredAttributeCharacter(Current, _requiredAttributes); - attributeBuilder.AddDiagnostic(diagnostic); + attributeBuilder.Diagnostics.Add(diagnostic); } return false; @@ -279,7 +279,7 @@ namespace Microsoft.CodeAnalysis.Razor if (AtEnd) { var diagnostic = RazorDiagnosticFactory.CreateTagHelper_CouldNotFindMatchingEndBrace(_requiredAttributes); - builder.AddDiagnostic(diagnostic); + builder.Diagnostics.Add(diagnostic); return false; } diff --git a/src/Microsoft.VisualStudio.LanguageServices.Razor/TagHelperDescriptorJsonConverter.cs b/src/Microsoft.VisualStudio.LanguageServices.Razor/TagHelperDescriptorJsonConverter.cs index 572459e707..563060ceec 100644 --- a/src/Microsoft.VisualStudio.LanguageServices.Razor/TagHelperDescriptorJsonConverter.cs +++ b/src/Microsoft.VisualStudio.LanguageServices.Razor/TagHelperDescriptorJsonConverter.cs @@ -41,9 +41,8 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor var builder = TagHelperDescriptorBuilder.Create(typeName, assemblyName); - builder - .Documentation(documentation) - .TagOutputHint(tagOutputHint); + builder.Documentation = documentation; + builder.TagOutputHint = tagOutputHint; foreach (var tagMatchingRule in tagMatchingRules) { @@ -60,21 +59,21 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor foreach (var childTag in childTags) { var tagValue = childTag.Value(); - builder.AllowChildTag(tagValue); + builder.AllowedChildTags.Add(tagValue); } foreach (var diagnostic in diagnostics) { var diagnosticReader = diagnostic.CreateReader(); var diagnosticObject = serializer.Deserialize(diagnosticReader); - builder.AddDiagnostic(diagnosticObject); + builder.Diagnostics.Add(diagnosticObject); } var metadataReader = metadata.CreateReader(); var metadataValue = serializer.Deserialize>(metadataReader); foreach (var item in metadataValue) { - builder.AddMetadata(item.Key, item.Value); + builder.Metadata[item.Key] = item.Value; } return builder.Build(); @@ -95,22 +94,21 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor var tagStructure = rule[nameof(TagMatchingRuleDescriptor.TagStructure)].Value(); var diagnostics = rule[nameof(TagMatchingRuleDescriptor.Diagnostics)].Value(); - builder - .RequireTagName(tagName) - .RequireParentTag(parentTag) - .RequireTagStructure((TagStructure)tagStructure); + builder.TagName = tagName; + builder.ParentTag = parentTag; + builder.TagStructure = (TagStructure)tagStructure; foreach (var attribute in attributes) { var attibuteValue = attribute.Value(); - builder.RequireAttribute(b => ReadRequiredAttribute(b, attibuteValue, serializer)); + builder.Attribute(b => ReadRequiredAttribute(b, attibuteValue, serializer)); } foreach (var diagnostic in diagnostics) { var diagnosticReader = diagnostic.CreateReader(); var diagnosticObject = serializer.Deserialize(diagnosticReader); - builder.AddDiagnostic(diagnosticObject); + builder.Diagnostics.Add(diagnosticObject); } } @@ -122,17 +120,16 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor var valueComparison = attribute[nameof(RequiredAttributeDescriptor.ValueComparison)].Value(); var diagnostics = attribute[nameof(RequiredAttributeDescriptor.Diagnostics)].Value(); - builder - .Name(name) - .NameComparisonMode((RequiredAttributeDescriptor.NameComparisonMode)nameComparison) - .Value(value) - .ValueComparisonMode((RequiredAttributeDescriptor.ValueComparisonMode)valueComparison); + builder.Name = name; + builder.NameComparisonMode = (RequiredAttributeDescriptor.NameComparisonMode)nameComparison; + builder.Value = value; + builder.ValueComparisonMode = (RequiredAttributeDescriptor.ValueComparisonMode)valueComparison; foreach (var diagnostic in diagnostics) { var diagnosticReader = diagnostic.CreateReader(); var diagnosticObject = serializer.Deserialize(diagnosticReader); - builder.AddDiagnostic(diagnosticObject); + builder.Diagnostics.Add(diagnosticObject); } } @@ -148,10 +145,9 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor var diagnostics = attribute[nameof(BoundAttributeDescriptor.Diagnostics)].Value(); var metadata = attribute[nameof(BoundAttributeDescriptor.Metadata)].Value(); - builder - .Name(name) - .TypeName(typeName) - .Documentation(documentation); + builder.Name = name; + builder.TypeName = typeName; + builder.Documentation = documentation; if (indexerNamePrefix != null) { @@ -160,21 +156,21 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor if (isEnum) { - builder.AsEnum(); + builder.IsEnum = true; } foreach (var diagnostic in diagnostics) { var diagnosticReader = diagnostic.CreateReader(); var diagnosticObject = serializer.Deserialize(diagnosticReader); - builder.AddDiagnostic(diagnosticObject); + builder.Diagnostics.Add(diagnosticObject); } var metadataReader = metadata.CreateReader(); var metadataValue = serializer.Deserialize>(metadataReader); foreach (var item in metadataValue) { - builder.AddMetadata(item.Key, item.Value); + builder.Metadata[item.Key] = item.Value; } } } diff --git a/test/Microsoft.AspNetCore.Mvc.Razor.Extensions.Test/IntegrationTests/InstrumentationPassIntegrationTest.cs b/test/Microsoft.AspNetCore.Mvc.Razor.Extensions.Test/IntegrationTests/InstrumentationPassIntegrationTest.cs index 1ce20724f2..5907c3c104 100644 --- a/test/Microsoft.AspNetCore.Mvc.Razor.Extensions.Test/IntegrationTests/InstrumentationPassIntegrationTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.Razor.Extensions.Test/IntegrationTests/InstrumentationPassIntegrationTest.cs @@ -78,11 +78,11 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions.IntegrationTests { foreach (var attributeBuilder in attributes) { - builder.BindAttribute(attributeBuilder); + builder.BoundAttributeDescriptor(attributeBuilder); } } - builder.TagMatchingRule(ruleBuilder => ruleBuilder.RequireTagName(tagName)); + builder.TagMatchingRuleDescriptor(ruleBuilder => ruleBuilder.RequireTagName(tagName)); var descriptor = builder.Build(); diff --git a/test/Microsoft.AspNetCore.Mvc.Razor.Extensions.Test/ModelExpressionPassTest.cs b/test/Microsoft.AspNetCore.Mvc.Razor.Extensions.Test/ModelExpressionPassTest.cs index b44515e3a8..a0d7072407 100644 --- a/test/Microsoft.AspNetCore.Mvc.Razor.Extensions.Test/ModelExpressionPassTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.Razor.Extensions.Test/ModelExpressionPassTest.cs @@ -24,11 +24,11 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions var tagHelpers = new[] { TagHelperDescriptorBuilder.Create("TestTagHelper", "TestAssembly") - .BindAttribute(attribute => + .BoundAttributeDescriptor(attribute => attribute .Name("Foo") .TypeName("System.Int32")) - .TagMatchingRule(rule => + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("p")) .Build() }; @@ -65,11 +65,11 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions var tagHelpers = new[] { TagHelperDescriptorBuilder.Create("TestTagHelper", "TestAssembly") - .BindAttribute(attribute => + .BoundAttributeDescriptor(attribute => attribute .Name("Foo") .TypeName("Microsoft.AspNetCore.Mvc.ViewFeatures.ModelExpression")) - .TagMatchingRule(rule => + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("p")) .Build() }; @@ -110,11 +110,11 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions var tagHelpers = new[] { TagHelperDescriptorBuilder.Create("TestTagHelper", "TestAssembly") - .BindAttribute(attribute => + .BoundAttributeDescriptor(attribute => attribute .Name("Foo") .TypeName("Microsoft.AspNetCore.Mvc.ViewFeatures.ModelExpression")) - .TagMatchingRule(rule => + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("p")) .Build() }; diff --git a/test/Microsoft.AspNetCore.Mvc.Razor.Extensions.Test/TagHelperDescriptorExtensionsTest.cs b/test/Microsoft.AspNetCore.Mvc.Razor.Extensions.Test/TagHelperDescriptorExtensionsTest.cs index 7fea99dae3..552ac900b4 100644 --- a/test/Microsoft.AspNetCore.Mvc.Razor.Extensions.Test/TagHelperDescriptorExtensionsTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.Razor.Extensions.Test/TagHelperDescriptorExtensionsTest.cs @@ -63,7 +63,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions private static TagHelperDescriptor CreateTagHelperDescriptor() { var descriptor = TagHelperDescriptorBuilder.Create("TypeName", "AssemblyName") - .TagMatchingRule(rule => rule.RequireTagName("tag-name")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("tag-name")) .Build(); return descriptor; @@ -72,7 +72,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions private static TagHelperDescriptor CreateViewComponentTagHelperDescriptor(string name = "ViewComponentName") { var descriptor = TagHelperDescriptorBuilder.Create(ViewComponentTagHelperConventions.Kind, "TypeName", "AssemblyName") - .TagMatchingRule(rule => rule.RequireTagName("tag-name")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("tag-name")) .AddMetadata(ViewComponentTagHelperMetadata.Name, name) .Build(); diff --git a/test/Microsoft.AspNetCore.Mvc.Razor.Extensions.Test/ViewComponentTagHelperDescriptorFactoryTest.cs b/test/Microsoft.AspNetCore.Mvc.Razor.Extensions.Test/ViewComponentTagHelperDescriptorFactoryTest.cs index b4996badc1..d545b62abe 100644 --- a/test/Microsoft.AspNetCore.Mvc.Razor.Extensions.Test/ViewComponentTagHelperDescriptorFactoryTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.Razor.Extensions.Test/ViewComponentTagHelperDescriptorFactoryTest.cs @@ -28,18 +28,18 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions typeof(StringParameterViewComponent).GetTypeInfo().Assembly.GetName().Name) .TypeName("__Generated__StringParameterViewComponentTagHelper") .DisplayName("StringParameterViewComponentTagHelper") - .TagMatchingRule(rule => + .TagMatchingRuleDescriptor(rule => rule .RequireTagName("vc:string-parameter") - .RequireAttribute(attribute => attribute.Name("foo")) - .RequireAttribute(attribute => attribute.Name("bar"))) - .BindAttribute(attribute => + .RequireAttributeDescriptor(attribute => attribute.Name("foo")) + .RequireAttributeDescriptor(attribute => attribute.Name("bar"))) + .BoundAttributeDescriptor(attribute => attribute .Name("foo") .PropertyName("foo") .TypeName(typeof(string).FullName) .DisplayName("string StringParameterViewComponentTagHelper.foo")) - .BindAttribute(attribute => + .BoundAttributeDescriptor(attribute => attribute .Name("bar") .PropertyName("bar") @@ -69,26 +69,26 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions typeof(VariousParameterViewComponent).GetTypeInfo().Assembly.GetName().Name) .TypeName("__Generated__VariousParameterViewComponentTagHelper") .DisplayName("VariousParameterViewComponentTagHelper") - .TagMatchingRule(rule => + .TagMatchingRuleDescriptor(rule => rule .RequireTagName("vc:various-parameter") - .RequireAttribute(attribute => attribute.Name("test-enum")) - .RequireAttribute(attribute => attribute.Name("test-string")) - .RequireAttribute(attribute => attribute.Name("baz"))) - .BindAttribute(attribute => + .RequireAttributeDescriptor(attribute => attribute.Name("test-enum")) + .RequireAttributeDescriptor(attribute => attribute.Name("test-string")) + .RequireAttributeDescriptor(attribute => attribute.Name("baz"))) + .BoundAttributeDescriptor(attribute => attribute .Name("test-enum") .PropertyName("testEnum") .TypeName(typeof(VariousParameterViewComponent).FullName + "." + nameof(VariousParameterViewComponent.TestEnum)) .AsEnum() .DisplayName(typeof(VariousParameterViewComponent).FullName + "." + nameof(VariousParameterViewComponent.TestEnum) + " VariousParameterViewComponentTagHelper.testEnum")) - .BindAttribute(attribute => + .BoundAttributeDescriptor(attribute => attribute .Name("test-string") .PropertyName("testString") .TypeName(typeof(string).FullName) .DisplayName("string VariousParameterViewComponentTagHelper.testString")) - .BindAttribute(attribute => + .BoundAttributeDescriptor(attribute => attribute .Name("baz") .PropertyName("baz") @@ -118,22 +118,22 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions typeof(GenericParameterViewComponent).GetTypeInfo().Assembly.GetName().Name) .TypeName("__Generated__GenericParameterViewComponentTagHelper") .DisplayName("GenericParameterViewComponentTagHelper") - .TagMatchingRule(rule => + .TagMatchingRuleDescriptor(rule => rule .RequireTagName("vc:generic-parameter") - .RequireAttribute(attribute => attribute.Name("foo"))) - .BindAttribute(attribute => + .RequireAttributeDescriptor(attribute => attribute.Name("foo"))) + .BoundAttributeDescriptor(attribute => attribute .Name("foo") .PropertyName("Foo") .TypeName("System.Collections.Generic.List") .DisplayName("System.Collections.Generic.List GenericParameterViewComponentTagHelper.Foo")) - .BindAttribute(attribute => + .BoundAttributeDescriptor(attribute => attribute .Name("bar") .PropertyName("Bar") .TypeName("System.Collections.Generic.Dictionary") - .AsDictionary("bar-", typeof(int).FullName) + .AsDictionaryAttribute("bar-", typeof(int).FullName) .DisplayName("System.Collections.Generic.Dictionary GenericParameterViewComponentTagHelper.Bar")) .AddMetadata(ViewComponentTagHelperMetadata.Name, "GenericParameter") .Build(); diff --git a/test/Microsoft.AspNetCore.Mvc.Razor.Extensions.Test/ViewComponentTagHelperDescriptorProviderTest.cs b/test/Microsoft.AspNetCore.Mvc.Razor.Extensions.Test/ViewComponentTagHelperDescriptorProviderTest.cs index cc2e0da6cf..3d156cb804 100644 --- a/test/Microsoft.AspNetCore.Mvc.Razor.Extensions.Test/ViewComponentTagHelperDescriptorProviderTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.Razor.Extensions.Test/ViewComponentTagHelperDescriptorProviderTest.cs @@ -44,18 +44,18 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions TestCompilation.AssemblyName) .TypeName("__Generated__StringParameterViewComponentTagHelper") .DisplayName("StringParameterViewComponentTagHelper") - .TagMatchingRule(rule => + .TagMatchingRuleDescriptor(rule => rule .RequireTagName("vc:string-parameter") - .RequireAttribute(attribute => attribute.Name("foo")) - .RequireAttribute(attribute => attribute.Name("bar"))) - .BindAttribute(attribute => + .RequireAttributeDescriptor(attribute => attribute.Name("foo")) + .RequireAttributeDescriptor(attribute => attribute.Name("bar"))) + .BoundAttributeDescriptor(attribute => attribute .Name("foo") .PropertyName("foo") .TypeName(typeof(string).FullName) .DisplayName("string StringParameterViewComponentTagHelper.foo")) - .BindAttribute(attribute => + .BoundAttributeDescriptor(attribute => attribute .Name("bar") .PropertyName("bar") diff --git a/test/Microsoft.AspNetCore.Mvc.Razor.Extensions.Test/ViewComponentTagHelperPassTest.cs b/test/Microsoft.AspNetCore.Mvc.Razor.Extensions.Test/ViewComponentTagHelperPassTest.cs index 52f22cb8ff..ad2b3508ab 100644 --- a/test/Microsoft.AspNetCore.Mvc.Razor.Extensions.Test/ViewComponentTagHelperPassTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.Razor.Extensions.Test/ViewComponentTagHelperPassTest.cs @@ -22,10 +22,10 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions var tagHelpers = new[] { TagHelperDescriptorBuilder.Create("TestTagHelper", "TestAssembly") - .BindAttribute(attribute => attribute + .BoundAttributeDescriptor(attribute => attribute .Name("Foo") .TypeName("System.Int32")) - .TagMatchingRule(rule => rule.RequireTagName("p")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("p")) .Build() }; @@ -60,11 +60,11 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions var tagHelpers = new[] { TagHelperDescriptorBuilder.Create(ViewComponentTagHelperConventions.Kind, "TestTagHelper", "TestAssembly") - .BindAttribute(attribute => attribute + .BoundAttributeDescriptor(attribute => attribute .Name("Foo") .TypeName("System.Int32") .PropertyName("Foo")) - .TagMatchingRule(rule => rule.RequireTagName("tagcloud")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("tagcloud")) .AddMetadata(ViewComponentTagHelperMetadata.Name, "TagCloud") .Build() }; @@ -130,12 +130,12 @@ public class __Generated__TagCloudViewComponentTagHelper : Microsoft.AspNetCore. var tagHelpers = new[] { TagHelperDescriptorBuilder.Create(ViewComponentTagHelperConventions.Kind, "TestTagHelper", "TestAssembly") - .BindAttribute(attribute => attribute + .BoundAttributeDescriptor(attribute => attribute .Name("Foo") .TypeName("System.Collections.Generic.Dictionary") .PropertyName("Tags") - .AsDictionary("foo-", "System.Int32")) - .TagMatchingRule(rule => rule.RequireTagName("tagcloud")) + .AsDictionaryAttribute("foo-", "System.Int32")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("tagcloud")) .AddMetadata(ViewComponentTagHelperMetadata.Name, "TagCloud") .Build() }; @@ -202,19 +202,19 @@ public class __Generated__TagCloudViewComponentTagHelper : Microsoft.AspNetCore. { TagHelperDescriptorBuilder.Create("PTestTagHelper", "TestAssembly") .TypeName("PTestTagHelper") - .BindAttribute(attribute => + .BoundAttributeDescriptor(attribute => attribute .Name("Foo") .TypeName("System.Int32")) - .TagMatchingRule(rule => + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("p")) .Build(), TagHelperDescriptorBuilder.Create(ViewComponentTagHelperConventions.Kind, "TestTagHelper", "TestAssembly") - .BindAttribute(attribute => attribute + .BoundAttributeDescriptor(attribute => attribute .Name("Foo") .TypeName("System.Int32") .PropertyName("Foo")) - .TagMatchingRule(rule => rule.RequireTagName("tagcloud")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("tagcloud")) .AddMetadata(ViewComponentTagHelperMetadata.Name, "TagCloud") .Build() }; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/CodeGeneration/DesignTimeTagHelperWriterTest.cs b/test/Microsoft.AspNetCore.Razor.Language.Test/CodeGeneration/DesignTimeTagHelperWriterTest.cs index ddea3bcecf..35e9d0a1f5 100644 --- a/test/Microsoft.AspNetCore.Razor.Language.Test/CodeGeneration/DesignTimeTagHelperWriterTest.cs +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/CodeGeneration/DesignTimeTagHelperWriterTest.cs @@ -162,7 +162,7 @@ __InputTagHelper.FooProp = 42; .Name("bound") .PropertyName("FooProp") .TypeName("System.Collections.Generic.Dictionary") - .AsDictionary("foo-", "System.Int32"), + .AsDictionaryAttribute("foo-", "System.Int32"), }) }; var engine = RazorEngine.Create(builder => builder.AddTagHelpers(descriptors)); @@ -253,11 +253,11 @@ __InputTagHelper.FooProp[""bound""] = 42; { foreach (var attributeBuilder in attributes) { - builder.BindAttribute(attributeBuilder); + builder.BoundAttributeDescriptor(attributeBuilder); } } - builder.TagMatchingRule(ruleBuilder => ruleBuilder.RequireTagName(tagName)); + builder.TagMatchingRuleDescriptor(ruleBuilder => ruleBuilder.RequireTagName(tagName)); var descriptor = builder.Build(); diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/CodeGeneration/RuntimeTagHelperWriterTest.cs b/test/Microsoft.AspNetCore.Razor.Language.Test/CodeGeneration/RuntimeTagHelperWriterTest.cs index b49fd37571..e1cc2a1b3b 100644 --- a/test/Microsoft.AspNetCore.Razor.Language.Test/CodeGeneration/RuntimeTagHelperWriterTest.cs +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/CodeGeneration/RuntimeTagHelperWriterTest.cs @@ -394,7 +394,7 @@ __tagHelperExecutionContext.AddTagHelperAttribute(""bound"", __InputTagHelper.Fo .Name("bound") .PropertyName("FooProp") .TypeName("System.Collections.Generic.Dictionary") - .AsDictionary("foo-", "System.Int32"), + .AsDictionaryAttribute("foo-", "System.Int32"), }) }; var engine = RazorEngine.Create(builder => builder.AddTagHelpers(descriptors)); @@ -489,11 +489,11 @@ __tagHelperExecutionContext.AddTagHelperAttribute(""foo-bound"", __InputTagHelpe { foreach (var attributeBuilder in attributes) { - builder.BindAttribute(attributeBuilder); + builder.BoundAttributeDescriptor(attributeBuilder); } } - builder.TagMatchingRule(ruleBuilder => ruleBuilder.RequireTagName(tagName)); + builder.TagMatchingRuleDescriptor(ruleBuilder => ruleBuilder.RequireTagName(tagName)); var descriptor = builder.Build(); diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/DefaultRazorIntermediateNodeLoweringPhaseIntegrationTest.cs b/test/Microsoft.AspNetCore.Razor.Language.Test/DefaultRazorIntermediateNodeLoweringPhaseIntegrationTest.cs index accd49fd3c..711e3bf153 100644 --- a/test/Microsoft.AspNetCore.Razor.Language.Test/DefaultRazorIntermediateNodeLoweringPhaseIntegrationTest.cs +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/DefaultRazorIntermediateNodeLoweringPhaseIntegrationTest.cs @@ -482,11 +482,11 @@ namespace Microsoft.AspNetCore.Razor.Language { foreach (var attributeBuilder in attributes) { - builder.BindAttribute(attributeBuilder); + builder.BoundAttributeDescriptor(attributeBuilder); } } - builder.TagMatchingRule(ruleBuilder => ruleBuilder.RequireTagName(tagName)); + builder.TagMatchingRuleDescriptor(ruleBuilder => ruleBuilder.RequireTagName(tagName)); var descriptor = builder.Build(); diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/DefaultRazorTagHelperBinderPhaseTest.cs b/test/Microsoft.AspNetCore.Razor.Language.Test/DefaultRazorTagHelperBinderPhaseTest.cs index 78c89df6df..281c977fb8 100644 --- a/test/Microsoft.AspNetCore.Razor.Language.Test/DefaultRazorTagHelperBinderPhaseTest.cs +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/DefaultRazorTagHelperBinderPhaseTest.cs @@ -204,11 +204,11 @@ namespace Microsoft.AspNetCore.Razor.Language ruleBuilders: new Action[] { ruleBuilder => ruleBuilder - .RequireAttribute(attribute => attribute + .RequireAttributeDescriptor(attribute => attribute .Name("a") .NameComparisonMode(RequiredAttributeDescriptor.NameComparisonMode.FullMatch)), ruleBuilder => ruleBuilder - .RequireAttribute(attribute => attribute + .RequireAttributeDescriptor(attribute => attribute .Name("b") .NameComparisonMode(RequiredAttributeDescriptor.NameComparisonMode.FullMatch)), }); @@ -257,11 +257,11 @@ namespace Microsoft.AspNetCore.Razor.Language ruleBuilders: new Action[] { ruleBuilder => ruleBuilder - .RequireAttribute(attribute => attribute + .RequireAttributeDescriptor(attribute => attribute .Name("a") .NameComparisonMode(RequiredAttributeDescriptor.NameComparisonMode.FullMatch)), ruleBuilder => ruleBuilder - .RequireAttribute(attribute => attribute + .RequireAttributeDescriptor(attribute => attribute .Name("b") .NameComparisonMode(RequiredAttributeDescriptor.NameComparisonMode.FullMatch)), }); @@ -1397,7 +1397,7 @@ namespace Microsoft.AspNetCore.Razor.Language { foreach (var attributeBuilder in attributes) { - builder.BindAttribute(attributeBuilder); + builder.BoundAttributeDescriptor(attributeBuilder); } } @@ -1405,7 +1405,7 @@ namespace Microsoft.AspNetCore.Razor.Language { foreach (var ruleBuilder in ruleBuilders) { - builder.TagMatchingRule(innerRuleBuilder => + builder.TagMatchingRuleDescriptor(innerRuleBuilder => { innerRuleBuilder.RequireTagName(tagName); ruleBuilder(innerRuleBuilder); @@ -1414,7 +1414,7 @@ namespace Microsoft.AspNetCore.Razor.Language } else { - builder.TagMatchingRule(ruleBuilder => ruleBuilder.RequireTagName(tagName)); + builder.TagMatchingRuleDescriptor(ruleBuilder => ruleBuilder.RequireTagName(tagName)); } var descriptor = builder.Build(); diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/Extensions/PreallocatedAttributeTargetExtensionTest.cs b/test/Microsoft.AspNetCore.Razor.Language.Test/Extensions/PreallocatedAttributeTargetExtensionTest.cs index 3146c34efc..ffe636535c 100644 --- a/test/Microsoft.AspNetCore.Razor.Language.Test/Extensions/PreallocatedAttributeTargetExtensionTest.cs +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/Extensions/PreallocatedAttributeTargetExtensionTest.cs @@ -187,7 +187,7 @@ __tagHelperExecutionContext.AddTagHelperAttribute(_tagHelper1); builder .Name("Foo") .TypeName("System.Collections.Generic.Dictionary") - .AsDictionary("pre-", "System.String") + .AsDictionaryAttribute("pre-", "System.String") .PropertyName("FooProp"); var descriptor = builder.Build(); diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/IntegrationTests/TagHelpersIntegrationTest.cs b/test/Microsoft.AspNetCore.Razor.Language.Test/IntegrationTests/TagHelpersIntegrationTest.cs index 3016cd87d5..eaeb51f745 100644 --- a/test/Microsoft.AspNetCore.Razor.Language.Test/IntegrationTests/TagHelpersIntegrationTest.cs +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/IntegrationTests/TagHelpersIntegrationTest.cs @@ -110,11 +110,11 @@ namespace Microsoft.AspNetCore.Razor.Language.IntegrationTests { foreach (var attributeBuilder in attributes) { - builder.BindAttribute(attributeBuilder); + builder.BoundAttributeDescriptor(attributeBuilder); } } - builder.TagMatchingRule(ruleBuilder => ruleBuilder.RequireTagName(tagName)); + builder.TagMatchingRuleDescriptor(ruleBuilder => ruleBuilder.RequireTagName(tagName)); var descriptor = builder.Build(); diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/IntegrationTests/TestTagHelperDescriptors.cs b/test/Microsoft.AspNetCore.Razor.Language.Test/IntegrationTests/TestTagHelperDescriptors.cs index 47000a154a..63e17acc1d 100644 --- a/test/Microsoft.AspNetCore.Razor.Language.Test/IntegrationTests/TestTagHelperDescriptors.cs +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/IntegrationTests/TestTagHelperDescriptors.cs @@ -62,7 +62,7 @@ namespace Microsoft.AspNetCore.Razor.Language.IntegrationTests ruleBuilders: new Action[] { builder => builder - .RequireAttribute(attribute => attribute + .RequireAttributeDescriptor(attribute => attribute .Name("href") .NameComparisonMode(RequiredAttributeDescriptor.NameComparisonMode.FullMatch) .Value("~/") @@ -75,12 +75,12 @@ namespace Microsoft.AspNetCore.Razor.Language.IntegrationTests ruleBuilders: new Action[] { builder => builder - .RequireAttribute(attribute => attribute + .RequireAttributeDescriptor(attribute => attribute .Name("href") .NameComparisonMode(RequiredAttributeDescriptor.NameComparisonMode.FullMatch) .Value("~/") .ValueComparisonMode(RequiredAttributeDescriptor.ValueComparisonMode.PrefixMatch)) - .RequireAttribute(attribute => attribute + .RequireAttributeDescriptor(attribute => attribute .Name("href") .NameComparisonMode(RequiredAttributeDescriptor.NameComparisonMode.FullMatch) .Value("?hello=world") @@ -97,7 +97,7 @@ namespace Microsoft.AspNetCore.Razor.Language.IntegrationTests ruleBuilders: new Action[] { builder => builder - .RequireAttribute(attribute => attribute + .RequireAttributeDescriptor(attribute => attribute .Name("type") .NameComparisonMode(RequiredAttributeDescriptor.NameComparisonMode.FullMatch) .Value("text") @@ -114,7 +114,7 @@ namespace Microsoft.AspNetCore.Razor.Language.IntegrationTests ruleBuilders: new Action[] { builder => builder - .RequireAttribute(attribute => attribute + .RequireAttributeDescriptor(attribute => attribute .Name("ty") .NameComparisonMode(RequiredAttributeDescriptor.NameComparisonMode.PrefixMatch)), }), @@ -125,7 +125,7 @@ namespace Microsoft.AspNetCore.Razor.Language.IntegrationTests ruleBuilders: new Action[] { builder => builder - .RequireAttribute(attribute => attribute + .RequireAttributeDescriptor(attribute => attribute .Name("href") .NameComparisonMode(RequiredAttributeDescriptor.NameComparisonMode.FullMatch) .Value("~/") @@ -138,7 +138,7 @@ namespace Microsoft.AspNetCore.Razor.Language.IntegrationTests ruleBuilders: new Action[] { builder => builder - .RequireAttribute(attribute => attribute + .RequireAttributeDescriptor(attribute => attribute .Name("type") .NameComparisonMode(RequiredAttributeDescriptor.NameComparisonMode.FullMatch)), }), @@ -219,7 +219,7 @@ namespace Microsoft.AspNetCore.Razor.Language.IntegrationTests }, ruleBuilders: new Action[] { - builder => builder.RequireAttribute(attribute => attribute.Name("bound")), + builder => builder.RequireAttributeDescriptor(attribute => attribute.Name("bound")), }), }; } @@ -244,7 +244,7 @@ namespace Microsoft.AspNetCore.Razor.Language.IntegrationTests }, ruleBuilders: new Action[] { - builder => builder.RequireAttribute(attribute => attribute.Name("catchall-unbound-required")), + builder => builder.RequireAttributeDescriptor(attribute => attribute.Name("catchall-unbound-required")), }), CreateTagHelperDescriptor( tagName: "input", @@ -264,8 +264,8 @@ namespace Microsoft.AspNetCore.Razor.Language.IntegrationTests ruleBuilders: new Action[] { builder => builder - .RequireAttribute(attribute => attribute.Name("input-bound-required-string")) - .RequireAttribute(attribute => attribute.Name("input-unbound-required")), + .RequireAttributeDescriptor(attribute => attribute.Name("input-bound-required-string")) + .RequireAttributeDescriptor(attribute => attribute.Name("input-unbound-required")), }), }; } @@ -311,8 +311,8 @@ namespace Microsoft.AspNetCore.Razor.Language.IntegrationTests }, ruleBuilders: new Action[] { - builder => builder.RequireAttribute(attribute => attribute.Name("type")), - builder => builder.RequireAttribute(attribute => attribute.Name("checked")) + builder => builder.RequireAttributeDescriptor(attribute => attribute.Name("type")), + builder => builder.RequireAttributeDescriptor(attribute => attribute.Name("checked")) }), CreateTagHelperDescriptor( tagName: "input", @@ -325,8 +325,8 @@ namespace Microsoft.AspNetCore.Razor.Language.IntegrationTests }, ruleBuilders: new Action[] { - builder => builder.RequireAttribute(attribute => attribute.Name("type")), - builder => builder.RequireAttribute(attribute => attribute.Name("checked")) + builder => builder.RequireAttributeDescriptor(attribute => attribute.Name("type")), + builder => builder.RequireAttributeDescriptor(attribute => attribute.Name("checked")) }) }; } @@ -346,7 +346,7 @@ namespace Microsoft.AspNetCore.Razor.Language.IntegrationTests assemblyName: "TestAssembly", ruleBuilders: new Action[] { - builder => builder.RequireAttribute(attribute => attribute.Name("class")), + builder => builder.RequireAttributeDescriptor(attribute => attribute.Name("class")), }), CreateTagHelperDescriptor( tagName: "input", @@ -358,7 +358,7 @@ namespace Microsoft.AspNetCore.Razor.Language.IntegrationTests }, ruleBuilders: new Action[] { - builder => builder.RequireAttribute(attribute => attribute.Name("type")), + builder => builder.RequireAttributeDescriptor(attribute => attribute.Name("type")), }), CreateTagHelperDescriptor( tagName: "input", @@ -372,8 +372,8 @@ namespace Microsoft.AspNetCore.Razor.Language.IntegrationTests ruleBuilders: new Action[] { builder => builder - .RequireAttribute(attribute => attribute.Name("type")) - .RequireAttribute(attribute => attribute.Name("checked")), + .RequireAttributeDescriptor(attribute => attribute.Name("type")) + .RequireAttributeDescriptor(attribute => attribute.Name("checked")), }), CreateTagHelperDescriptor( tagName: "*", @@ -381,7 +381,7 @@ namespace Microsoft.AspNetCore.Razor.Language.IntegrationTests assemblyName: "TestAssembly", ruleBuilders: new Action[] { - builder => builder.RequireAttribute(attribute => attribute.Name("catchAll")), + builder => builder.RequireAttributeDescriptor(attribute => attribute.Name("catchAll")), }), }; } @@ -407,7 +407,7 @@ namespace Microsoft.AspNetCore.Razor.Language.IntegrationTests .Name("int-dictionary") .PropertyName("IntDictionaryProperty") .TypeName(typeof(IDictionary).FullName) - .AsDictionary("int-prefix-", typeof(int).FullName), + .AsDictionaryAttribute("int-prefix-", typeof(int).FullName), builder => builder .Name("string-prefix-grabber") .PropertyName("StringProperty") @@ -416,7 +416,7 @@ namespace Microsoft.AspNetCore.Razor.Language.IntegrationTests .Name("string-dictionary") .PropertyName("StringDictionaryProperty") .TypeName("Namespace.DictionaryWithoutParameterlessConstructor") - .AsDictionary("string-prefix-", typeof(string).FullName), + .AsDictionaryAttribute("string-prefix-", typeof(string).FullName), }), CreateTagHelperDescriptor( tagName: "input", @@ -428,12 +428,12 @@ namespace Microsoft.AspNetCore.Razor.Language.IntegrationTests .Name("int-dictionary") .PropertyName("IntDictionaryProperty") .TypeName(typeof(int).FullName) - .AsDictionary("int-prefix-", typeof(int).FullName), + .AsDictionaryAttribute("int-prefix-", typeof(int).FullName), builder => builder .Name("string-dictionary") .PropertyName("StringDictionaryProperty") .TypeName("Namespace.DictionaryWithoutParameterlessConstructor") - .AsDictionary("string-prefix-", typeof(string).FullName), + .AsDictionaryAttribute("string-prefix-", typeof(string).FullName), }), }; } @@ -523,7 +523,7 @@ namespace Microsoft.AspNetCore.Razor.Language.IntegrationTests { foreach (var attributeBuilder in attributes) { - builder.BindAttribute(attributeBuilder); + builder.BoundAttributeDescriptor(attributeBuilder); } } @@ -531,7 +531,7 @@ namespace Microsoft.AspNetCore.Razor.Language.IntegrationTests { foreach (var ruleBuilder in ruleBuilders) { - builder.TagMatchingRule(innerRuleBuilder => + builder.TagMatchingRuleDescriptor(innerRuleBuilder => { innerRuleBuilder.RequireTagName(tagName); ruleBuilder(innerRuleBuilder); @@ -540,7 +540,7 @@ namespace Microsoft.AspNetCore.Razor.Language.IntegrationTests } else { - builder.TagMatchingRule(ruleBuilder => ruleBuilder.RequireTagName(tagName)); + builder.TagMatchingRuleDescriptor(ruleBuilder => ruleBuilder.RequireTagName(tagName)); } var descriptor = builder.Build(); diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/TagHelperBlockRewriterTest.cs b/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/TagHelperBlockRewriterTest.cs index 65e4664381..c7cebb1968 100644 --- a/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/TagHelperBlockRewriterTest.cs +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/TagHelperBlockRewriterTest.cs @@ -118,36 +118,36 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy var descriptors = new[] { TagHelperDescriptorBuilder.Create("CatchAllTagHelper", "SomeAssembly") - .TagMatchingRule(rule => + .TagMatchingRuleDescriptor(rule => rule .RequireTagName("*") - .RequireAttribute(attribute => attribute.Name("bound"))) - .BindAttribute(attribute => + .RequireAttributeDescriptor(attribute => attribute.Name("bound"))) + .BoundAttributeDescriptor(attribute => attribute .Name("[item]") .PropertyName("ListItems") .TypeName(typeof(List).Namespace + "List")) - .BindAttribute(attribute => + .BoundAttributeDescriptor(attribute => attribute .Name("[(item)]") .PropertyName("ArrayItems") .TypeName(typeof(string[]).Namespace + "System.String[]")) - .BindAttribute(attribute => + .BoundAttributeDescriptor(attribute => attribute .Name("(click)") .PropertyName("Event1") .TypeName(typeof(Action).FullName)) - .BindAttribute(attribute => + .BoundAttributeDescriptor(attribute => attribute .Name("(^click)") .PropertyName("Event2") .TypeName(typeof(Action).FullName)) - .BindAttribute(attribute => + .BoundAttributeDescriptor(attribute => attribute .Name("*something") .PropertyName("StringProperty1") .TypeName(typeof(string).FullName)) - .BindAttribute(attribute => + .BoundAttributeDescriptor(attribute => attribute .Name("#local") .PropertyName("StringProperty2") @@ -222,7 +222,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy var descriptors = new TagHelperDescriptor[] { TagHelperDescriptorBuilder.Create("InputTagHelper", "SomeAssembly") - .TagMatchingRule(rule => + .TagMatchingRuleDescriptor(rule => rule .RequireTagName("input") .RequireTagStructure(TagStructure.WithoutEndTag)) @@ -320,13 +320,13 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy var descriptors = new TagHelperDescriptor[] { TagHelperDescriptorBuilder.Create("InputTagHelper1", "SomeAssembly") - .TagMatchingRule(rule => + .TagMatchingRuleDescriptor(rule => rule .RequireTagName("input") .RequireTagStructure(structure1)) .Build(), TagHelperDescriptorBuilder.Create("InputTagHelper2", "SomeAssembly") - .TagMatchingRule(rule => + .TagMatchingRuleDescriptor(rule => rule .RequireTagName("input") .RequireTagStructure(structure2)) @@ -1195,18 +1195,18 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy var descriptors = new TagHelperDescriptor[] { TagHelperDescriptorBuilder.Create("PersonTagHelper", "personAssembly") - .TagMatchingRule(rule => rule.RequireTagName("person")) - .BindAttribute(attribute => + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("person")) + .BoundAttributeDescriptor(attribute => attribute .Name("age") .PropertyName("Age") .TypeName(typeof(int).FullName)) - .BindAttribute(attribute => + .BoundAttributeDescriptor(attribute => attribute .Name("birthday") .PropertyName("BirthDay") .TypeName(typeof(DateTime).FullName)) - .BindAttribute(attribute => + .BoundAttributeDescriptor(attribute => attribute .Name("name") .PropertyName("Name") @@ -2250,13 +2250,13 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy var descriptors = new TagHelperDescriptor[] { TagHelperDescriptorBuilder.Create("mythTagHelper", "SomeAssembly") - .TagMatchingRule(rule => rule.RequireTagName("myth")) - .BindAttribute(attribute => + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("myth")) + .BoundAttributeDescriptor(attribute => attribute .Name("bound") .PropertyName("Bound") .TypeName(typeof(bool).FullName)) - .BindAttribute(attribute => + .BoundAttributeDescriptor(attribute => attribute .Name("name") .PropertyName("Name") @@ -3901,54 +3901,54 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy var descriptors = new TagHelperDescriptor[] { TagHelperDescriptorBuilder.Create("InputTagHelper1", "SomeAssembly") - .TagMatchingRule(rule => + .TagMatchingRuleDescriptor(rule => rule .RequireTagName("input") - .RequireAttribute(attribute => attribute.Name("unbound-required"))) - .TagMatchingRule(rule => + .RequireAttributeDescriptor(attribute => attribute.Name("unbound-required"))) + .TagMatchingRuleDescriptor(rule => rule .RequireTagName("input") - .RequireAttribute(attribute => attribute.Name("bound-required-string"))) - .BindAttribute(attribute => + .RequireAttributeDescriptor(attribute => attribute.Name("bound-required-string"))) + .BoundAttributeDescriptor(attribute => attribute .Name("bound-required-string") .PropertyName("BoundRequiredString") .TypeName(typeof(string).FullName)) .Build(), TagHelperDescriptorBuilder.Create("InputTagHelper2", "SomeAssembly") - .TagMatchingRule(rule => + .TagMatchingRuleDescriptor(rule => rule .RequireTagName("input") - .RequireAttribute(attribute => attribute.Name("bound-required-int"))) - .BindAttribute(attribute => + .RequireAttributeDescriptor(attribute => attribute.Name("bound-required-int"))) + .BoundAttributeDescriptor(attribute => attribute .Name("bound-required-int") .PropertyName("BoundRequiredInt") .TypeName(typeof(int).FullName)) .Build(), TagHelperDescriptorBuilder.Create("InputTagHelper3", "SomeAssembly") - .TagMatchingRule(rule => rule.RequireTagName("input")) - .BindAttribute(attribute => + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("input")) + .BoundAttributeDescriptor(attribute => attribute .Name("int-dictionary") .PropertyName("DictionaryOfIntProperty") .TypeName(typeof(IDictionary).Namespace + ".IDictionary") - .AsDictionary("int-prefix-", typeof(int).FullName)) - .BindAttribute(attribute => + .AsDictionaryAttribute("int-prefix-", typeof(int).FullName)) + .BoundAttributeDescriptor(attribute => attribute .Name("string-dictionary") .PropertyName("DictionaryOfStringProperty") .TypeName(typeof(IDictionary).Namespace + ".IDictionary") - .AsDictionary("string-prefix-", typeof(string).FullName)) + .AsDictionaryAttribute("string-prefix-", typeof(string).FullName)) .Build(), TagHelperDescriptorBuilder.Create("PTagHelper", "SomeAssembly") - .TagMatchingRule(rule => rule.RequireTagName("p")) - .BindAttribute(attribute => + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("p")) + .BoundAttributeDescriptor(attribute => attribute .Name("bound-string") .PropertyName("BoundRequiredString") .TypeName(typeof(string).FullName)) - .BindAttribute(attribute => + .BoundAttributeDescriptor(attribute => attribute .Name("bound-int") .PropertyName("BoundRequiredString") diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/TagHelperParseTreeRewriterTest.cs b/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/TagHelperParseTreeRewriterTest.cs index dea7f61983..a5afdfed28 100644 --- a/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/TagHelperParseTreeRewriterTest.cs +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/TagHelperParseTreeRewriterTest.cs @@ -161,14 +161,14 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy var descriptors = new TagHelperDescriptor[] { TagHelperDescriptorBuilder.Create("StrongTagHelper", "SomeAssembly") - .TagMatchingRule(rule => rule.RequireTagName("strong")) - .TagMatchingRule(rule => rule.RequireTagName("div")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("strong")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("div")) .Build(), TagHelperDescriptorBuilder.Create("CatchALlTagHelper", "SomeAssembly") - .TagMatchingRule(rule => rule.RequireTagName("*")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("*")) .Build(), TagHelperDescriptorBuilder.Create("PTagHelper", "SomeAssembly") - .TagMatchingRule(rule => rule.RequireTagName("p")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("p")) .Build(), }; @@ -258,23 +258,23 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy var descriptors = new TagHelperDescriptor[] { TagHelperDescriptorBuilder.Create("InputTagHelper", "SomeAssembly") - .TagMatchingRule(rule => + .TagMatchingRuleDescriptor(rule => rule .RequireTagName("input") .RequireTagStructure(TagStructure.WithoutEndTag)) .Build(), TagHelperDescriptorBuilder.Create("StrongTagHelper", "SomeAssembly") - .TagMatchingRule(rule => + .TagMatchingRuleDescriptor(rule => rule .RequireTagName("strong") .RequireParentTag("p")) - .TagMatchingRule(rule => + .TagMatchingRuleDescriptor(rule => rule .RequireTagName("strong") .RequireParentTag("input")) .Build(), TagHelperDescriptorBuilder.Create("PTagHelper", "SomeAssembly") - .TagMatchingRule(rule => rule.RequireTagName("p")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("p")) .Build(), }; @@ -339,17 +339,17 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy var descriptors = new TagHelperDescriptor[] { TagHelperDescriptorBuilder.Create("StrongTagHelper", "SomeAssembly") - .TagMatchingRule(rule => + .TagMatchingRuleDescriptor(rule => rule .RequireTagName("strong") .RequireParentTag("p")) - .TagMatchingRule(rule => + .TagMatchingRuleDescriptor(rule => rule .RequireTagName("strong") .RequireParentTag("div")) .Build(), TagHelperDescriptorBuilder.Create("PTagHelper", "SomeAssembly") - .TagMatchingRule(rule => rule.RequireTagName("p")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("p")) .Build(), }; @@ -368,11 +368,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy var descriptors = new TagHelperDescriptor[] { TagHelperDescriptorBuilder.Create("PTagHelper", "SomeAssembly") - .TagMatchingRule(rule => rule.RequireTagName("p")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("p")) .AllowChildTag("strong") .Build(), TagHelperDescriptorBuilder.Create("StrongTagHelper", "SomeAssembly") - .TagMatchingRule(rule => rule.RequireTagName("strong")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("strong")) .Build(), }; @@ -679,7 +679,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy var descriptors = new TagHelperDescriptor[] { TagHelperDescriptorBuilder.Create("PTagHelper", "SomeAssembly") - .TagMatchingRule(rule => rule.RequireTagName("p")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("p")) .AllowChildTag("br") .Build() }; @@ -715,10 +715,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy var descriptors = new TagHelperDescriptor[] { TagHelperDescriptorBuilder.Create("StrongTagHelper", "SomeAssembly") - .TagMatchingRule(rule => + .TagMatchingRuleDescriptor(rule => rule .RequireTagName("strong") - .RequireAttribute(attribute => attribute.Name("required"))) + .RequireAttributeDescriptor(attribute => attribute.Name("required"))) .AllowChildTag("br") .Build() }; @@ -741,18 +741,18 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy var descriptors = new TagHelperDescriptor[] { TagHelperDescriptorBuilder.Create("PTagHelper1", "SomeAssembly") - .TagMatchingRule(rule => rule.RequireTagName("p")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("p")) .AllowChildTag("strong") .AllowChildTag("br") .Build(), TagHelperDescriptorBuilder.Create("PTagHelper2", "SomeAssembly") - .TagMatchingRule(rule => rule.RequireTagName("p")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("p")) .Build(), TagHelperDescriptorBuilder.Create("StrongTagHelper", "SomeAssembly") - .TagMatchingRule(rule => rule.RequireTagName("strong")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("strong")) .Build(), TagHelperDescriptorBuilder.Create("BRTagHelper", "SomeAssembly") - .TagMatchingRule(rule => + .TagMatchingRuleDescriptor(rule => rule .RequireTagName("br") .RequireTagStructure(TagStructure.WithoutEndTag)) @@ -777,18 +777,18 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy var descriptors = new TagHelperDescriptor[] { TagHelperDescriptorBuilder.Create("PTagHelper1", "SomeAssembly") - .TagMatchingRule(rule => rule.RequireTagName("p")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("p")) .AllowChildTag("strong") .Build(), TagHelperDescriptorBuilder.Create("PTagHelper2", "SomeAssembly") - .TagMatchingRule(rule => rule.RequireTagName("p")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("p")) .AllowChildTag("br") .Build(), TagHelperDescriptorBuilder.Create("StrongTagHelper", "SomeAssembly") - .TagMatchingRule(rule => rule.RequireTagName("strong")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("strong")) .Build(), TagHelperDescriptorBuilder.Create("BRTagHelper", "SomeAssembly") - .TagMatchingRule(rule => + .TagMatchingRuleDescriptor(rule => rule .RequireTagName("br") .RequireTagStructure(TagStructure.WithoutEndTag)) @@ -1014,9 +1014,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy { // Arrange var pTagHelperBuilder = TagHelperDescriptorBuilder.Create("PTagHelper", "SomeAssembly") - .TagMatchingRule(rule => rule.RequireTagName("p")); + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("p")); var strongTagHelperBuilder = TagHelperDescriptorBuilder.Create("StrongTagHelper", "SomeAssembly") - .TagMatchingRule(rule => rule.RequireTagName("strong")); + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("strong")); foreach (var childTag in allowedChildren) { @@ -1028,7 +1028,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy pTagHelperBuilder.Build(), strongTagHelperBuilder.Build(), TagHelperDescriptorBuilder.Create("BRTagHelper", "SomeAssembly") - .TagMatchingRule(rule => + .TagMatchingRuleDescriptor(rule => rule .RequireTagName("br") .RequireTagStructure(TagStructure.WithoutEndTag)) @@ -1047,11 +1047,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy var descriptors = new TagHelperDescriptor[] { TagHelperDescriptorBuilder.Create("PTagHelper", "SomeAssembly") - .TagMatchingRule(rule => rule.RequireTagName("p")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("p")) .AllowChildTag("custom") .Build(), TagHelperDescriptorBuilder.Create("CatchAllTagHelper", "SomeAssembly") - .TagMatchingRule(rule => rule.RequireTagName("*")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("*")) .Build(), }; var expectedOutput = new MarkupBlock( @@ -1079,11 +1079,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy var descriptors = new TagHelperDescriptor[] { TagHelperDescriptorBuilder.Create("PTagHelper", "SomeAssembly") - .TagMatchingRule(rule => rule.RequireTagName("p")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("p")) .AllowChildTag("custom") .Build(), TagHelperDescriptorBuilder.Create("CatchAllTagHelper", "SomeAssembly") - .TagMatchingRule(rule => rule.RequireTagName("*")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("*")) .Build(), }; var expectedOutput = new MarkupBlock( @@ -1112,7 +1112,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy var descriptors = new TagHelperDescriptor[] { TagHelperDescriptorBuilder.Create("InputTagHelper", "SomeAssembly") - .TagMatchingRule(rule => + .TagMatchingRuleDescriptor(rule => rule .RequireTagName("input") .RequireTagStructure(TagStructure.WithoutEndTag)) @@ -1143,7 +1143,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy var descriptors = new TagHelperDescriptor[] { TagHelperDescriptorBuilder.Create("InputTagHelper", "SomeAssembly") - .TagMatchingRule(rule => + .TagMatchingRuleDescriptor(rule => rule .RequireTagName("input") .RequireTagStructure(TagStructure.WithoutEndTag)) @@ -1175,13 +1175,13 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy var descriptors = new TagHelperDescriptor[] { TagHelperDescriptorBuilder.Create("InputTagHelper1", "SomeAssembly") - .TagMatchingRule(rule => + .TagMatchingRuleDescriptor(rule => rule .RequireTagName("input") .RequireTagStructure(TagStructure.WithoutEndTag)) .Build(), TagHelperDescriptorBuilder.Create("InputTagHelper2", "SomeAssembly") - .TagMatchingRule(rule => + .TagMatchingRuleDescriptor(rule => rule .RequireTagName("input") .RequireTagStructure(TagStructure.NormalOrSelfClosing)) @@ -1597,23 +1597,23 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy var descriptors = new TagHelperDescriptor[] { TagHelperDescriptorBuilder.Create("pTagHelper", "SomeAssembly") - .TagMatchingRule(rule => + .TagMatchingRuleDescriptor(rule => rule .RequireTagName("p") - .RequireAttribute(attribute => attribute.Name("class"))) + .RequireAttributeDescriptor(attribute => attribute.Name("class"))) .Build(), TagHelperDescriptorBuilder.Create("divTagHelper", "SomeAssembly") - .TagMatchingRule(rule => + .TagMatchingRuleDescriptor(rule => rule .RequireTagName("div") - .RequireAttribute(attribute => attribute.Name("class")) - .RequireAttribute(attribute => attribute.Name("style"))) + .RequireAttributeDescriptor(attribute => attribute.Name("class")) + .RequireAttributeDescriptor(attribute => attribute.Name("style"))) .Build(), TagHelperDescriptorBuilder.Create("catchAllTagHelper", "SomeAssembly") - .TagMatchingRule(rule => + .TagMatchingRuleDescriptor(rule => rule .RequireTagName("*") - .RequireAttribute(attribute => attribute.Name("catchAll"))) + .RequireAttributeDescriptor(attribute => attribute.Name("catchAll"))) .Build() }; @@ -1857,16 +1857,16 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy var descriptors = new TagHelperDescriptor[] { TagHelperDescriptorBuilder.Create("pTagHelper", "SomeAssembly") - .TagMatchingRule(rule => + .TagMatchingRuleDescriptor(rule => rule .RequireTagName("p") - .RequireAttribute(attribute => attribute.Name("class"))) + .RequireAttributeDescriptor(attribute => attribute.Name("class"))) .Build(), TagHelperDescriptorBuilder.Create("catchAllTagHelper", "SomeAssembly") - .TagMatchingRule(rule => + .TagMatchingRuleDescriptor(rule => rule .RequireTagName("*") - .RequireAttribute(attribute => attribute.Name("catchAll"))) + .RequireAttributeDescriptor(attribute => attribute.Name("catchAll"))) .Build(), }; @@ -2078,10 +2078,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy var descriptors = new TagHelperDescriptor[] { TagHelperDescriptorBuilder.Create("pTagHelper", "SomeAssembly") - .TagMatchingRule(rule => + .TagMatchingRuleDescriptor(rule => rule .RequireTagName("p") - .RequireAttribute(attribute => attribute.Name("class"))) + .RequireAttributeDescriptor(attribute => attribute.Name("class"))) .Build(), }; @@ -2098,11 +2098,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy var availableDescriptorsColon = new TagHelperDescriptor[] { TagHelperDescriptorBuilder.Create("mythTagHelper", "SomeAssembly") - .TagMatchingRule(rule => rule.RequireTagName("myth")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("myth")) .Build(), TagHelperDescriptorBuilder.Create("mythTagHelper2", "SomeAssembly") - .TagMatchingRule(rule => rule.RequireTagName("myth2")) - .BindAttribute(attribute => + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("myth2")) + .BoundAttributeDescriptor(attribute => attribute .Name("bound") .PropertyName("Bound") @@ -2112,7 +2112,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy var availableDescriptorsCatchAll = new TagHelperDescriptor[] { TagHelperDescriptorBuilder.Create("mythTagHelper", "SomeAssembly") - .TagMatchingRule(rule => rule.RequireTagName("*")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("*")) .Build(), }; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/TagHelperRewritingTestBase.cs b/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/TagHelperRewritingTestBase.cs index 8d0c790b83..6779d73ec7 100644 --- a/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/TagHelperRewritingTestBase.cs +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/TagHelperRewritingTestBase.cs @@ -38,7 +38,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy foreach (var tagName in tagNames) { var descriptor = TagHelperDescriptorBuilder.Create(tagName + "taghelper", "SomeAssembly") - .TagMatchingRule(rule => rule.RequireTagName(tagName)) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName(tagName)) .Build(); descriptors.Add(descriptor); } diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TagHelperBinderTest.cs b/test/Microsoft.AspNetCore.Razor.Language.Test/TagHelperBinderTest.cs index d755ca1b7c..3ad16f88d5 100644 --- a/test/Microsoft.AspNetCore.Razor.Language.Test/TagHelperBinderTest.cs +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TagHelperBinderTest.cs @@ -15,7 +15,7 @@ namespace Microsoft.AspNetCore.Razor.Language { // Arrange var divTagHelper = TagHelperDescriptorBuilder.Create("DivTagHelper", "SomeAssembly") - .TagMatchingRule(rule => rule.RequireTagName("div")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("div")) .Build(); var expectedDescriptors = new[] { divTagHelper }; var expectedAttributes = new[] @@ -44,17 +44,17 @@ namespace Microsoft.AspNetCore.Razor.Language get { var strongPDivParent = TagHelperDescriptorBuilder.Create("StrongTagHelper", "SomeAssembly") - .TagMatchingRule(rule => + .TagMatchingRuleDescriptor(rule => rule .RequireTagName("strong") .RequireParentTag("p")) - .TagMatchingRule(rule => + .TagMatchingRuleDescriptor(rule => rule .RequireTagName("strong") .RequireParentTag("div")) .Build(); var catchAllPParent = TagHelperDescriptorBuilder.Create("CatchAllTagHelper", "SomeAssembly") - .TagMatchingRule(rule => + .TagMatchingRuleDescriptor(rule => rule .RequireTagName("*") .RequireParentTag("p")) @@ -120,45 +120,45 @@ namespace Microsoft.AspNetCore.Razor.Language get { var divDescriptor = TagHelperDescriptorBuilder.Create("DivTagHelper", "SomeAssembly") - .TagMatchingRule(rule => + .TagMatchingRuleDescriptor(rule => rule .RequireTagName("div") - .RequireAttribute(attribute => attribute.Name("style"))) + .RequireAttributeDescriptor(attribute => attribute.Name("style"))) .Build(); var inputDescriptor = TagHelperDescriptorBuilder.Create("InputTagHelper", "SomeAssembly") - .TagMatchingRule(rule => + .TagMatchingRuleDescriptor(rule => rule .RequireTagName("input") - .RequireAttribute(attribute => attribute.Name("class")) - .RequireAttribute(attribute => attribute.Name("style"))) + .RequireAttributeDescriptor(attribute => attribute.Name("class")) + .RequireAttributeDescriptor(attribute => attribute.Name("style"))) .Build(); var inputWildcardPrefixDescriptor = TagHelperDescriptorBuilder.Create("InputWildCardAttribute", "SomeAssembly") - .TagMatchingRule(rule => + .TagMatchingRuleDescriptor(rule => rule .RequireTagName("input") - .RequireAttribute(attribute => + .RequireAttributeDescriptor(attribute => attribute .Name("nodashprefix") .NameComparisonMode(RequiredAttributeDescriptor.NameComparisonMode.PrefixMatch))) .Build(); var catchAllDescriptor = TagHelperDescriptorBuilder.Create("CatchAllTagHelper", "SomeAssembly") - .TagMatchingRule(rule => + .TagMatchingRuleDescriptor(rule => rule .RequireTagName(TagHelperMatchingConventions.ElementCatchAllName) - .RequireAttribute(attribute => attribute.Name("class"))) + .RequireAttributeDescriptor(attribute => attribute.Name("class"))) .Build(); var catchAllDescriptor2 = TagHelperDescriptorBuilder.Create("CatchAllTagHelper2", "SomeAssembly") - .TagMatchingRule(rule => + .TagMatchingRuleDescriptor(rule => rule .RequireTagName(TagHelperMatchingConventions.ElementCatchAllName) - .RequireAttribute(attribute => attribute.Name("custom")) - .RequireAttribute(attribute => attribute.Name("class"))) + .RequireAttributeDescriptor(attribute => attribute.Name("custom")) + .RequireAttributeDescriptor(attribute => attribute.Name("class"))) .Build(); var catchAllWildcardPrefixDescriptor = TagHelperDescriptorBuilder.Create("CatchAllWildCardAttribute", "SomeAssembly") - .TagMatchingRule(rule => + .TagMatchingRuleDescriptor(rule => rule .RequireTagName(TagHelperMatchingConventions.ElementCatchAllName) - .RequireAttribute(attribute => + .RequireAttributeDescriptor(attribute => attribute .Name("prefix-") .NameComparisonMode(RequiredAttributeDescriptor.NameComparisonMode.PrefixMatch))) @@ -283,7 +283,7 @@ namespace Microsoft.AspNetCore.Razor.Language { // Arrange var catchAllDescriptor = TagHelperDescriptorBuilder.Create("foo1", "SomeAssembly") - .TagMatchingRule(rule => rule.RequireTagName(TagHelperMatchingConventions.ElementCatchAllName)) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName(TagHelperMatchingConventions.ElementCatchAllName)) .Build(); var descriptors = new[] { catchAllDescriptor }; var tagHelperBinder = new TagHelperBinder("th", descriptors); @@ -303,7 +303,7 @@ namespace Microsoft.AspNetCore.Razor.Language { // Arrange var catchAllDescriptor = TagHelperDescriptorBuilder.Create("foo1", "SomeAssembly") - .TagMatchingRule(rule => rule.RequireTagName(TagHelperMatchingConventions.ElementCatchAllName)) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName(TagHelperMatchingConventions.ElementCatchAllName)) .Build(); var descriptors = new[] { catchAllDescriptor }; var tagHelperBinder = new TagHelperBinder("th:", descriptors); @@ -330,7 +330,7 @@ namespace Microsoft.AspNetCore.Razor.Language { // Arrange var divDescriptor = TagHelperDescriptorBuilder.Create("foo1", "SomeAssembly") - .TagMatchingRule(rule => rule.RequireTagName("div")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("div")) .Build(); var descriptors = new[] { divDescriptor }; var tagHelperBinder = new TagHelperBinder("th:", descriptors); @@ -353,7 +353,7 @@ namespace Microsoft.AspNetCore.Razor.Language { // Arrange var divDescriptor = TagHelperDescriptorBuilder.Create("foo1", "SomeAssembly") - .TagMatchingRule(rule => rule.RequireTagName(tagName)) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName(tagName)) .Build(); var descriptors = new[] { divDescriptor }; var tagHelperBinder = new TagHelperBinder("th:", descriptors); @@ -373,10 +373,10 @@ namespace Microsoft.AspNetCore.Razor.Language { // Arrange var divDescriptor = TagHelperDescriptorBuilder.Create("foo1", "SomeAssembly") - .TagMatchingRule(rule => rule.RequireTagName("div")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("div")) .Build(); var spanDescriptor = TagHelperDescriptorBuilder.Create("foo2", "SomeAssembly") - .TagMatchingRule(rule => rule.RequireTagName("span")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("span")) .Build(); var descriptors = new TagHelperDescriptor[] { divDescriptor, spanDescriptor }; var tagHelperBinder = new TagHelperBinder(null, descriptors); @@ -396,13 +396,13 @@ namespace Microsoft.AspNetCore.Razor.Language { // Arrange var divDescriptor = TagHelperDescriptorBuilder.Create("foo1", "SomeAssembly") - .TagMatchingRule(rule => rule.RequireTagName("div")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("div")) .Build(); var spanDescriptor = TagHelperDescriptorBuilder.Create("foo2", "SomeAssembly") - .TagMatchingRule(rule => rule.RequireTagName("span")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("span")) .Build(); var catchAllDescriptor = TagHelperDescriptorBuilder.Create("foo3", "SomeAssembly") - .TagMatchingRule(rule => rule.RequireTagName(TagHelperMatchingConventions.ElementCatchAllName)) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName(TagHelperMatchingConventions.ElementCatchAllName)) .Build(); var descriptors = new TagHelperDescriptor[] { divDescriptor, spanDescriptor, catchAllDescriptor }; var tagHelperBinder = new TagHelperBinder(null, descriptors); @@ -434,7 +434,7 @@ namespace Microsoft.AspNetCore.Razor.Language { // Arrange var divDescriptor = TagHelperDescriptorBuilder.Create("foo1", "SomeAssembly") - .TagMatchingRule(rule => rule.RequireTagName("div")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("div")) .Build(); var descriptors = new TagHelperDescriptor[] { divDescriptor, divDescriptor }; var tagHelperBinder = new TagHelperBinder(null, descriptors); @@ -455,12 +455,12 @@ namespace Microsoft.AspNetCore.Razor.Language { // Arrange var multiRuleDescriptor = TagHelperDescriptorBuilder.Create("foo", "SomeAssembly") - .TagMatchingRule(rule => rule + .TagMatchingRuleDescriptor(rule => rule .RequireTagName(TagHelperMatchingConventions.ElementCatchAllName) .RequireParentTag("body")) - .TagMatchingRule(rule => rule + .TagMatchingRuleDescriptor(rule => rule .RequireTagName("div")) - .TagMatchingRule(rule => rule + .TagMatchingRuleDescriptor(rule => rule .RequireTagName("span")) .Build(); var descriptors = new TagHelperDescriptor[] { multiRuleDescriptor }; diff --git a/test/Microsoft.AspNetCore.Razor.Test.Common/Language/TestBoundAttributeDescriptorBuilderExtensions.cs b/test/Microsoft.AspNetCore.Razor.Test.Common/Language/TestBoundAttributeDescriptorBuilderExtensions.cs new file mode 100644 index 0000000000..23987d03bf --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Test.Common/Language/TestBoundAttributeDescriptorBuilderExtensions.cs @@ -0,0 +1,123 @@ +// 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 +{ + public static class TestBoundAttributeDescriptorBuilderExtensions + { + public static BoundAttributeDescriptorBuilder Name(this BoundAttributeDescriptorBuilder builder, string name) + { + if (builder == null) + { + throw new ArgumentNullException(nameof(builder)); + } + + builder.Name = name; + + return builder; + } + + public static BoundAttributeDescriptorBuilder TypeName(this BoundAttributeDescriptorBuilder builder, string typeName) + { + if (builder == null) + { + throw new ArgumentNullException(nameof(builder)); + } + + builder.TypeName = typeName; + + return builder; + } + + public static BoundAttributeDescriptorBuilder PropertyName(this BoundAttributeDescriptorBuilder builder, string propertyName) + { + if (builder == null) + { + throw new ArgumentNullException(nameof(builder)); + } + + builder.SetPropertyName(propertyName); + + return builder; + } + + public static BoundAttributeDescriptorBuilder DisplayName(this BoundAttributeDescriptorBuilder builder, string displayName) + { + if (builder == null) + { + throw new ArgumentNullException(nameof(builder)); + } + + builder.DisplayName = displayName; + + return builder; + } + + public static BoundAttributeDescriptorBuilder AsEnum(this BoundAttributeDescriptorBuilder builder) + { + if (builder == null) + { + throw new ArgumentNullException(nameof(builder)); + } + + builder.IsEnum = true; + + return builder; + } + + public static BoundAttributeDescriptorBuilder AsDictionaryAttribute( + this BoundAttributeDescriptorBuilder builder, + string attributeNamePrefix, + string valueTypeName) + { + if (builder == null) + { + throw new ArgumentNullException(nameof(builder)); + } + + builder.IsDictionary = true; + builder.IndexerAttributeNamePrefix = attributeNamePrefix; + builder.IndexerValueTypeName = valueTypeName; + + return builder; + } + + public static BoundAttributeDescriptorBuilder Documentation(this BoundAttributeDescriptorBuilder builder, string documentation) + { + if (builder == null) + { + throw new ArgumentNullException(nameof(builder)); + } + + builder.Documentation = documentation; + + return builder; + } + + public static BoundAttributeDescriptorBuilder AddMetadata(this BoundAttributeDescriptorBuilder builder, string key, string value) + { + if (builder == null) + { + throw new ArgumentNullException(nameof(builder)); + } + + builder.Metadata[key] = value; + + return builder; + } + + public static BoundAttributeDescriptorBuilder AddDiagnostic(this BoundAttributeDescriptorBuilder builder, RazorDiagnostic diagnostic) + { + if (builder == null) + { + throw new ArgumentNullException(nameof(builder)); + } + + builder.Diagnostics.Add(diagnostic); + + return builder; + } + } +} diff --git a/test/Microsoft.AspNetCore.Razor.Test.Common/Language/TestBoundAttributeDescriptorExtensions.cs b/test/Microsoft.AspNetCore.Razor.Test.Common/Language/TestBoundAttributeDescriptorExtensions.cs deleted file mode 100644 index 900c1162f8..0000000000 --- a/test/Microsoft.AspNetCore.Razor.Test.Common/Language/TestBoundAttributeDescriptorExtensions.cs +++ /dev/null @@ -1,20 +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 -{ - public static class TestBoundAttributeDescriptorBuilderExtensions - { - public static BoundAttributeDescriptorBuilder PropertyName(this BoundAttributeDescriptorBuilder builder, string propertyName) - { - if (builder == null) - { - throw new ArgumentNullException(nameof(builder)); - } - - return builder.SetPropertyName(propertyName); - } - } -} diff --git a/test/Microsoft.AspNetCore.Razor.Test.Common/Language/TestRequiredAttributeDescriptorBuilderExtensions.cs b/test/Microsoft.AspNetCore.Razor.Test.Common/Language/TestRequiredAttributeDescriptorBuilderExtensions.cs new file mode 100644 index 0000000000..da638e1750 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Test.Common/Language/TestRequiredAttributeDescriptorBuilderExtensions.cs @@ -0,0 +1,69 @@ +// 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 +{ + public static class TestRequiredAttributeDescriptorBuilderExtensions + { + public static RequiredAttributeDescriptorBuilder Name(this RequiredAttributeDescriptorBuilder builder, string name) + { + if (builder == null) + { + throw new ArgumentNullException(nameof(builder)); + } + + builder.Name = name; + + return builder; + } + + public static RequiredAttributeDescriptorBuilder NameComparisonMode( + this RequiredAttributeDescriptorBuilder builder, + RequiredAttributeDescriptor.NameComparisonMode nameComparison) + { + if (builder == null) + { + throw new ArgumentNullException(nameof(builder)); + } + + builder.NameComparisonMode = nameComparison; + + return builder; + } + + public static RequiredAttributeDescriptorBuilder Value(this RequiredAttributeDescriptorBuilder builder, string value) + { + if (builder == null) + { + throw new ArgumentNullException(nameof(builder)); + } + + builder.Value = value; + + return builder; + } + + public static RequiredAttributeDescriptorBuilder ValueComparisonMode( + this RequiredAttributeDescriptorBuilder builder, + RequiredAttributeDescriptor.ValueComparisonMode valueComparison) + { + if (builder == null) + { + throw new ArgumentNullException(nameof(builder)); + } + + builder.ValueComparisonMode = valueComparison; + + return builder; + } + + public static RequiredAttributeDescriptorBuilder AddDiagnostic(this RequiredAttributeDescriptorBuilder builder, RazorDiagnostic diagnostic) + { + builder.Diagnostics.Add(diagnostic); + + return builder; + } + } +} diff --git a/test/Microsoft.AspNetCore.Razor.Test.Common/Language/TestTagHelperDescriptorBuilderExtensions.cs b/test/Microsoft.AspNetCore.Razor.Test.Common/Language/TestTagHelperDescriptorBuilderExtensions.cs index baa32694bf..a5a4710556 100644 --- a/test/Microsoft.AspNetCore.Razor.Test.Common/Language/TestTagHelperDescriptorBuilderExtensions.cs +++ b/test/Microsoft.AspNetCore.Razor.Test.Common/Language/TestTagHelperDescriptorBuilderExtensions.cs @@ -14,7 +14,109 @@ namespace Microsoft.AspNetCore.Razor.Language throw new ArgumentNullException(nameof(builder)); } - return builder.SetTypeName(typeName); + builder.SetTypeName(typeName); + + return builder; + } + + public static TagHelperDescriptorBuilder DisplayName(this TagHelperDescriptorBuilder builder, string displayName) + { + if (builder == null) + { + throw new ArgumentNullException(nameof(builder)); + } + + builder.DisplayName = displayName; + + return builder; + } + + public static TagHelperDescriptorBuilder AllowChildTag(this TagHelperDescriptorBuilder builder, string allowedChild) + { + if (builder == null) + { + throw new ArgumentNullException(nameof(builder)); + } + + builder.AllowedChildTags.Add(allowedChild); + + return builder; + } + + public static TagHelperDescriptorBuilder TagOutputHint(this TagHelperDescriptorBuilder builder, string hint) + { + if (builder == null) + { + throw new ArgumentNullException(nameof(builder)); + } + + builder.TagOutputHint = hint; + + return builder; + } + + public static TagHelperDescriptorBuilder Documentation(this TagHelperDescriptorBuilder builder, string documentation) + { + if (builder == null) + { + throw new ArgumentNullException(nameof(builder)); + } + + builder.Documentation = documentation; + + return builder; + } + + public static TagHelperDescriptorBuilder AddMetadata(this TagHelperDescriptorBuilder builder, string key, string value) + { + if (builder == null) + { + throw new ArgumentNullException(nameof(builder)); + } + + builder.Metadata[key] = value; + + return builder; + } + + public static TagHelperDescriptorBuilder AddDiagnostic(this TagHelperDescriptorBuilder builder, RazorDiagnostic diagnostic) + { + if (builder == null) + { + throw new ArgumentNullException(nameof(builder)); + } + + builder.Diagnostics.Add(diagnostic); + + return builder; + } + + public static TagHelperDescriptorBuilder BoundAttributeDescriptor( + this TagHelperDescriptorBuilder builder, + Action configure) + { + if (builder == null) + { + throw new ArgumentNullException(nameof(builder)); + } + + builder.BindAttribute(configure); + + return builder; + } + + public static TagHelperDescriptorBuilder TagMatchingRuleDescriptor( + this TagHelperDescriptorBuilder builder, + Action configure) + { + if (builder == null) + { + throw new ArgumentNullException(nameof(builder)); + } + + builder.TagMatchingRule(configure); + + return builder; } } } diff --git a/test/Microsoft.AspNetCore.Razor.Test.Common/Language/TestTagMatchingRuleDescriptorBuilderExtensions.cs b/test/Microsoft.AspNetCore.Razor.Test.Common/Language/TestTagMatchingRuleDescriptorBuilderExtensions.cs new file mode 100644 index 0000000000..f052818fe6 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Test.Common/Language/TestTagMatchingRuleDescriptorBuilderExtensions.cs @@ -0,0 +1,72 @@ +// 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 +{ + public static class TestTagMatchingRuleDescriptorBuilderExtensions + { + public static TagMatchingRuleDescriptorBuilder RequireTagName(this TagMatchingRuleDescriptorBuilder builder, string tagName) + { + if (builder == null) + { + throw new ArgumentNullException(nameof(builder)); + } + + builder.TagName = tagName; + + return builder; + } + + public static TagMatchingRuleDescriptorBuilder RequireParentTag(this TagMatchingRuleDescriptorBuilder builder, string parentTag) + { + if (builder == null) + { + throw new ArgumentNullException(nameof(builder)); + } + + builder.ParentTag = parentTag; + + return builder; + } + + public static TagMatchingRuleDescriptorBuilder RequireTagStructure(this TagMatchingRuleDescriptorBuilder builder, TagStructure tagStructure) + { + if (builder == null) + { + throw new ArgumentNullException(nameof(builder)); + } + + builder.TagStructure = tagStructure; + + return builder; + } + + public static TagMatchingRuleDescriptorBuilder AddDiagnostic(this TagMatchingRuleDescriptorBuilder builder, RazorDiagnostic diagnostic) + { + if (builder == null) + { + throw new ArgumentNullException(nameof(builder)); + } + + builder.Diagnostics.Add(diagnostic); + + return builder; + } + + public static TagMatchingRuleDescriptorBuilder RequireAttributeDescriptor( + this TagMatchingRuleDescriptorBuilder builder, + Action configure) + { + if (builder == null) + { + throw new ArgumentNullException(nameof(builder)); + } + + builder.Attribute(configure); + + return builder; + } + } +} diff --git a/test/Microsoft.CodeAnalysis.Razor.Test/DefaultTagHelperDescriptorFactoryTest.cs b/test/Microsoft.CodeAnalysis.Razor.Test/DefaultTagHelperDescriptorFactoryTest.cs index 5c602ed165..4f1945747c 100644 --- a/test/Microsoft.CodeAnalysis.Razor.Test/DefaultTagHelperDescriptorFactoryTest.cs +++ b/test/Microsoft.CodeAnalysis.Razor.Test/DefaultTagHelperDescriptorFactoryTest.cs @@ -324,13 +324,13 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces typeof(EnumTagHelper), TagHelperDescriptorBuilder.Create(typeof(EnumTagHelper).FullName, AssemblyName) .TypeName(typeof(EnumTagHelper).FullName) - .TagMatchingRule(ruleBuilder => ruleBuilder.RequireTagName("enum")) - .BindAttribute(builder => + .TagMatchingRuleDescriptor(ruleBuilder => ruleBuilder.RequireTagName("enum")) + .BoundAttributeDescriptor(builder => builder .Name("non-enum-property") .PropertyName(nameof(EnumTagHelper.NonEnumProperty)) .TypeName(typeof(int).FullName)) - .BindAttribute(builder => + .BoundAttributeDescriptor(builder => builder .Name("enum-property") .PropertyName(nameof(EnumTagHelper.EnumProperty)) @@ -342,14 +342,14 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces typeof(MultiEnumTagHelper), TagHelperDescriptorBuilder.Create(typeof(MultiEnumTagHelper).FullName, AssemblyName) .TypeName(typeof(MultiEnumTagHelper).FullName) - .TagMatchingRule(ruleBuilder => ruleBuilder.RequireTagName("p")) - .TagMatchingRule(ruleBuilder => ruleBuilder.RequireTagName("input")) - .BindAttribute(builder => + .TagMatchingRuleDescriptor(ruleBuilder => ruleBuilder.RequireTagName("p")) + .TagMatchingRuleDescriptor(ruleBuilder => ruleBuilder.RequireTagName("input")) + .BoundAttributeDescriptor(builder => builder .Name("non-enum-property") .PropertyName(nameof(MultiEnumTagHelper.NonEnumProperty)) .TypeName(typeof(int).FullName)) - .BindAttribute(builder => + .BoundAttributeDescriptor(builder => builder .Name("enum-property") .PropertyName(nameof(MultiEnumTagHelper.EnumProperty)) @@ -361,19 +361,19 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces typeof(NestedEnumTagHelper), TagHelperDescriptorBuilder.Create(typeof(NestedEnumTagHelper).FullName, AssemblyName) .TypeName(typeof(NestedEnumTagHelper).FullName) - .TagMatchingRule(ruleBuilder => ruleBuilder.RequireTagName("nested-enum")) - .BindAttribute(builder => + .TagMatchingRuleDescriptor(ruleBuilder => ruleBuilder.RequireTagName("nested-enum")) + .BoundAttributeDescriptor(builder => builder .Name("non-enum-property") .PropertyName(nameof(NestedEnumTagHelper.NonEnumProperty)) .TypeName(typeof(int).FullName)) - .BindAttribute(builder => + .BoundAttributeDescriptor(builder => builder .Name("enum-property") .PropertyName(nameof(NestedEnumTagHelper.EnumProperty)) .TypeName(typeof(CustomEnum).FullName) .AsEnum()) - .BindAttribute(builder => + .BoundAttributeDescriptor(builder => builder .Name("nested-enum-property") .PropertyName(nameof(NestedEnumTagHelper.NestedEnumProperty)) @@ -413,23 +413,23 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces typeof(RequiredParentTagHelper), TagHelperDescriptorBuilder.Create(typeof(RequiredParentTagHelper).FullName, AssemblyName) .TypeName(typeof(RequiredParentTagHelper).FullName) - .TagMatchingRule(builder => builder.RequireTagName("input").RequireParentTag("div")) + .TagMatchingRuleDescriptor(builder => builder.RequireTagName("input").RequireParentTag("div")) .Build() }, { typeof(MultiSpecifiedRequiredParentTagHelper), TagHelperDescriptorBuilder.Create(typeof(MultiSpecifiedRequiredParentTagHelper).FullName, AssemblyName) .TypeName(typeof(MultiSpecifiedRequiredParentTagHelper).FullName) - .TagMatchingRule(builder => builder.RequireTagName("p").RequireParentTag("div")) - .TagMatchingRule(builder => builder.RequireTagName("input").RequireParentTag("section")) + .TagMatchingRuleDescriptor(builder => builder.RequireTagName("p").RequireParentTag("div")) + .TagMatchingRuleDescriptor(builder => builder.RequireTagName("input").RequireParentTag("section")) .Build() }, { typeof(MultiWithUnspecifiedRequiredParentTagHelper), TagHelperDescriptorBuilder.Create(typeof(MultiWithUnspecifiedRequiredParentTagHelper).FullName, AssemblyName) .TypeName(typeof(MultiWithUnspecifiedRequiredParentTagHelper).FullName) - .TagMatchingRule(builder => builder.RequireTagName("p")) - .TagMatchingRule(builder => builder.RequireTagName("input").RequireParentTag("div")) + .TagMatchingRuleDescriptor(builder => builder.RequireTagName("p")) + .TagMatchingRuleDescriptor(builder => builder.RequireTagName("input").RequireParentTag("div")) .Build() }, }; @@ -464,7 +464,7 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces typeof(RestrictChildrenTagHelper), TagHelperDescriptorBuilder.Create(typeof(RestrictChildrenTagHelper).FullName, AssemblyName) .TypeName(typeof(RestrictChildrenTagHelper).FullName) - .TagMatchingRule(builder => builder.RequireTagName("restrict-children")) + .TagMatchingRuleDescriptor(builder => builder.RequireTagName("restrict-children")) .AllowChildTag("p") .Build() }, @@ -472,7 +472,7 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces typeof(DoubleRestrictChildrenTagHelper), TagHelperDescriptorBuilder.Create(typeof(DoubleRestrictChildrenTagHelper).FullName, AssemblyName) .TypeName(typeof(DoubleRestrictChildrenTagHelper).FullName) - .TagMatchingRule(builder => builder.RequireTagName("double-restrict-children")) + .TagMatchingRuleDescriptor(builder => builder.RequireTagName("double-restrict-children")) .AllowChildTag("p") .AllowChildTag("strong") .Build() @@ -481,8 +481,8 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces typeof(MultiTargetRestrictChildrenTagHelper), TagHelperDescriptorBuilder.Create(typeof(MultiTargetRestrictChildrenTagHelper).FullName, AssemblyName) .TypeName(typeof(MultiTargetRestrictChildrenTagHelper).FullName) - .TagMatchingRule(builder => builder.RequireTagName("p")) - .TagMatchingRule(builder => builder.RequireTagName("div")) + .TagMatchingRuleDescriptor(builder => builder.RequireTagName("p")) + .TagMatchingRuleDescriptor(builder => builder.RequireTagName("div")) .AllowChildTag("p") .AllowChildTag("strong") .Build() @@ -520,7 +520,7 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces typeof(TagStructureTagHelper), TagHelperDescriptorBuilder.Create(typeof(TagStructureTagHelper).FullName, AssemblyName) .TypeName(typeof(TagStructureTagHelper).FullName) - .TagMatchingRule(builder => builder + .TagMatchingRuleDescriptor(builder => builder .RequireTagName("input") .RequireTagStructure(TagStructure.WithoutEndTag)) .Build() @@ -529,10 +529,10 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces typeof(MultiSpecifiedTagStructureTagHelper), TagHelperDescriptorBuilder.Create(typeof(MultiSpecifiedTagStructureTagHelper).FullName, AssemblyName) .TypeName(typeof(MultiSpecifiedTagStructureTagHelper).FullName) - .TagMatchingRule(builder => builder + .TagMatchingRuleDescriptor(builder => builder .RequireTagName("p") .RequireTagStructure(TagStructure.NormalOrSelfClosing)) - .TagMatchingRule(builder => builder + .TagMatchingRuleDescriptor(builder => builder .RequireTagName("input") .RequireTagStructure(TagStructure.WithoutEndTag)) .Build() @@ -541,9 +541,9 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces typeof(MultiWithUnspecifiedTagStructureTagHelper), TagHelperDescriptorBuilder.Create(typeof(MultiWithUnspecifiedTagStructureTagHelper).FullName, AssemblyName) .TypeName(typeof(MultiWithUnspecifiedTagStructureTagHelper).FullName) - .TagMatchingRule(builder => builder + .TagMatchingRuleDescriptor(builder => builder .RequireTagName("p")) - .TagMatchingRule(builder => builder + .TagMatchingRuleDescriptor(builder => builder .RequireTagName("input") .RequireTagStructure(TagStructure.WithoutEndTag)) .Build() @@ -761,7 +761,7 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces AssemblyName, ruleBuilders: new Action[] { - builder => builder.RequireAttribute(attribute => attribute.Name("class")), + builder => builder.RequireAttributeDescriptor(attribute => attribute.Name("class")), }) }, { @@ -775,8 +775,8 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces builder => { builder - .RequireAttribute(attribute => attribute.Name("class")) - .RequireAttribute(attribute => attribute.Name("style")); + .RequireAttributeDescriptor(attribute => attribute.Name("class")) + .RequireAttributeDescriptor(attribute => attribute.Name("style")); }, }) }, @@ -788,12 +788,12 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces AssemblyName, ruleBuilders: new Action[] { - builder => builder.RequireAttribute(attribute => attribute.Name("custom")), + builder => builder.RequireAttributeDescriptor(attribute => attribute.Name("custom")), builder => { builder - .RequireAttribute(attribute => attribute.Name("class")) - .RequireAttribute(attribute => attribute.Name("style")); + .RequireAttributeDescriptor(attribute => attribute.Name("class")) + .RequireAttributeDescriptor(attribute => attribute.Name("style")); }, }) }, @@ -805,7 +805,7 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces AssemblyName, ruleBuilders: new Action[] { - builder => builder.RequireAttribute(attribute => attribute.Name("style")), + builder => builder.RequireAttributeDescriptor(attribute => attribute.Name("style")), }) }, { @@ -816,7 +816,7 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces AssemblyName, ruleBuilders: new Action[] { - builder => builder.RequireAttribute(attribute => attribute.Name("class")), + builder => builder.RequireAttributeDescriptor(attribute => attribute.Name("class")), }) }, { @@ -827,7 +827,7 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces AssemblyName, ruleBuilders: new Action[] { - builder => builder.RequireAttribute(attribute => attribute.Name("class")), + builder => builder.RequireAttributeDescriptor(attribute => attribute.Name("class")), }) }, { @@ -840,10 +840,10 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces { builder => builder .RequireTagName("div") - .RequireAttribute(attribute => attribute.Name("class")), + .RequireAttributeDescriptor(attribute => attribute.Name("class")), builder => builder .RequireTagName("input") - .RequireAttribute(attribute => attribute.Name("class")), + .RequireAttributeDescriptor(attribute => attribute.Name("class")), }) }, { @@ -854,8 +854,8 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces AssemblyName, ruleBuilders: new Action[] { - builder => builder.RequireAttribute(attribute => attribute.Name("style")), - builder => builder.RequireAttribute(attribute => attribute.Name("class")), + builder => builder.RequireAttributeDescriptor(attribute => attribute.Name("style")), + builder => builder.RequireAttributeDescriptor(attribute => attribute.Name("class")), }) }, { @@ -867,8 +867,8 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces ruleBuilders: new Action[] { builder => builder - .RequireAttribute(attribute => attribute.Name("class")) - .RequireAttribute(attribute => attribute.Name("style")), + .RequireAttributeDescriptor(attribute => attribute.Name("class")) + .RequireAttributeDescriptor(attribute => attribute.Name("style")), }) }, { @@ -881,12 +881,12 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces { builder => builder .RequireTagName("div") - .RequireAttribute(attribute => attribute.Name("class")) - .RequireAttribute(attribute => attribute.Name("style")), + .RequireAttributeDescriptor(attribute => attribute.Name("class")) + .RequireAttributeDescriptor(attribute => attribute.Name("style")), builder => builder .RequireTagName("input") - .RequireAttribute(attribute => attribute.Name("class")) - .RequireAttribute(attribute => attribute.Name("style")), + .RequireAttributeDescriptor(attribute => attribute.Name("class")) + .RequireAttributeDescriptor(attribute => attribute.Name("style")), }) }, { @@ -898,7 +898,7 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces ruleBuilders: new Action[] { builder => builder - .RequireAttribute(attribute => attribute + .RequireAttributeDescriptor(attribute => attribute .Name("class") .NameComparisonMode(RequiredAttributeDescriptor.NameComparisonMode.PrefixMatch)), }) @@ -912,10 +912,10 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces ruleBuilders: new Action[] { builder => builder - .RequireAttribute(attribute => attribute + .RequireAttributeDescriptor(attribute => attribute .Name("class") .NameComparisonMode(RequiredAttributeDescriptor.NameComparisonMode.PrefixMatch)) - .RequireAttribute(attribute => attribute + .RequireAttributeDescriptor(attribute => attribute .Name("style") .NameComparisonMode(RequiredAttributeDescriptor.NameComparisonMode.PrefixMatch)), }) @@ -1786,7 +1786,7 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces .Name("dictionary-property") .PropertyName(nameof(DefaultValidHtmlAttributePrefix.DictionaryProperty)) .TypeName($"{dictionaryNamespace}") - .AsDictionary("dictionary-property-", typeof(string).FullName); + .AsDictionaryAttribute("dictionary-property-", typeof(string).FullName); }), }, Enumerable.Empty() @@ -1801,7 +1801,7 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces .Name("valid-name") .PropertyName(nameof(SingleValidHtmlAttributePrefix.DictionaryProperty)) .TypeName($"{dictionaryNamespace}") - .AsDictionary("valid-name-", typeof(string).FullName); + .AsDictionaryAttribute("valid-name-", typeof(string).FullName); }), }, Enumerable.Empty() @@ -1816,7 +1816,7 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces .Name("valid-name1") .PropertyName(nameof(MultipleValidHtmlAttributePrefix.DictionaryProperty)) .TypeName($"{typeof(Dictionary<,>).Namespace}.Dictionary") - .AsDictionary("valid-prefix1-", typeof(object).FullName); + .AsDictionaryAttribute("valid-prefix1-", typeof(object).FullName); }), CreateAttributeFor(typeof(MultipleValidHtmlAttributePrefix), attribute => { @@ -1824,7 +1824,7 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces .Name("valid-name2") .PropertyName(nameof(MultipleValidHtmlAttributePrefix.DictionarySubclassProperty)) .TypeName(typeof(DictionarySubclass).FullName) - .AsDictionary("valid-prefix2-", typeof(string).FullName); + .AsDictionaryAttribute("valid-prefix2-", typeof(string).FullName); }), CreateAttributeFor(typeof(MultipleValidHtmlAttributePrefix), attribute => { @@ -1832,7 +1832,7 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces .Name("valid-name3") .PropertyName(nameof(MultipleValidHtmlAttributePrefix.DictionaryWithoutParameterlessConstructorProperty)) .TypeName(typeof(DictionaryWithoutParameterlessConstructor).FullName) - .AsDictionary("valid-prefix3-", typeof(string).FullName); + .AsDictionaryAttribute("valid-prefix3-", typeof(string).FullName); }), CreateAttributeFor(typeof(MultipleValidHtmlAttributePrefix), attribute => { @@ -1840,7 +1840,7 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces .Name("valid-name4") .PropertyName(nameof(MultipleValidHtmlAttributePrefix.GenericDictionarySubclassProperty)) .TypeName(typeof(GenericDictionarySubclass).Namespace + ".GenericDictionarySubclass") - .AsDictionary("valid-prefix4-", typeof(object).FullName); + .AsDictionaryAttribute("valid-prefix4-", typeof(object).FullName); }), CreateAttributeFor(typeof(MultipleValidHtmlAttributePrefix), attribute => { @@ -1848,7 +1848,7 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces .Name("valid-name5") .PropertyName(nameof(MultipleValidHtmlAttributePrefix.SortedDictionaryProperty)) .TypeName(typeof(SortedDictionary).Namespace + ".SortedDictionary") - .AsDictionary("valid-prefix5-", typeof(int).FullName); + .AsDictionaryAttribute("valid-prefix5-", typeof(int).FullName); }), CreateAttributeFor(typeof(MultipleValidHtmlAttributePrefix), attribute => { @@ -1862,14 +1862,14 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces attribute .PropertyName(nameof(MultipleValidHtmlAttributePrefix.GetOnlyDictionaryProperty)) .TypeName($"{dictionaryNamespace}") - .AsDictionary("get-only-dictionary-property-", typeof(int).FullName); + .AsDictionaryAttribute("get-only-dictionary-property-", typeof(int).FullName); }), CreateAttributeFor(typeof(MultipleValidHtmlAttributePrefix), attribute => { attribute .PropertyName(nameof(MultipleValidHtmlAttributePrefix.GetOnlyDictionaryPropertyWithAttributePrefix)) .TypeName($"{dictionaryNamespace}") - .AsDictionary("valid-prefix6", typeof(string).FullName); + .AsDictionaryAttribute("valid-prefix6", typeof(string).FullName); }), }, Enumerable.Empty() @@ -1913,7 +1913,7 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces .Name("valid-name2") .PropertyName(nameof(MultipleInvalidHtmlAttributePrefix.DictionaryOfIntProperty)) .TypeName($"{typeof(Dictionary<,>).Namespace}.Dictionary") - .AsDictionary("valid-prefix2-", typeof(string).FullName) + .AsDictionaryAttribute("valid-prefix2-", typeof(string).FullName) .AddDiagnostic( RazorDiagnosticFactory.CreateTagHelper_InvalidAttributePrefixNotNull( typeof(MultipleInvalidHtmlAttributePrefix).FullName, @@ -1947,7 +1947,7 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces .Name("valid-name5") .PropertyName(nameof(MultipleInvalidHtmlAttributePrefix.DictionaryOfIntSubclassProperty)) .TypeName(typeof(DictionaryOfIntSubclass).FullName) - .AsDictionary("valid-prefix5-", typeof(string).FullName) + .AsDictionaryAttribute("valid-prefix5-", typeof(string).FullName) .AddDiagnostic( RazorDiagnosticFactory.CreateTagHelper_InvalidAttributePrefixNotNull( typeof(MultipleInvalidHtmlAttributePrefix).FullName, @@ -1958,7 +1958,7 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces attribute .PropertyName(nameof(MultipleInvalidHtmlAttributePrefix.GetOnlyDictionaryAttributePrefix)) .TypeName($"{dictionaryNamespace}") - .AsDictionary("valid-prefix6", typeof(string).FullName) + .AsDictionaryAttribute("valid-prefix6", typeof(string).FullName) .AddDiagnostic( RazorDiagnosticFactory.CreateTagHelper_InvalidAttributePrefixNotNull( typeof(MultipleInvalidHtmlAttributePrefix).FullName, @@ -1969,7 +1969,7 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces attribute .PropertyName(nameof(MultipleInvalidHtmlAttributePrefix.GetOnlyDictionaryPropertyWithAttributeName)) .TypeName($"{dictionaryNamespace}") - .AsDictionary("invalid-name7-", typeof(object).FullName) + .AsDictionaryAttribute("invalid-name7-", typeof(object).FullName) .AddDiagnostic( RazorDiagnosticFactory.CreateTagHelper_InvalidAttributePrefixNull( typeof(MultipleInvalidHtmlAttributePrefix).FullName, @@ -2035,8 +2035,8 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces typeof(MultipleDescriptorTagHelperWithOutputElementHint), TagHelperDescriptorBuilder.Create(typeof(MultipleDescriptorTagHelperWithOutputElementHint).FullName, AssemblyName) .TypeName(typeof(MultipleDescriptorTagHelperWithOutputElementHint).FullName) - .TagMatchingRule(builder => builder.RequireTagName("a")) - .TagMatchingRule(builder => builder.RequireTagName("p")) + .TagMatchingRuleDescriptor(builder => builder.RequireTagName("a")) + .TagMatchingRuleDescriptor(builder => builder.RequireTagName("p")) .TagOutputHint("div") .Build() }, @@ -2044,14 +2044,14 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces typeof(InheritedOutputElementHintTagHelper), TagHelperDescriptorBuilder.Create(typeof(InheritedOutputElementHintTagHelper).FullName, AssemblyName) .TypeName(typeof(InheritedOutputElementHintTagHelper).FullName) - .TagMatchingRule(builder => builder.RequireTagName("inherited-output-element-hint")) + .TagMatchingRuleDescriptor(builder => builder.RequireTagName("inherited-output-element-hint")) .Build() }, { typeof(OutputElementHintTagHelper), TagHelperDescriptorBuilder.Create(typeof(OutputElementHintTagHelper).FullName, AssemblyName) .TypeName(typeof(OutputElementHintTagHelper).FullName) - .TagMatchingRule(builder => builder.RequireTagName("output-element-hint")) + .TagMatchingRuleDescriptor(builder => builder.RequireTagName("output-element-hint")) .TagOutputHint("hinted-value") .Build() }, @@ -2059,7 +2059,7 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces typeof(OverriddenOutputElementHintTagHelper), TagHelperDescriptorBuilder.Create(typeof(OverriddenOutputElementHintTagHelper).FullName, AssemblyName) .TypeName(typeof(OverriddenOutputElementHintTagHelper).FullName) - .TagMatchingRule(builder => builder.RequireTagName("overridden-output-element-hint")) + .TagMatchingRuleDescriptor(builder => builder.RequireTagName("overridden-output-element-hint")) .TagOutputHint("overridden") .Build() }, @@ -2330,7 +2330,7 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces { foreach (var attributeBuilder in attributes) { - builder.BindAttribute(attributeBuilder); + builder.BoundAttributeDescriptor(attributeBuilder); } } @@ -2338,7 +2338,7 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces { foreach (var ruleBuilder in ruleBuilders) { - builder.TagMatchingRule(innerRuleBuilder => + builder.TagMatchingRuleDescriptor(innerRuleBuilder => { innerRuleBuilder.RequireTagName(tagName); ruleBuilder(innerRuleBuilder); @@ -2347,7 +2347,7 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces } else { - builder.TagMatchingRule(ruleBuilder => ruleBuilder.RequireTagName(tagName)); + builder.TagMatchingRuleDescriptor(ruleBuilder => ruleBuilder.RequireTagName(tagName)); } var descriptor = builder.Build(); diff --git a/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/DefaultTagHelperCompletionServiceTest.cs b/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/DefaultTagHelperCompletionServiceTest.cs index 4e6098eec7..2bc6d439a8 100644 --- a/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/DefaultTagHelperCompletionServiceTest.cs +++ b/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/DefaultTagHelperCompletionServiceTest.cs @@ -17,20 +17,20 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor var documentDescriptors = new[] { TagHelperDescriptorBuilder.Create("DivTagHelper", "TestAssembly") - .TagMatchingRule(rule => rule + .TagMatchingRuleDescriptor(rule => rule .RequireTagName("div") - .RequireAttribute(attribute => attribute.Name("repeat"))) - .BindAttribute(attribute => attribute + .RequireAttributeDescriptor(attribute => attribute.Name("repeat"))) + .BoundAttributeDescriptor(attribute => attribute .Name("visible") .TypeName(typeof(bool).FullName) - .SetPropertyName("Visible")) + .PropertyName("Visible")) .Build(), TagHelperDescriptorBuilder.Create("StyleTagHelper", "TestAssembly") - .TagMatchingRule(rule => rule.RequireTagName("*")) - .BindAttribute(attribute => attribute + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("*")) + .BoundAttributeDescriptor(attribute => attribute .Name("class") .TypeName(typeof(string).FullName) - .SetPropertyName("Class")) + .PropertyName("Class")) .Build(), }; var expectedCompletions = AttributeCompletionResult.Create(new Dictionary>() @@ -68,14 +68,14 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor var documentDescriptors = new[] { TagHelperDescriptorBuilder.Create("DivTagHelper", "TestAssembly") - .TagMatchingRule(rule => rule + .TagMatchingRuleDescriptor(rule => rule .RequireTagName("div") - .RequireAttribute(attribute => attribute.Name("repeat"))) + .RequireAttributeDescriptor(attribute => attribute.Name("repeat"))) .Build(), TagHelperDescriptorBuilder.Create("StyleTagHelper", "TestAssembly") - .TagMatchingRule(rule => rule + .TagMatchingRuleDescriptor(rule => rule .RequireTagName("*") - .RequireAttribute(attribute => attribute.Name("class"))) + .RequireAttributeDescriptor(attribute => attribute.Name("class"))) .Build(), }; var expectedCompletions = AttributeCompletionResult.Create(new Dictionary>() @@ -106,26 +106,26 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor var documentDescriptors = new[] { TagHelperDescriptorBuilder.Create("DivTagHelper", "TestAssembly") - .TagMatchingRule(rule => rule + .TagMatchingRuleDescriptor(rule => rule .RequireTagName("div") - .RequireAttribute(attribute => attribute.Name("repeat"))) - .BindAttribute(attribute => attribute + .RequireAttributeDescriptor(attribute => attribute.Name("repeat"))) + .BoundAttributeDescriptor(attribute => attribute .Name("repeat") .TypeName(typeof(bool).FullName) - .SetPropertyName("Repeat")) - .BindAttribute(attribute => attribute + .PropertyName("Repeat")) + .BoundAttributeDescriptor(attribute => attribute .Name("visible") .TypeName(typeof(bool).FullName) - .SetPropertyName("Visible")) + .PropertyName("Visible")) .Build(), TagHelperDescriptorBuilder.Create("StyleTagHelper", "TestAssembly") - .TagMatchingRule(rule => rule + .TagMatchingRuleDescriptor(rule => rule .RequireTagName("*") - .RequireAttribute(attribute => attribute.Name("class"))) - .BindAttribute(attribute => attribute + .RequireAttributeDescriptor(attribute => attribute.Name("class"))) + .BoundAttributeDescriptor(attribute => attribute .Name("class") .TypeName(typeof(string).FullName) - .SetPropertyName("Class")) + .PropertyName("Class")) .Build(), }; var expectedCompletions = AttributeCompletionResult.Create(new Dictionary>() @@ -159,31 +159,31 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor var documentDescriptors = new[] { TagHelperDescriptorBuilder.Create("DivTagHelper", "TestAssembly") - .TagMatchingRule(rule => rule.RequireTagName("div")) - .BindAttribute(attribute => attribute + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("div")) + .BoundAttributeDescriptor(attribute => attribute .Name("repeat") .TypeName(typeof(bool).FullName) - .SetPropertyName("Repeat")) - .BindAttribute(attribute => attribute + .PropertyName("Repeat")) + .BoundAttributeDescriptor(attribute => attribute .Name("visible") .TypeName(typeof(bool).FullName) - .SetPropertyName("Visible")) + .PropertyName("Visible")) .Build(), TagHelperDescriptorBuilder.Create("StyleTagHelper", "TestAssembly") - .TagMatchingRule(rule => rule + .TagMatchingRuleDescriptor(rule => rule .RequireTagName("*") - .RequireAttribute(attribute => attribute.Name("class"))) - .BindAttribute(attribute => attribute + .RequireAttributeDescriptor(attribute => attribute.Name("class"))) + .BoundAttributeDescriptor(attribute => attribute .Name("class") .TypeName(typeof(string).FullName) - .SetPropertyName("Class")) + .PropertyName("Class")) .Build(), TagHelperDescriptorBuilder.Create("StyleTagHelper", "TestAssembly") - .TagMatchingRule(rule => rule.RequireTagName("*")) - .BindAttribute(attribute => attribute + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("*")) + .BoundAttributeDescriptor(attribute => attribute .Name("visible") .TypeName(typeof(bool).FullName) - .SetPropertyName("Visible")) + .PropertyName("Visible")) .Build(), }; var expectedCompletions = AttributeCompletionResult.Create(new Dictionary>() @@ -222,11 +222,11 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor var documentDescriptors = new[] { TagHelperDescriptorBuilder.Create("CustomTagHelper", "TestAssembly") - .TagMatchingRule(rule => rule.RequireTagName("custom")) - .BindAttribute(attribute => attribute + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("custom")) + .BoundAttributeDescriptor(attribute => attribute .Name("repeat") .TypeName(typeof(bool).FullName) - .SetPropertyName("Repeat")) + .PropertyName("Repeat")) .TagOutputHint("div") .Build(), }; @@ -257,11 +257,11 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor var documentDescriptors = new[] { TagHelperDescriptorBuilder.Create("CustomTagHelper", "TestAssembly") - .TagMatchingRule(rule => rule.RequireTagName("custom")) - .BindAttribute(attribute => attribute + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("custom")) + .BoundAttributeDescriptor(attribute => attribute .Name("repeat") .TypeName(typeof(bool).FullName) - .SetPropertyName("Repeat")) + .PropertyName("Repeat")) .Build(), }; var expectedCompletions = AttributeCompletionResult.Create(new Dictionary>() @@ -290,11 +290,11 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor var documentDescriptors = new[] { TagHelperDescriptorBuilder.Create("DivTagHelper", "TestAssembly") - .TagMatchingRule(rule => rule.RequireTagName("div")) - .BindAttribute(attribute => attribute + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("div")) + .BoundAttributeDescriptor(attribute => attribute .Name("repeat") .TypeName(typeof(bool).FullName) - .SetPropertyName("Repeat")) + .PropertyName("Repeat")) .Build(), }; var expectedCompletions = AttributeCompletionResult.Create(new Dictionary>() @@ -347,9 +347,9 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor var documentDescriptors = new[] { TagHelperDescriptorBuilder.Create("DivTagHelper", "TestAssembly") - .TagMatchingRule(rule => rule + .TagMatchingRuleDescriptor(rule => rule .RequireTagName("div") - .RequireAttribute(attribute => attribute.Name("special"))) + .RequireAttributeDescriptor(attribute => attribute.Name("special"))) .Build(), }; var expectedCompletions = AttributeCompletionResult.Create(new Dictionary>() @@ -379,9 +379,9 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor var documentDescriptors = new[] { TagHelperDescriptorBuilder.Create("MyTableTagHelper", "TestAssembly") - .TagMatchingRule(rule => rule + .TagMatchingRuleDescriptor(rule => rule .RequireTagName("table") - .RequireAttribute(attribute => attribute.Name("special"))) + .RequireAttributeDescriptor(attribute => attribute.Name("special"))) .Build(), }; var expectedCompletions = AttributeCompletionResult.Create(new Dictionary>() @@ -410,11 +410,11 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor var documentDescriptors = new[] { TagHelperDescriptorBuilder.Create("MyTableTagHelper", "TestAssembly") - .TagMatchingRule(rule => rule.RequireTagName("my-table")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("my-table")) .TagOutputHint("table") .Build(), TagHelperDescriptorBuilder.Create("MyTrTagHelper", "TestAssembly") - .TagMatchingRule(rule => rule.RequireTagName("my-tr")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("my-tr")) .TagOutputHint("tr") .Build(), }; @@ -446,10 +446,10 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor var documentDescriptors = new[] { TagHelperDescriptorBuilder.Create("CatchAllTagHelper", "TestAssembly") - .TagMatchingRule(rule => rule.RequireTagName("*")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("*")) .Build(), TagHelperDescriptorBuilder.Create("LiTagHelper", "TestAssembly") - .TagMatchingRule(rule => rule.RequireTagName("li")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("li")) .Build(), }; var expectedCompletions = ElementCompletionResult.Create(new Dictionary>() @@ -480,10 +480,10 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor var documentDescriptors = new[] { TagHelperDescriptorBuilder.Create("SuperLiTagHelper", "TestAssembly") - .TagMatchingRule(rule => rule.RequireTagName("superli")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("superli")) .Build(), TagHelperDescriptorBuilder.Create("LiTagHelper", "TestAssembly") - .TagMatchingRule(rule => rule.RequireTagName("li")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("li")) .Build(), }; var expectedCompletions = ElementCompletionResult.Create(new Dictionary>() @@ -515,10 +515,10 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor var documentDescriptors = new[] { TagHelperDescriptorBuilder.Create("SuperLiTagHelper", "TestAssembly") - .TagMatchingRule(rule => rule.RequireTagName("superli")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("superli")) .Build(), TagHelperDescriptorBuilder.Create("CatchAll", "TestAssembly") - .TagMatchingRule(rule => rule.RequireTagName("*")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("*")) .Build(), }; var expectedCompletions = ElementCompletionResult.Create(new Dictionary>() @@ -548,10 +548,10 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor var documentDescriptors = new[] { TagHelperDescriptorBuilder.Create("SuperLiTagHelper", "TestAssembly") - .TagMatchingRule(rule => rule.RequireTagName("superli")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("superli")) .Build(), TagHelperDescriptorBuilder.Create("CatchAll", "TestAssembly") - .TagMatchingRule(rule => rule.RequireTagName("*")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("*")) .Build(), }; var expectedCompletions = ElementCompletionResult.Create(new Dictionary>() @@ -582,12 +582,12 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor var documentDescriptors = new[] { TagHelperDescriptorBuilder.Create("BoldTagHelper1", "TestAssembly") - .TagMatchingRule(rule => rule.RequireTagName("strong")) - .TagMatchingRule(rule => rule.RequireTagName("b")) - .TagMatchingRule(rule => rule.RequireTagName("bold")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("strong")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("b")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("bold")) .Build(), TagHelperDescriptorBuilder.Create("BoldTagHelper2", "TestAssembly") - .TagMatchingRule(rule => rule.RequireTagName("strong")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("strong")) .Build(), }; var expectedCompletions = ElementCompletionResult.Create(new Dictionary>() @@ -618,10 +618,10 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor var documentDescriptors = new[] { TagHelperDescriptorBuilder.Create("LiTagHelper1", "TestAssembly") - .TagMatchingRule(rule => rule.RequireTagName("li")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("li")) .Build(), TagHelperDescriptorBuilder.Create("LiTagHelper2", "TestAssembly") - .TagMatchingRule(rule => rule.RequireTagName("li")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("li")) .Build(), }; var expectedCompletions = ElementCompletionResult.Create(new Dictionary>() @@ -647,14 +647,14 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor var documentDescriptors = new[] { TagHelperDescriptorBuilder.Create("SuperLiTagHelper", "TestAssembly") - .TagMatchingRule(rule => rule.RequireTagName("superli")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("superli")) .Build(), TagHelperDescriptorBuilder.Create("LiTagHelper", "TestAssembly") - .TagMatchingRule(rule => rule.RequireTagName("li")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("li")) .TagOutputHint("strong") .Build(), TagHelperDescriptorBuilder.Create("DivTagHelper", "TestAssembly") - .TagMatchingRule(rule => rule.RequireTagName("div")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("div")) .Build(), }; var expectedCompletions = ElementCompletionResult.Create(new Dictionary>() @@ -681,11 +681,11 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor var documentDescriptors = new[] { TagHelperDescriptorBuilder.Create("DivTagHelper", "TestAssembly") - .TagMatchingRule(rule => rule.RequireTagName("div")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("div")) .TagOutputHint("li") .Build(), TagHelperDescriptorBuilder.Create("LiTagHelper", "TestAssembly") - .TagMatchingRule(rule => rule.RequireTagName("li")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("li")) .TagOutputHint("strong") .Build(), }; @@ -713,10 +713,10 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor var documentDescriptors = new[] { TagHelperDescriptorBuilder.Create("LiTagHelper1", "TestAssembly") - .TagMatchingRule(rule => rule.RequireTagName("li")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("li")) .Build(), TagHelperDescriptorBuilder.Create("LiTagHelper2", "TestAssembly") - .TagMatchingRule(rule => rule.RequireTagName("li").RequireParentTag("ol")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("li").RequireParentTag("ol")) .Build(), }; var expectedCompletions = ElementCompletionResult.Create(new Dictionary>() @@ -742,7 +742,7 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor var documentDescriptors = new[] { TagHelperDescriptorBuilder.Create("CatchAll", "TestAssembly") - .TagMatchingRule(rule => rule.RequireTagName("*")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("*")) .AllowChildTag("b") .AllowChildTag("bold") .AllowChildTag("div") @@ -772,7 +772,7 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor var documentDescriptors = new[] { TagHelperDescriptorBuilder.Create("BoldParent", "TestAssembly") - .TagMatchingRule(rule => rule.RequireTagName("div")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("div")) .AllowChildTag("b") .AllowChildTag("bold") .AllowChildTag("div") @@ -803,7 +803,7 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor var documentDescriptors = new[] { TagHelperDescriptorBuilder.Create("BoldParent", "TestAssembly") - .TagMatchingRule(rule => rule.RequireTagName("div")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("div")) .AllowChildTag("b") .AllowChildTag("bold") .Build(), @@ -831,7 +831,7 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor var documentDescriptors = new[] { TagHelperDescriptorBuilder.Create("BoldParent", "TestAssembly") - .TagMatchingRule(rule => rule.RequireTagName("div")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("div")) .AllowChildTag("b") .AllowChildTag("bold") .AllowChildTag("div") @@ -861,13 +861,13 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor var documentDescriptors = new[] { TagHelperDescriptorBuilder.Create("BoldParentCatchAll", "TestAssembly") - .TagMatchingRule(rule => rule.RequireTagName("*")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("*")) .AllowChildTag("strong") .AllowChildTag("div") .AllowChildTag("b") .Build(), TagHelperDescriptorBuilder.Create("BoldParent", "TestAssembly") - .TagMatchingRule(rule => rule.RequireTagName("div")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("div")) .AllowChildTag("b") .AllowChildTag("bold") .Build(), diff --git a/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/DefaultTagHelperFactsServiceTest.cs b/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/DefaultTagHelperFactsServiceTest.cs index 463eff4a68..b6a8d32147 100644 --- a/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/DefaultTagHelperFactsServiceTest.cs +++ b/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/DefaultTagHelperFactsServiceTest.cs @@ -20,7 +20,7 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor var documentDescriptors = new[] { TagHelperDescriptorBuilder.Create("TestType", "TestAssembly") - .TagMatchingRule(rule => rule.RequireTagName("*")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("*")) .Build() }; var documentContext = TagHelperDocumentContext.Create(string.Empty, documentDescriptors); @@ -40,29 +40,29 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor var documentDescriptors = new[] { TagHelperDescriptorBuilder.Create("TestType", "TestAssembly") - .TagMatchingRule(rule => + .TagMatchingRuleDescriptor(rule => rule .RequireTagName("a") - .RequireAttribute(attribute => attribute.Name("asp-for"))) - .BindAttribute(attribute => + .RequireAttributeDescriptor(attribute => attribute.Name("asp-for"))) + .BoundAttributeDescriptor(attribute => attribute .Name("asp-for") .TypeName(typeof(string).FullName) - .SetPropertyName("AspFor")) - .BindAttribute(attribute => + .PropertyName("AspFor")) + .BoundAttributeDescriptor(attribute => attribute .Name("asp-route") .TypeName(typeof(IDictionary).Namespace + "IDictionary") - .SetPropertyName("AspRoute") - .AsDictionary("asp-route-", typeof(string).FullName)) + .PropertyName("AspRoute") + .AsDictionaryAttribute("asp-route-", typeof(string).FullName)) .Build(), TagHelperDescriptorBuilder.Create("TestType", "TestAssembly") - .TagMatchingRule(rule => rule.RequireTagName("input")) - .BindAttribute(attribute => + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("input")) + .BoundAttributeDescriptor(attribute => attribute .Name("asp-for") .TypeName(typeof(string).FullName) - .SetPropertyName("AspFor")) + .PropertyName("AspFor")) .Build(), }; var documentContext = TagHelperDocumentContext.Create(string.Empty, documentDescriptors); @@ -89,18 +89,18 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor var documentDescriptors = new[] { TagHelperDescriptorBuilder.Create("TestType", "TestAssembly") - .TagMatchingRule(rule => rule.RequireTagName("a")) - .BindAttribute(attribute => + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("a")) + .BoundAttributeDescriptor(attribute => attribute .Name("asp-for") .TypeName(typeof(string).FullName) - .SetPropertyName("AspFor")) - .BindAttribute(attribute => + .PropertyName("AspFor")) + .BoundAttributeDescriptor(attribute => attribute .Name("asp-route") .TypeName(typeof(IDictionary).Namespace + "IDictionary") - .SetPropertyName("AspRoute") - .AsDictionary("asp-route-", typeof(string).FullName)) + .PropertyName("AspRoute") + .AsDictionaryAttribute("asp-route-", typeof(string).FullName)) .Build() }; var expectedAttributeDescriptors = new[] @@ -125,17 +125,17 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor var documentDescriptors = new[] { TagHelperDescriptorBuilder.Create("TestType", "TestAssembly") - .TagMatchingRule(rule => rule.RequireTagName("input")) - .BindAttribute(attribute => + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("input")) + .BoundAttributeDescriptor(attribute => attribute .Name("asp-for") .TypeName(typeof(string).FullName) - .SetPropertyName("AspFor")) - .BindAttribute(attribute => + .PropertyName("AspFor")) + .BoundAttributeDescriptor(attribute => attribute .Name("asp-extra") .TypeName(typeof(string).FullName) - .SetPropertyName("AspExtra")) + .PropertyName("AspExtra")) .Build() }; var expectedAttributeDescriptors = new[] @@ -160,7 +160,7 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor var documentDescriptors = new[] { TagHelperDescriptorBuilder.Create("TestType", "TestAssembly") - .TagMatchingRule(rule => rule.RequireTagName("*")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("*")) .Build() }; var documentContext = TagHelperDocumentContext.Create(string.Empty, documentDescriptors); @@ -180,7 +180,7 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor var documentDescriptors = new[] { TagHelperDescriptorBuilder.Create("TestType", "TestAssembly") - .TagMatchingRule(rule => rule.RequireTagName("strong")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("strong")) .Build() }; var documentContext = TagHelperDocumentContext.Create(string.Empty, documentDescriptors); @@ -200,7 +200,7 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor var expectedDescriptors = new[] { TagHelperDescriptorBuilder.Create("TestType", "TestAssembly") - .TagMatchingRule( + .TagMatchingRuleDescriptor( rule => rule .RequireTagName("a") .RequireParentTag("div")) @@ -210,7 +210,7 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor { expectedDescriptors[0], TagHelperDescriptorBuilder.Create("TestType2", "TestAssembly") - .TagMatchingRule( + .TagMatchingRuleDescriptor( rule => rule .RequireTagName("strong") .RequireParentTag("div")) @@ -233,14 +233,14 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor var expectedDescriptors = new[] { TagHelperDescriptorBuilder.Create("TestType", "TestAssembly") - .TagMatchingRule(rule => rule.RequireTagName("strong")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("strong")) .Build() }; var documentDescriptors = new[] { expectedDescriptors[0], TagHelperDescriptorBuilder.Create("TestType2", "TestAssembly") - .TagMatchingRule(rule => rule.RequireTagName("thstrong")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("thstrong")) .Build() }; var documentContext = TagHelperDocumentContext.Create("th", documentDescriptors); @@ -260,7 +260,7 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor var expectedDescriptors = new[] { TagHelperDescriptorBuilder.Create("TestType", "TestAssembly") - .TagMatchingRule( + .TagMatchingRuleDescriptor( rule => rule .RequireTagName("strong") .RequireParentTag("div")) @@ -270,7 +270,7 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor { expectedDescriptors[0], TagHelperDescriptorBuilder.Create("TestType2", "TestAssembly") - .TagMatchingRule( + .TagMatchingRuleDescriptor( rule => rule .RequireTagName("strong") .RequireParentTag("p")) @@ -293,7 +293,7 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor var documentDescriptors = new[] { TagHelperDescriptorBuilder.Create("TestType", "TestAssembly") - .TagMatchingRule(rule => rule.RequireTagName("div")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("div")) .Build() }; var documentContext = TagHelperDocumentContext.Create(string.Empty, documentDescriptors); @@ -313,10 +313,10 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor var documentDescriptors = new[] { TagHelperDescriptorBuilder.Create("DivTagHelper", "TestAssembly") - .TagMatchingRule(rule => rule.RequireTagName("div")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("div")) .Build(), TagHelperDescriptorBuilder.Create("PTagHelper", "TestAssembly") - .TagMatchingRule(rule => rule + .TagMatchingRuleDescriptor(rule => rule .RequireTagName("p") .RequireParentTag("body")) .Build() @@ -339,7 +339,7 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor var documentDescriptors = new[] { TagHelperDescriptorBuilder.Create("TestType", "TestAssembly") - .TagMatchingRule(rule => rule.RequireTagName("div")) + .TagMatchingRuleDescriptor(rule => rule.RequireTagName("div")) .Build() }; var documentContext = TagHelperDocumentContext.Create(string.Empty, documentDescriptors); @@ -359,7 +359,7 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor var expectedDescriptors = new[] { TagHelperDescriptorBuilder.Create("TestType", "TestAssembly") - .TagMatchingRule( + .TagMatchingRuleDescriptor( rule => rule .RequireTagName("p") .RequireParentTag("div")) @@ -369,7 +369,7 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor { expectedDescriptors[0], TagHelperDescriptorBuilder.Create("TestType2", "TestAssembly") - .TagMatchingRule( + .TagMatchingRuleDescriptor( rule => rule .RequireTagName("strong") .RequireParentTag("p")) diff --git a/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Language/TestBoundAttributeDescriptorBuilderExtensions.cs b/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Language/TestBoundAttributeDescriptorBuilderExtensions.cs new file mode 100644 index 0000000000..23987d03bf --- /dev/null +++ b/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Language/TestBoundAttributeDescriptorBuilderExtensions.cs @@ -0,0 +1,123 @@ +// 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 +{ + public static class TestBoundAttributeDescriptorBuilderExtensions + { + public static BoundAttributeDescriptorBuilder Name(this BoundAttributeDescriptorBuilder builder, string name) + { + if (builder == null) + { + throw new ArgumentNullException(nameof(builder)); + } + + builder.Name = name; + + return builder; + } + + public static BoundAttributeDescriptorBuilder TypeName(this BoundAttributeDescriptorBuilder builder, string typeName) + { + if (builder == null) + { + throw new ArgumentNullException(nameof(builder)); + } + + builder.TypeName = typeName; + + return builder; + } + + public static BoundAttributeDescriptorBuilder PropertyName(this BoundAttributeDescriptorBuilder builder, string propertyName) + { + if (builder == null) + { + throw new ArgumentNullException(nameof(builder)); + } + + builder.SetPropertyName(propertyName); + + return builder; + } + + public static BoundAttributeDescriptorBuilder DisplayName(this BoundAttributeDescriptorBuilder builder, string displayName) + { + if (builder == null) + { + throw new ArgumentNullException(nameof(builder)); + } + + builder.DisplayName = displayName; + + return builder; + } + + public static BoundAttributeDescriptorBuilder AsEnum(this BoundAttributeDescriptorBuilder builder) + { + if (builder == null) + { + throw new ArgumentNullException(nameof(builder)); + } + + builder.IsEnum = true; + + return builder; + } + + public static BoundAttributeDescriptorBuilder AsDictionaryAttribute( + this BoundAttributeDescriptorBuilder builder, + string attributeNamePrefix, + string valueTypeName) + { + if (builder == null) + { + throw new ArgumentNullException(nameof(builder)); + } + + builder.IsDictionary = true; + builder.IndexerAttributeNamePrefix = attributeNamePrefix; + builder.IndexerValueTypeName = valueTypeName; + + return builder; + } + + public static BoundAttributeDescriptorBuilder Documentation(this BoundAttributeDescriptorBuilder builder, string documentation) + { + if (builder == null) + { + throw new ArgumentNullException(nameof(builder)); + } + + builder.Documentation = documentation; + + return builder; + } + + public static BoundAttributeDescriptorBuilder AddMetadata(this BoundAttributeDescriptorBuilder builder, string key, string value) + { + if (builder == null) + { + throw new ArgumentNullException(nameof(builder)); + } + + builder.Metadata[key] = value; + + return builder; + } + + public static BoundAttributeDescriptorBuilder AddDiagnostic(this BoundAttributeDescriptorBuilder builder, RazorDiagnostic diagnostic) + { + if (builder == null) + { + throw new ArgumentNullException(nameof(builder)); + } + + builder.Diagnostics.Add(diagnostic); + + return builder; + } + } +} diff --git a/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Language/TestRequiredAttributeDescriptorBuilderExtensions.cs b/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Language/TestRequiredAttributeDescriptorBuilderExtensions.cs new file mode 100644 index 0000000000..da638e1750 --- /dev/null +++ b/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Language/TestRequiredAttributeDescriptorBuilderExtensions.cs @@ -0,0 +1,69 @@ +// 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 +{ + public static class TestRequiredAttributeDescriptorBuilderExtensions + { + public static RequiredAttributeDescriptorBuilder Name(this RequiredAttributeDescriptorBuilder builder, string name) + { + if (builder == null) + { + throw new ArgumentNullException(nameof(builder)); + } + + builder.Name = name; + + return builder; + } + + public static RequiredAttributeDescriptorBuilder NameComparisonMode( + this RequiredAttributeDescriptorBuilder builder, + RequiredAttributeDescriptor.NameComparisonMode nameComparison) + { + if (builder == null) + { + throw new ArgumentNullException(nameof(builder)); + } + + builder.NameComparisonMode = nameComparison; + + return builder; + } + + public static RequiredAttributeDescriptorBuilder Value(this RequiredAttributeDescriptorBuilder builder, string value) + { + if (builder == null) + { + throw new ArgumentNullException(nameof(builder)); + } + + builder.Value = value; + + return builder; + } + + public static RequiredAttributeDescriptorBuilder ValueComparisonMode( + this RequiredAttributeDescriptorBuilder builder, + RequiredAttributeDescriptor.ValueComparisonMode valueComparison) + { + if (builder == null) + { + throw new ArgumentNullException(nameof(builder)); + } + + builder.ValueComparisonMode = valueComparison; + + return builder; + } + + public static RequiredAttributeDescriptorBuilder AddDiagnostic(this RequiredAttributeDescriptorBuilder builder, RazorDiagnostic diagnostic) + { + builder.Diagnostics.Add(diagnostic); + + return builder; + } + } +} diff --git a/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Language/TestTagHelperDescriptorBuilderExtensions.cs b/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Language/TestTagHelperDescriptorBuilderExtensions.cs new file mode 100644 index 0000000000..a5a4710556 --- /dev/null +++ b/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Language/TestTagHelperDescriptorBuilderExtensions.cs @@ -0,0 +1,122 @@ +// 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 +{ + public static class TestTagHelperDescriptorBuilderExtensions + { + public static TagHelperDescriptorBuilder TypeName(this TagHelperDescriptorBuilder builder, string typeName) + { + if (builder == null) + { + throw new ArgumentNullException(nameof(builder)); + } + + builder.SetTypeName(typeName); + + return builder; + } + + public static TagHelperDescriptorBuilder DisplayName(this TagHelperDescriptorBuilder builder, string displayName) + { + if (builder == null) + { + throw new ArgumentNullException(nameof(builder)); + } + + builder.DisplayName = displayName; + + return builder; + } + + public static TagHelperDescriptorBuilder AllowChildTag(this TagHelperDescriptorBuilder builder, string allowedChild) + { + if (builder == null) + { + throw new ArgumentNullException(nameof(builder)); + } + + builder.AllowedChildTags.Add(allowedChild); + + return builder; + } + + public static TagHelperDescriptorBuilder TagOutputHint(this TagHelperDescriptorBuilder builder, string hint) + { + if (builder == null) + { + throw new ArgumentNullException(nameof(builder)); + } + + builder.TagOutputHint = hint; + + return builder; + } + + public static TagHelperDescriptorBuilder Documentation(this TagHelperDescriptorBuilder builder, string documentation) + { + if (builder == null) + { + throw new ArgumentNullException(nameof(builder)); + } + + builder.Documentation = documentation; + + return builder; + } + + public static TagHelperDescriptorBuilder AddMetadata(this TagHelperDescriptorBuilder builder, string key, string value) + { + if (builder == null) + { + throw new ArgumentNullException(nameof(builder)); + } + + builder.Metadata[key] = value; + + return builder; + } + + public static TagHelperDescriptorBuilder AddDiagnostic(this TagHelperDescriptorBuilder builder, RazorDiagnostic diagnostic) + { + if (builder == null) + { + throw new ArgumentNullException(nameof(builder)); + } + + builder.Diagnostics.Add(diagnostic); + + return builder; + } + + public static TagHelperDescriptorBuilder BoundAttributeDescriptor( + this TagHelperDescriptorBuilder builder, + Action configure) + { + if (builder == null) + { + throw new ArgumentNullException(nameof(builder)); + } + + builder.BindAttribute(configure); + + return builder; + } + + public static TagHelperDescriptorBuilder TagMatchingRuleDescriptor( + this TagHelperDescriptorBuilder builder, + Action configure) + { + if (builder == null) + { + throw new ArgumentNullException(nameof(builder)); + } + + builder.TagMatchingRule(configure); + + return builder; + } + } +} diff --git a/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Language/TestTagMatchingRuleDescriptorBuilderExtensions.cs b/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Language/TestTagMatchingRuleDescriptorBuilderExtensions.cs new file mode 100644 index 0000000000..f052818fe6 --- /dev/null +++ b/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Language/TestTagMatchingRuleDescriptorBuilderExtensions.cs @@ -0,0 +1,72 @@ +// 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 +{ + public static class TestTagMatchingRuleDescriptorBuilderExtensions + { + public static TagMatchingRuleDescriptorBuilder RequireTagName(this TagMatchingRuleDescriptorBuilder builder, string tagName) + { + if (builder == null) + { + throw new ArgumentNullException(nameof(builder)); + } + + builder.TagName = tagName; + + return builder; + } + + public static TagMatchingRuleDescriptorBuilder RequireParentTag(this TagMatchingRuleDescriptorBuilder builder, string parentTag) + { + if (builder == null) + { + throw new ArgumentNullException(nameof(builder)); + } + + builder.ParentTag = parentTag; + + return builder; + } + + public static TagMatchingRuleDescriptorBuilder RequireTagStructure(this TagMatchingRuleDescriptorBuilder builder, TagStructure tagStructure) + { + if (builder == null) + { + throw new ArgumentNullException(nameof(builder)); + } + + builder.TagStructure = tagStructure; + + return builder; + } + + public static TagMatchingRuleDescriptorBuilder AddDiagnostic(this TagMatchingRuleDescriptorBuilder builder, RazorDiagnostic diagnostic) + { + if (builder == null) + { + throw new ArgumentNullException(nameof(builder)); + } + + builder.Diagnostics.Add(diagnostic); + + return builder; + } + + public static TagMatchingRuleDescriptorBuilder RequireAttributeDescriptor( + this TagMatchingRuleDescriptorBuilder builder, + Action configure) + { + if (builder == null) + { + throw new ArgumentNullException(nameof(builder)); + } + + builder.Attribute(configure); + + return builder; + } + } +} diff --git a/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/TagHelperDescriptorSerializationTest.cs b/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/TagHelperDescriptorSerializationTest.cs index f99eca8578..cb2d82a79a 100644 --- a/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/TagHelperDescriptorSerializationTest.cs +++ b/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/TagHelperDescriptorSerializationTest.cs @@ -24,16 +24,16 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor { builder => builder .Name("test-attribute") - .SetPropertyName("TestAttribute") + .PropertyName("TestAttribute") .TypeName("string"), }, ruleBuilders: new Action[] { builder => builder - .RequireAttribute(attribute => attribute + .RequireAttributeDescriptor(attribute => attribute .Name("required-attribute-one") .NameComparisonMode(RequiredAttributeDescriptor.NameComparisonMode.PrefixMatch)) - .RequireAttribute(attribute => attribute + .RequireAttributeDescriptor(attribute => attribute .Name("required-attribute-two") .NameComparisonMode(RequiredAttributeDescriptor.NameComparisonMode.FullMatch) .Value("something") @@ -67,16 +67,16 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor { builder => builder .Name("test-attribute") - .SetPropertyName("TestAttribute") + .PropertyName("TestAttribute") .TypeName("string"), }, ruleBuilders: new Action[] { builder => builder - .RequireAttribute(attribute => attribute + .RequireAttributeDescriptor(attribute => attribute .Name("required-attribute-one") .NameComparisonMode(RequiredAttributeDescriptor.NameComparisonMode.PrefixMatch)) - .RequireAttribute(attribute => attribute + .RequireAttributeDescriptor(attribute => attribute .Name("required-attribute-two") .NameComparisonMode(RequiredAttributeDescriptor.NameComparisonMode.FullMatch) .Value("something") @@ -112,20 +112,20 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor { builder => builder .Name("test-attribute") - .SetPropertyName("TestAttribute") + .PropertyName("TestAttribute") .TypeName("SomeEnum") .AsEnum() .Documentation("Summary"), builder => builder .Name("test-attribute2") - .SetPropertyName("TestAttribute2") + .PropertyName("TestAttribute2") .TypeName("SomeDictionary") - .AsDictionary("dict-prefix-", "string"), + .AsDictionaryAttribute("dict-prefix-", "string"), }, ruleBuilders: new Action[] { builder => builder - .RequireAttribute(attribute => attribute + .RequireAttributeDescriptor(attribute => attribute .Name("required-attribute-one") .NameComparisonMode(RequiredAttributeDescriptor.NameComparisonMode.PrefixMatch)) }, @@ -160,7 +160,7 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor { foreach (var attributeBuilder in attributes) { - builder.BindAttribute(attributeBuilder); + builder.BoundAttributeDescriptor(attributeBuilder); } } @@ -168,7 +168,7 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor { foreach (var ruleBuilder in ruleBuilders) { - builder.TagMatchingRule(innerRuleBuilder => { + builder.TagMatchingRuleDescriptor(innerRuleBuilder => { innerRuleBuilder.RequireTagName(tagName); ruleBuilder(innerRuleBuilder); }); @@ -176,7 +176,7 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor } else { - builder.TagMatchingRule(ruleBuilder => ruleBuilder.RequireTagName(tagName)); + builder.TagMatchingRuleDescriptor(ruleBuilder => ruleBuilder.RequireTagName(tagName)); } configureAction?.Invoke(builder);