module Mutest::AST::NamedChildren::ClassMethods

Methods mixed in at class level

Private Instance Methods

children(*names) click to toggle source

Create name helpers

@return [undefined]

# File lib/mutest/ast/named_children.rb, line 67
def children(*names)
  names.each_with_index do |name, index|
    define_named_child(name, index)
  end
  define_remaining_children(names)
end
define_named_child(name, index) click to toggle source

Define named child

@param [Symbol] name @param [Integer] index

@return [undefined]

# File lib/mutest/ast/named_children.rb, line 39
def define_named_child(name, index)
  define_private_method(name) do
    children.at(index)
  end
end
define_private_method(name, &block) click to toggle source

Define private method

@param [Symbol] name

@return [undefined]

# File lib/mutest/ast/named_children.rb, line 79
def define_private_method(name, &block)
  define_method(name, &block)
  private(name)
end
define_remaining_children(names) click to toggle source

Define remaining children

@param [Array<Symbol>] names

@return [undefined]

# File lib/mutest/ast/named_children.rb, line 50
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