class Markaby::Tagset
Attributes
Public Class Methods
Source
# File lib/markaby/tagset.rb, line 39 def can_handle? tag_name false end
Source
# File lib/markaby/tagset.rb, line 35 def default_options {tagset: self} end
Source
# File lib/markaby/tagset.rb, line 43 def handle_tag tag_name, builder, *args, &block raise NoMethodError.new end
Source
# File lib/markaby/tagset.rb, line 70 def transform_attribute_hash attributes, prefix values = attributes[prefix] expanded_attributes = {} values.each do |suffix, value| name = transform_attribute_name "#{prefix}-#{suffix}" expanded_attributes[name] = value end attributes.merge!(expanded_attributes).delete(prefix) end
Source
# File lib/markaby/tagset.rb, line 66 def transform_attribute_name name name.to_s.downcase.tr("_", "-").to_sym end
Source
# File lib/markaby/tagset.rb, line 56 def transform_attributes tag_name, attributes attributes[:name] ||= attributes[:id] if forms.include?(tag_name) && attributes[:id] attributes.transform_keys! { |name| transform_attribute_name name } hashed_attributes = attributes.keys.select { |name| attributes[name].is_a? Hash } hashed_attributes.each { |name| transform_attribute_hash attributes, name } attributes.reject! { |name, value| name.nil? || (AttrsBoolean.include?(name) && value.nil?) } attributes.keys.each { |name| validate_attribute! tag_name, name } attributes end
Source
# File lib/markaby/tagset.rb, line 84 def valid_attribute_name? tag_name, attribute_name attribute_name.to_s.start_with?(":", "data-", "aria-") || @tagset[tag_name].include?(attribute_name) end
Source
# File lib/markaby/tagset.rb, line 52 def validate_and_transform_attributes! tag_name, *args args.last.respond_to?(:to_hash) ? transform_attributes(tag_name, args.last.to_hash) : {} end
Source
# File lib/markaby/tagset.rb, line 47 def validate_and_transform_tag_name! tag_name raise(InvalidXhtmlError, "no element `#{tag_name}' for #{doctype}") unless @tagset.has_key?(tag_name) tag_name end
Source
# File lib/markaby/tagset.rb, line 80 def validate_attribute! tag_name, attribute_name raise InvalidXhtmlError, "no attribute `#{attribute_name}' on #{tag_name} elements" unless valid_attribute_name? tag_name, attribute_name end