module Mutant::AST::NamedChildren::ClassMethods

def children(*names)

Returns:
  • (undefined) -
def children(*names)
  names.each_with_index do |name, index|
    define_named_child(name, index)
  end
  define_remaining_children(names)
end

def define_named_child(name, index)

Returns:
  • (undefined) -

Parameters:
  • index (Integer) --
  • name (Symbol) --
def define_named_child(name, index)
  define_private_method(name) do
    children.at(index)
  end
end

def define_private_method(name, &)

Returns:
  • (undefined) -

Parameters:
  • name (Symbol) --
def define_private_method(name, &)
  define_method(name, &)
  private(name)
end

def define_remaining_children(names)

Returns:
  • (undefined) -

Parameters:
  • names (Array) --
def define_remaining_children(names)
  define_private_method(:remaining_children_with_index) do
    children.each_with_index.drop(names.length)
  end
  define_private_method(:remaining_children_indices) do
    children.each_index.drop(names.length)
  end
  define_private_method(:remaining_children) do
    children.drop(names.length)
  end
end