class Faceter::Rules::PrependNested

Optimizes AST by moving nested nodes from the array level to one level deeper:

@example Removes unnecessary iterations by items of the same array.

prefix "foo", nested: true
list do
  # ...
end

# Becomes:
list do
  prefix "foo", nested: true
  # ...
end

@example Removes “flat” operation that cannot be applied to non-hashes

prefix "foo", nested: false
list do
  # ...
end

# Becomes:
list do
  # ...
end

@api private

Public Instance Methods

optimize() click to toggle source

@private

# File lib/faceter/rules/prepend_nested.rb, line 43
def optimize
  Nodes::List.new { (left.nested ? [left] : []) + right.entries }
end
optimize?() click to toggle source

@private

# File lib/faceter/rules/prepend_nested.rb, line 38
def optimize?
  left.respond_to?(:nested) && right.instance_of?(Nodes::List)
end