private void ReadTagMatchingRule(TagMatchingRuleDescriptorBuilder builder, JObject rule, JsonSerializer serializer) { var tagName = rule[nameof(TagMatchingRuleDescriptor.TagName)].Value <string>(); var attributes = rule[nameof(TagMatchingRuleDescriptor.Attributes)].Value <JArray>(); var parentTag = rule[nameof(TagMatchingRuleDescriptor.ParentTag)].Value <string>(); var tagStructure = rule[nameof(TagMatchingRuleDescriptor.TagStructure)].Value <int>(); var diagnostics = rule[nameof(TagMatchingRuleDescriptor.Diagnostics)].Value <JArray>(); builder.TagName = tagName; builder.ParentTag = parentTag; builder.TagStructure = (TagStructure)tagStructure; foreach (var attribute in attributes) { var attibuteValue = attribute.Value <JObject>(); builder.Attribute(b => ReadRequiredAttribute(b, attibuteValue, serializer)); } foreach (var diagnostic in diagnostics) { var diagnosticReader = diagnostic.CreateReader(); var diagnosticObject = serializer.Deserialize <RazorDiagnostic>(diagnosticReader); builder.Diagnostics.Add(diagnosticObject); } }
private static void ReadTagMatchingRule(TagMatchingRuleDescriptorBuilder builder, JObject rule, JsonSerializer serializer) { string tagName = rule["TagName"].Value <string>(); JArray jArray = rule["Attributes"].Value <JArray>(); string parentTag = rule["ParentTag"].Value <string>(); int tagStructure = rule["TagStructure"].Value <int>(); JArray jArray2 = rule["Diagnostics"].Value <JArray>(); builder.TagName = tagName; builder.ParentTag = parentTag; builder.TagStructure = (TagStructure)tagStructure; foreach (JToken item2 in jArray) { JObject attibuteValue = item2.Value <JObject>(); builder.Attribute(delegate(RequiredAttributeDescriptorBuilder b) { ReadRequiredAttribute(b, attibuteValue, serializer); }); } foreach (JToken item3 in jArray2) { JsonReader reader = item3.CreateReader(); RazorDiagnostic item = serializer.Deserialize <RazorDiagnostic>(reader); builder.Diagnostics.Add(item); } }
public void AddRequiredAttributes(TagMatchingRuleDescriptorBuilder ruleBuilder) { if (string.IsNullOrEmpty(_requiredAttributes)) { return; } var descriptors = new List <RequiredAttributeDescriptor>(); PassOptionalWhitespace(); do { var successfulParse = true; ruleBuilder.Attribute(attributeBuilder => { if (At('[')) { if (!TryParseCssSelector(attributeBuilder)) { successfulParse = false; return; } } else { ParsePlainSelector(attributeBuilder); } PassOptionalWhitespace(); if (At(',')) { _index++; if (!EnsureNotAtEnd(attributeBuilder)) { successfulParse = false; return; } } else if (!AtEnd) { //var diagnostic = RazorDiagnosticFactory.CreateTagHelper_InvalidRequiredAttributeCharacter(Current, _requiredAttributes); //attributeBuilder.Diagnostics.Add(diagnostic); successfulParse = false; return; } PassOptionalWhitespace(); }); if (!successfulParse) { break; } }while (!AtEnd); }
private static void ReadRequiredAttribute(JsonReader reader, TagMatchingRuleDescriptorBuilder builder) { if (!reader.Read()) { return; } if (reader.TokenType != JsonToken.StartObject) { return; } builder.Attribute(attribute => { reader.ReadProperties(propertyName => { switch (propertyName) { case nameof(RequiredAttributeDescriptor.Name): if (reader.Read()) { var name = (string)reader.Value; attribute.Name = name; } break; case nameof(RequiredAttributeDescriptor.NameComparison): var nameComparison = (RequiredAttributeDescriptor.NameComparisonMode)reader.ReadAsInt32(); attribute.NameComparisonMode = nameComparison; break; case nameof(RequiredAttributeDescriptor.Value): if (reader.Read()) { var value = (string)reader.Value; attribute.Value = value; } break; case nameof(RequiredAttributeDescriptor.ValueComparison): var valueComparison = (RequiredAttributeDescriptor.ValueComparisonMode)reader.ReadAsInt32(); attribute.ValueComparisonMode = valueComparison; break; case nameof(RequiredAttributeDescriptor.Diagnostics): ReadDiagnostics(reader, attribute.Diagnostics); break; case nameof(RequiredAttributeDescriptor.Metadata): ReadMetadata(reader, attribute.Metadata); break; } }); }); }
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 AddDiagnostic(this TagMatchingRuleDescriptorBuilder builder, RazorDiagnostic diagnostic) { if (builder == null) { throw new ArgumentNullException(nameof(builder)); } builder.Diagnostics.Add(diagnostic); 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 RequireAttributeDescriptor( this TagMatchingRuleDescriptorBuilder builder, Action <RequiredAttributeDescriptorBuilder> configure) { if (builder == null) { throw new ArgumentNullException(nameof(builder)); } builder.Attribute(configure); return(builder); }
private static void ReadRequiredAttributeValues(JsonReader reader, TagMatchingRuleDescriptorBuilder builder) { if (!reader.Read()) { return; } if (reader.TokenType != JsonToken.StartArray) { return; } do { ReadRequiredAttribute(reader, builder); } while (reader.TokenType != JsonToken.EndArray); }
public static void AddRequiredAttributes(string requiredAttributes, TagMatchingRuleDescriptorBuilder ruleBuilder) { var requiredAttributeParser = new DefaultRequiredAttributeParser(requiredAttributes); requiredAttributeParser.AddRequiredAttributes(ruleBuilder); }