Module: Goat::DOMTools

Defined in:
lib/goat/html.rb

Defined Under Namespace

Classes: HTMLBuilder, InvalidBodyError, Traverser

Class Method Summary collapse

Class Method Details

.expanded_dom(dom) ⇒ Object



128
129
130
131
132
133
134
135
136
# File 'lib/goat/html.rb', line 128

def self.expanded_dom(dom)
  DOMTools.transpose(dom) do |elt, update|
    if elt.kind_of?(Component)
      raise "Component #{elt} has no ID: was super's initialize called?" unless elt.id
      Dynamic[:expander].component_used(elt)
      update.call(elt.component(elt.expanded_dom))
    end
  end
end

.inject_prefixes(id, dom) ⇒ Object



138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
# File 'lib/goat/html.rb', line 138

def self.inject_prefixes(id, dom)
  DOMTools.traverse(dom) do |elt|
    if elt.kind_of?(Array) && elt.first.is_a?(Symbol) && elt[1].is_a?(Hash)
      attrs = elt[1]
      elt[1] = attrs.map_to_hash do |k, v|
        if v.kind_of?(String)
          [k, v.prefix_ns(id)]
        elsif v.kind_of?(Array) && HTMLBuilder::ARRAY_ATTRS.include?(k)
          [k, v]
        elsif v.kind_of?(Integer) && HTMLBuilder::INTEGER_ATTRS.include?(k)
          [k, v]
        else
          raise "Invalid object #{v.inspect} to get a prefix in dom:\n#{dom.inspect}"
        end
      end
    end
  end
  dom
end

.transpose(tree, dlg = nil, &blk) ⇒ Object



126
# File 'lib/goat/html.rb', line 126

def self.transpose(tree, dlg=nil, &blk); Traverser.transpose(tree, dlg, &blk); end

.traverse(tree, dlg = nil, &blk) ⇒ Object



125
# File 'lib/goat/html.rb', line 125

def self.traverse(tree, dlg=nil, &blk); Traverser.traverse(tree, dlg, &blk); end