Class: SyntaxTree::Haml::Format::PartList

Inherits:
Object
  • Object
show all
Defined in:
lib/syntax_tree/haml/format.rb

Overview

When formatting a tag, there are a lot of different kinds of things that can be printed out. There’s the tag name, the attributes, the content, etc. This object is responsible for housing all of those parts.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(node) ⇒ PartList

Returns a new instance of PartList.



168
169
170
171
# File 'lib/syntax_tree/haml/format.rb', line 168

def initialize(node)
  @node = node
  @parts = []
end

Instance Attribute Details

#nodeObject (readonly)

Returns the value of attribute node.



166
167
168
# File 'lib/syntax_tree/haml/format.rb', line 166

def node
  @node
end

#partsObject (readonly)

Returns the value of attribute parts.



166
167
168
# File 'lib/syntax_tree/haml/format.rb', line 166

def parts
  @parts
end

Instance Method Details

#<<(part) ⇒ Object



173
174
175
# File 'lib/syntax_tree/haml/format.rb', line 173

def <<(part)
  parts << part
end

#empty?Boolean

Returns:

  • (Boolean)


177
178
179
# File 'lib/syntax_tree/haml/format.rb', line 177

def empty?
  parts.empty?
end

#format(q) ⇒ Object



181
182
183
184
185
186
187
188
189
190
191
192
193
# File 'lib/syntax_tree/haml/format.rb', line 181

def format(q)
  if empty? && node.value[:name] == "div"
    # If we don't have any other parts to print and the tag is a div
    # then we need to make sure to add that to the beginning. Otherwise
    # it's implied by the presence of other operators.
    q.text("%div")
  else
    parts.inject(0) do |align, part|
      part.format(q, align)
      align + part.length
    end
  end
end