Moved all TagHelperDescriptor related builders to have getter setter
instead of methods More polish to the tag helper descriptor builders. - Expose underlying builders as getter only list - Added AsDictionary() extension method to BoundAttributeDescriptorBuilder - Expose diagnostics as RazorDiagnosticCollection - Got rid of Require** prefix in TagMatchingRuleBuilder - Workaround issue aspnet/Razor#1492 by copying the test descriptor extensions
This commit is contained in:
parent
4db7f2eb6d
commit
9c031e6fb5
|
|
@ -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
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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<string, string> 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; }
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<string, string> _metadata;
|
||||
private HashSet<RazorDiagnostic> _diagnostics;
|
||||
|
||||
private DefaultRazorDiagnosticCollection _diagnostics;
|
||||
|
||||
public DefaultBoundAttributeDescriptorBuilder(DefaultTagHelperDescriptorBuilder parent, string kind)
|
||||
{
|
||||
|
|
@ -50,70 +42,35 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
_metadata = new Dictionary<string, string>();
|
||||
}
|
||||
|
||||
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<string, string> 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<string, string>(_metadata),
|
||||
new Dictionary<string, string>(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<RazorDiagnostic> 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<RazorDiagnostic>();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<RazorDiagnostic> _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<RazorDiagnostic>());
|
||||
|
||||
|
|
@ -74,7 +55,7 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
|
||||
private IEnumerable<RazorDiagnostic> 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<RazorDiagnostic>();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<string, string> _metadata;
|
||||
|
||||
private string _displayName;
|
||||
private string _documentation;
|
||||
private string _tagOutputHint;
|
||||
private HashSet<string> _allowedChildTags;
|
||||
private List<DefaultBoundAttributeDescriptorBuilder> _attributeBuilders;
|
||||
private List<DefaultTagMatchingRuleDescriptorBuilder> _tagMatchingRuleBuilders;
|
||||
private HashSet<RazorDiagnostic> _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<string, string>(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<string> AllowedChildTags
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_allowedChildTags == null)
|
||||
{
|
||||
_allowedChildTags = new HashSet<string>(StringComparer.OrdinalIgnoreCase);
|
||||
}
|
||||
|
||||
return _allowedChildTags;
|
||||
}
|
||||
}
|
||||
|
||||
public override string TagOutputHint { get; set; }
|
||||
|
||||
public override string Documentation { get; set; }
|
||||
|
||||
public override IDictionary<string, string> Metadata => _metadata;
|
||||
|
||||
public override TagHelperDescriptorBuilder BindAttribute(Action<BoundAttributeDescriptorBuilder> configure)
|
||||
public override RazorDiagnosticCollection Diagnostics
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_diagnostics == null)
|
||||
{
|
||||
_diagnostics = new DefaultRazorDiagnosticCollection();
|
||||
}
|
||||
|
||||
return _diagnostics;
|
||||
}
|
||||
}
|
||||
|
||||
public override IReadOnlyList<BoundAttributeDescriptorBuilder> BoundAttributes
|
||||
{
|
||||
get
|
||||
{
|
||||
EnsureAttributeBuilders();
|
||||
|
||||
return _attributeBuilders;
|
||||
}
|
||||
}
|
||||
|
||||
public override IReadOnlyList<TagMatchingRuleDescriptorBuilder> TagMatchingRules
|
||||
{
|
||||
get
|
||||
{
|
||||
EnsureTagMatchingRuleBuilders();
|
||||
|
||||
return _tagMatchingRuleBuilders;
|
||||
}
|
||||
}
|
||||
|
||||
public override void BindAttribute(Action<BoundAttributeDescriptorBuilder> 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<TagMatchingRuleDescriptorBuilder> configure)
|
||||
public override void TagMatchingRule(Action<TagMatchingRuleDescriptorBuilder> 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<string>(),
|
||||
|
|
@ -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<RazorDiagnostic> Validate()
|
||||
|
|
@ -227,21 +227,5 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
_tagMatchingRuleBuilders = new List<DefaultTagMatchingRuleDescriptorBuilder>();
|
||||
}
|
||||
}
|
||||
|
||||
private void EnsureAllowedChildTags()
|
||||
{
|
||||
if (_allowedChildTags == null)
|
||||
{
|
||||
_allowedChildTags = new HashSet<string>(StringComparer.OrdinalIgnoreCase);
|
||||
}
|
||||
}
|
||||
|
||||
private void EnsureDiagnostics()
|
||||
{
|
||||
if (_diagnostics == null)
|
||||
{
|
||||
_diagnostics = new HashSet<RazorDiagnostic>();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,38 +10,43 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
{
|
||||
internal class DefaultTagMatchingRuleDescriptorBuilder : TagMatchingRuleDescriptorBuilder
|
||||
{
|
||||
private string _tagName;
|
||||
private string _parentTag;
|
||||
private TagStructure _tagStructure;
|
||||
private List<DefaultRequiredAttributeDescriptorBuilder> _requiredAttributeBuilders;
|
||||
private HashSet<RazorDiagnostic> _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<RequiredAttributeDescriptorBuilder> Attributes
|
||||
{
|
||||
_parentTag = parentTag;
|
||||
get
|
||||
{
|
||||
EnsureRequiredAttributeBuilders();
|
||||
|
||||
return this;
|
||||
return _requiredAttributeBuilders;
|
||||
}
|
||||
}
|
||||
|
||||
public override TagMatchingRuleDescriptorBuilder RequireTagStructure(TagStructure tagStructure)
|
||||
{
|
||||
_tagStructure = tagStructure;
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
public override TagMatchingRuleDescriptorBuilder RequireAttribute(Action<RequiredAttributeDescriptorBuilder> configure)
|
||||
public override void Attribute(Action<RequiredAttributeDescriptorBuilder> 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<RazorDiagnostic> 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<DefaultRequiredAttributeDescriptorBuilder>();
|
||||
}
|
||||
}
|
||||
|
||||
private void EnsureDiagnostics()
|
||||
{
|
||||
if (_diagnostics == null)
|
||||
{
|
||||
_diagnostics = new HashSet<RazorDiagnostic>();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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; }
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<string> AllowedChildTags { get; }
|
||||
|
||||
public abstract IDictionary<string, string> Metadata { get; }
|
||||
|
||||
public abstract TagHelperDescriptorBuilder BindAttribute(Action<BoundAttributeDescriptorBuilder> configure);
|
||||
public abstract RazorDiagnosticCollection Diagnostics { get; }
|
||||
|
||||
public abstract TagHelperDescriptorBuilder TagMatchingRule(Action<TagMatchingRuleDescriptorBuilder> configure);
|
||||
public abstract IReadOnlyList<BoundAttributeDescriptorBuilder> BoundAttributes { get; }
|
||||
|
||||
public abstract TagHelperDescriptorBuilder AllowChildTag(string allowedChild);
|
||||
public abstract IReadOnlyList<TagMatchingRuleDescriptorBuilder> TagMatchingRules { get; }
|
||||
|
||||
public abstract TagHelperDescriptorBuilder TagOutputHint(string hint);
|
||||
public abstract void BindAttribute(Action<BoundAttributeDescriptorBuilder> 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<TagMatchingRuleDescriptorBuilder> configure);
|
||||
|
||||
public abstract TagHelperDescriptor Build();
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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<RequiredAttributeDescriptorBuilder> configure);
|
||||
public abstract RazorDiagnosticCollection Diagnostics { get; }
|
||||
|
||||
public abstract TagMatchingRuleDescriptorBuilder AddDiagnostic(RazorDiagnostic diagnostic);
|
||||
public abstract IReadOnlyList<RequiredAttributeDescriptorBuilder> Attributes { get; }
|
||||
|
||||
public abstract void Attribute(Action<RequiredAttributeDescriptorBuilder> configure);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<string, TValue> 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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<string>();
|
||||
builder.AllowChildTag(tagValue);
|
||||
builder.AllowedChildTags.Add(tagValue);
|
||||
}
|
||||
|
||||
foreach (var diagnostic in diagnostics)
|
||||
{
|
||||
var diagnosticReader = diagnostic.CreateReader();
|
||||
var diagnosticObject = serializer.Deserialize<RazorDiagnostic>(diagnosticReader);
|
||||
builder.AddDiagnostic(diagnosticObject);
|
||||
builder.Diagnostics.Add(diagnosticObject);
|
||||
}
|
||||
|
||||
var metadataReader = metadata.CreateReader();
|
||||
var metadataValue = serializer.Deserialize<Dictionary<string, string>>(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<int>();
|
||||
var diagnostics = rule[nameof(TagMatchingRuleDescriptor.Diagnostics)].Value<JArray>();
|
||||
|
||||
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<JObject>();
|
||||
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<RazorDiagnostic>(diagnosticReader);
|
||||
builder.AddDiagnostic(diagnosticObject);
|
||||
builder.Diagnostics.Add(diagnosticObject);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -122,17 +120,16 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor
|
|||
var valueComparison = attribute[nameof(RequiredAttributeDescriptor.ValueComparison)].Value<int>();
|
||||
var diagnostics = attribute[nameof(RequiredAttributeDescriptor.Diagnostics)].Value<JArray>();
|
||||
|
||||
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<RazorDiagnostic>(diagnosticReader);
|
||||
builder.AddDiagnostic(diagnosticObject);
|
||||
builder.Diagnostics.Add(diagnosticObject);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -148,10 +145,9 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor
|
|||
var diagnostics = attribute[nameof(BoundAttributeDescriptor.Diagnostics)].Value<JArray>();
|
||||
var metadata = attribute[nameof(BoundAttributeDescriptor.Metadata)].Value<JObject>();
|
||||
|
||||
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<RazorDiagnostic>(diagnosticReader);
|
||||
builder.AddDiagnostic(diagnosticObject);
|
||||
builder.Diagnostics.Add(diagnosticObject);
|
||||
}
|
||||
|
||||
var metadataReader = metadata.CreateReader();
|
||||
var metadataValue = serializer.Deserialize<Dictionary<string, string>>(metadataReader);
|
||||
foreach (var item in metadataValue)
|
||||
{
|
||||
builder.AddMetadata(item.Key, item.Value);
|
||||
builder.Metadata[item.Key] = item.Value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
};
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
||||
|
|
|
|||
|
|
@ -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<System.String>")
|
||||
.DisplayName("System.Collections.Generic.List<System.String> GenericParameterViewComponentTagHelper.Foo"))
|
||||
.BindAttribute(attribute =>
|
||||
.BoundAttributeDescriptor(attribute =>
|
||||
attribute
|
||||
.Name("bar")
|
||||
.PropertyName("Bar")
|
||||
.TypeName("System.Collections.Generic.Dictionary<System.String, System.Int32>")
|
||||
.AsDictionary("bar-", typeof(int).FullName)
|
||||
.AsDictionaryAttribute("bar-", typeof(int).FullName)
|
||||
.DisplayName("System.Collections.Generic.Dictionary<System.String, System.Int32> GenericParameterViewComponentTagHelper.Bar"))
|
||||
.AddMetadata(ViewComponentTagHelperMetadata.Name, "GenericParameter")
|
||||
.Build();
|
||||
|
|
|
|||
|
|
@ -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")
|
||||
|
|
|
|||
|
|
@ -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<System.String, System.Int32>")
|
||||
.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()
|
||||
};
|
||||
|
|
|
|||
|
|
@ -162,7 +162,7 @@ __InputTagHelper.FooProp = 42;
|
|||
.Name("bound")
|
||||
.PropertyName("FooProp")
|
||||
.TypeName("System.Collections.Generic.Dictionary<System.String, System.Int32>")
|
||||
.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();
|
||||
|
||||
|
|
|
|||
|
|
@ -394,7 +394,7 @@ __tagHelperExecutionContext.AddTagHelperAttribute(""bound"", __InputTagHelper.Fo
|
|||
.Name("bound")
|
||||
.PropertyName("FooProp")
|
||||
.TypeName("System.Collections.Generic.Dictionary<System.String, System.Int32>")
|
||||
.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();
|
||||
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
||||
|
|
|
|||
|
|
@ -204,11 +204,11 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
ruleBuilders: new Action<TagMatchingRuleDescriptorBuilder>[]
|
||||
{
|
||||
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<TagMatchingRuleDescriptorBuilder>[]
|
||||
{
|
||||
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();
|
||||
|
|
|
|||
|
|
@ -187,7 +187,7 @@ __tagHelperExecutionContext.AddTagHelperAttribute(_tagHelper1);
|
|||
builder
|
||||
.Name("Foo")
|
||||
.TypeName("System.Collections.Generic.Dictionary<System.String, System.String>")
|
||||
.AsDictionary("pre-", "System.String")
|
||||
.AsDictionaryAttribute("pre-", "System.String")
|
||||
.PropertyName("FooProp");
|
||||
|
||||
var descriptor = builder.Build();
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
||||
|
|
|
|||
|
|
@ -62,7 +62,7 @@ namespace Microsoft.AspNetCore.Razor.Language.IntegrationTests
|
|||
ruleBuilders: new Action<TagMatchingRuleDescriptorBuilder>[]
|
||||
{
|
||||
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<TagMatchingRuleDescriptorBuilder>[]
|
||||
{
|
||||
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<TagMatchingRuleDescriptorBuilder>[]
|
||||
{
|
||||
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<TagMatchingRuleDescriptorBuilder>[]
|
||||
{
|
||||
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<TagMatchingRuleDescriptorBuilder>[]
|
||||
{
|
||||
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<TagMatchingRuleDescriptorBuilder>[]
|
||||
{
|
||||
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<TagMatchingRuleDescriptorBuilder>[]
|
||||
{
|
||||
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<TagMatchingRuleDescriptorBuilder>[]
|
||||
{
|
||||
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<TagMatchingRuleDescriptorBuilder>[]
|
||||
{
|
||||
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<TagMatchingRuleDescriptorBuilder>[]
|
||||
{
|
||||
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<TagMatchingRuleDescriptorBuilder>[]
|
||||
{
|
||||
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<TagMatchingRuleDescriptorBuilder>[]
|
||||
{
|
||||
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<TagMatchingRuleDescriptorBuilder>[]
|
||||
{
|
||||
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<TagMatchingRuleDescriptorBuilder>[]
|
||||
{
|
||||
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<TagMatchingRuleDescriptorBuilder>[]
|
||||
{
|
||||
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<string, int>).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<string, string>")
|
||||
.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<string, string>")
|
||||
.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();
|
||||
|
|
|
|||
|
|
@ -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<string>).Namespace + "List<System.String>"))
|
||||
.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<string, int>).Namespace + ".IDictionary<System.String, System.Int32>")
|
||||
.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<string, string>).Namespace + ".IDictionary<System.String, System.String>")
|
||||
.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")
|
||||
|
|
|
|||
|
|
@ -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(),
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 };
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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<BoundAttributeDescriptorBuilder> configure)
|
||||
{
|
||||
if (builder == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(builder));
|
||||
}
|
||||
|
||||
builder.BindAttribute(configure);
|
||||
|
||||
return builder;
|
||||
}
|
||||
|
||||
public static TagHelperDescriptorBuilder TagMatchingRuleDescriptor(
|
||||
this TagHelperDescriptorBuilder builder,
|
||||
Action<TagMatchingRuleDescriptorBuilder> configure)
|
||||
{
|
||||
if (builder == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(builder));
|
||||
}
|
||||
|
||||
builder.TagMatchingRule(configure);
|
||||
|
||||
return builder;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<RequiredAttributeDescriptorBuilder> configure)
|
||||
{
|
||||
if (builder == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(builder));
|
||||
}
|
||||
|
||||
builder.Attribute(configure);
|
||||
|
||||
return builder;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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<TagMatchingRuleDescriptorBuilder>[]
|
||||
{
|
||||
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<TagMatchingRuleDescriptorBuilder>[]
|
||||
{
|
||||
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<TagMatchingRuleDescriptorBuilder>[]
|
||||
{
|
||||
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<TagMatchingRuleDescriptorBuilder>[]
|
||||
{
|
||||
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<TagMatchingRuleDescriptorBuilder>[]
|
||||
{
|
||||
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<TagMatchingRuleDescriptorBuilder>[]
|
||||
{
|
||||
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<TagMatchingRuleDescriptorBuilder>[]
|
||||
{
|
||||
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<TagMatchingRuleDescriptorBuilder>[]
|
||||
{
|
||||
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<TagMatchingRuleDescriptorBuilder>[]
|
||||
{
|
||||
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}<System.String, System.String>")
|
||||
.AsDictionary("dictionary-property-", typeof(string).FullName);
|
||||
.AsDictionaryAttribute("dictionary-property-", typeof(string).FullName);
|
||||
}),
|
||||
},
|
||||
Enumerable.Empty<RazorDiagnostic>()
|
||||
|
|
@ -1801,7 +1801,7 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces
|
|||
.Name("valid-name")
|
||||
.PropertyName(nameof(SingleValidHtmlAttributePrefix.DictionaryProperty))
|
||||
.TypeName($"{dictionaryNamespace}<System.String, System.String>")
|
||||
.AsDictionary("valid-name-", typeof(string).FullName);
|
||||
.AsDictionaryAttribute("valid-name-", typeof(string).FullName);
|
||||
}),
|
||||
},
|
||||
Enumerable.Empty<RazorDiagnostic>()
|
||||
|
|
@ -1816,7 +1816,7 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces
|
|||
.Name("valid-name1")
|
||||
.PropertyName(nameof(MultipleValidHtmlAttributePrefix.DictionaryProperty))
|
||||
.TypeName($"{typeof(Dictionary<,>).Namespace}.Dictionary<System.String, System.Object>")
|
||||
.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<object>).Namespace + ".GenericDictionarySubclass<System.Object>")
|
||||
.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<string, int>).Namespace + ".SortedDictionary<System.String, System.Int32>")
|
||||
.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}<System.String, System.Int32>")
|
||||
.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}<System.String, System.String>")
|
||||
.AsDictionary("valid-prefix6", typeof(string).FullName);
|
||||
.AsDictionaryAttribute("valid-prefix6", typeof(string).FullName);
|
||||
}),
|
||||
},
|
||||
Enumerable.Empty<RazorDiagnostic>()
|
||||
|
|
@ -1913,7 +1913,7 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces
|
|||
.Name("valid-name2")
|
||||
.PropertyName(nameof(MultipleInvalidHtmlAttributePrefix.DictionaryOfIntProperty))
|
||||
.TypeName($"{typeof(Dictionary<,>).Namespace}.Dictionary<System.Int32, System.String>")
|
||||
.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}<System.Int32, System.String>")
|
||||
.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}<System.String, System.Object>")
|
||||
.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();
|
||||
|
|
|
|||
|
|
@ -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<string, HashSet<BoundAttributeDescriptor>>()
|
||||
|
|
@ -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<string, HashSet<BoundAttributeDescriptor>>()
|
||||
|
|
@ -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<string, HashSet<BoundAttributeDescriptor>>()
|
||||
|
|
@ -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<string, HashSet<BoundAttributeDescriptor>>()
|
||||
|
|
@ -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<string, HashSet<BoundAttributeDescriptor>>()
|
||||
|
|
@ -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<string, HashSet<BoundAttributeDescriptor>>()
|
||||
|
|
@ -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<string, HashSet<BoundAttributeDescriptor>>()
|
||||
|
|
@ -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<string, HashSet<BoundAttributeDescriptor>>()
|
||||
|
|
@ -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<string, HashSet<TagHelperDescriptor>>()
|
||||
|
|
@ -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<string, HashSet<TagHelperDescriptor>>()
|
||||
|
|
@ -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<string, HashSet<TagHelperDescriptor>>()
|
||||
|
|
@ -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<string, HashSet<TagHelperDescriptor>>()
|
||||
|
|
@ -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<string, HashSet<TagHelperDescriptor>>()
|
||||
|
|
@ -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<string, HashSet<TagHelperDescriptor>>()
|
||||
|
|
@ -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<string, HashSet<TagHelperDescriptor>>()
|
||||
|
|
@ -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<string, HashSet<TagHelperDescriptor>>()
|
||||
|
|
@ -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(),
|
||||
|
|
|
|||
|
|
@ -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<string, string>).Namespace + "IDictionary<string, string>")
|
||||
.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<string, string>).Namespace + "IDictionary<string, string>")
|
||||
.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"))
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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<BoundAttributeDescriptorBuilder> configure)
|
||||
{
|
||||
if (builder == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(builder));
|
||||
}
|
||||
|
||||
builder.BindAttribute(configure);
|
||||
|
||||
return builder;
|
||||
}
|
||||
|
||||
public static TagHelperDescriptorBuilder TagMatchingRuleDescriptor(
|
||||
this TagHelperDescriptorBuilder builder,
|
||||
Action<TagMatchingRuleDescriptorBuilder> configure)
|
||||
{
|
||||
if (builder == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(builder));
|
||||
}
|
||||
|
||||
builder.TagMatchingRule(configure);
|
||||
|
||||
return builder;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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<RequiredAttributeDescriptorBuilder> configure)
|
||||
{
|
||||
if (builder == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(builder));
|
||||
}
|
||||
|
||||
builder.Attribute(configure);
|
||||
|
||||
return builder;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -24,16 +24,16 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor
|
|||
{
|
||||
builder => builder
|
||||
.Name("test-attribute")
|
||||
.SetPropertyName("TestAttribute")
|
||||
.PropertyName("TestAttribute")
|
||||
.TypeName("string"),
|
||||
},
|
||||
ruleBuilders: new Action<TagMatchingRuleDescriptorBuilder>[]
|
||||
{
|
||||
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<TagMatchingRuleDescriptorBuilder>[]
|
||||
{
|
||||
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<TagMatchingRuleDescriptorBuilder>[]
|
||||
{
|
||||
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);
|
||||
|
|
|
|||
Loading…
Reference in New Issue