Class: Emjay::Components::MjHtmlAttributes

Inherits:
HeadComponent show all
Defined in:
lib/emjay/components/head/mj_html_attributes.rb

Instance Attribute Summary

Attributes inherited from Emjay::Component

#attributes, #context, #props

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from HeadComponent

#handler_children

Methods inherited from Emjay::Component

allowed_attributes, default_attributes, ending_tag?, #get_attribute, #get_child_context, #get_content, #initialize, raw_element?

Constructor Details

This class inherits a constructor from Emjay::Component

Class Method Details

.component_nameObject



9
10
11
# File 'lib/emjay/components/head/mj_html_attributes.rb', line 9

def self.component_name
  "mj-html-attributes"
end

Instance Method Details

#handlerObject



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/emjay/components/head/mj_html_attributes.rb', line 13

def handler
  add = @context[:add]
  children = @props[:children] || []

  children.select { |c| c[:tag_name] == "mj-selector" }.each do |selector|
    path = (selector[:attributes] || {})["path"]

    custom = (selector[:children] || [])
      .select { |c| c[:tag_name] == "mj-html-attribute" && (c[:attributes] || {})["name"] }
      .each_with_object({}) { |c, acc|
        acc[c[:attributes]["name"]] = c[:content] || ""
      }

    add.call(:html_attributes, path, custom)
  end
end