Class: SvgConform::Requirements::ForbiddenContentRequirement
- Inherits:
-
BaseRequirement
- Object
- Lutaml::Model::Serializable
- BaseRequirement
- SvgConform::Requirements::ForbiddenContentRequirement
- Defined in:
- lib/svg_conform/requirements/forbidden_content_requirement.rb
Instance Method Summary collapse
- #check(node, context) ⇒ Object
- #validate_document(document, context) ⇒ Object
- #validate_sax_element(element, context) ⇒ Object
Methods inherited from BaseRequirement
#collect_sax_data, #get_attributes, #needs_deferred_validation?, #should_check_node?, #skip_attribute_validation?, #to_s, #validate_sax_complete
Methods included from Interfaces::RequirementInterface
#collect_sax_data, #needs_deferred_validation?, #reset_state, #should_check_node?, #to_s, #validate_sax_complete
Methods included from NodeHelpers
#element?, #get_attribute, #has_attribute?, #remove_attribute, #set_attribute, #text?
Instance Method Details
#check(node, context) ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/svg_conform/requirements/forbidden_content_requirement.rb', line 29 def check(node, context) return unless element?(node) # Check if this is a forbidden element if forbidden_elements.include?(node.name) context.add_error( requirement_id: id, message: "Forbidden element '#{node.name}' is not allowed", node: node, severity: :error, ) end # Check for forbidden attributes if node.respond_to?(:attributes) && node.attributes node.attributes.each do |attr| attr_name = attr.respond_to?(:name) ? attr.name : attr.to_s if forbidden_attributes.include?(attr_name) context.add_error( requirement_id: id, message: "Forbidden attribute '#{attr_name}' is not allowed", node: node, severity: :error, ) end end end end |
#validate_document(document, context) ⇒ Object
23 24 25 26 27 |
# File 'lib/svg_conform/requirements/forbidden_content_requirement.rb', line 23 def validate_document(document, context) document.traverse do |node| check(node, context) if should_check_node?(node) end end |
#validate_sax_element(element, context) ⇒ Object
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/svg_conform/requirements/forbidden_content_requirement.rb', line 59 def validate_sax_element(element, context) # Check if this is a forbidden element if forbidden_elements.include?(element.name) context.add_error( requirement_id: id, message: "Forbidden element '#{element.name}' is not allowed", node: element, severity: :error, ) end # Check for forbidden attributes element.attributes.each do |attr| attr_name = attr.name if forbidden_attributes.include?(attr_name) context.add_error( requirement_id: id, message: "Forbidden attribute '#{attr_name}' is not allowed", node: element, severity: :error, ) end end end |