class Markaby::Tagset

Attributes

doctype[RW]
forms[RW]
self_closing[RW]
tags[RW]
tagset[RW]

Public Class Methods

can_handle?(tag_name) click to toggle source
# File lib/markaby/tagset.rb, line 39
def can_handle? tag_name
  false
end
default_options() click to toggle source
# File lib/markaby/tagset.rb, line 35
def default_options
  {tagset: self}
end
handle_tag(tag_name, builder, *args, &block) click to toggle source
# File lib/markaby/tagset.rb, line 43
def handle_tag tag_name, builder, *args, &block
  raise NoMethodError.new
end
transform_attribute_hash(attributes, prefix) click to toggle 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
transform_attribute_name(name) click to toggle source
# File lib/markaby/tagset.rb, line 66
def transform_attribute_name name
  name.to_s.downcase.tr("_", "-").to_sym
end
transform_attributes(tag_name, attributes) click to toggle 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
valid_attribute_name?(tag_name, attribute_name) click to toggle 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
validate_and_transform_attributes!(tag_name, *args) click to toggle 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
validate_and_transform_tag_name!(tag_name) click to toggle 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
validate_attribute!(tag_name, attribute_name) click to toggle 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