class Goku::ElementFactory

Attributes

path[R]

Public Class Methods

new(path) click to toggle source
# File lib/goku/element_factory.rb, line 6
def initialize(path)
  @path = path
end

Public Instance Methods

ancestor_names() click to toggle source
# File lib/goku/element_factory.rb, line 26
def ancestor_names
  @ancestor_names ||= @path.directories.drop(1)
end
ancestors() click to toggle source
# File lib/goku/element_factory.rb, line 22
def ancestors
  @ancestors ||= ancestor_names.map { |m| Goku::Elements::Module.new(m) }
end
create_class() click to toggle source
# File lib/goku/element_factory.rb, line 10
def create_class
  nested(Goku::Elements::Class.new(path.filename))
end
create_module() click to toggle source
# File lib/goku/element_factory.rb, line 14
def create_module
  nested(Goku::Elements::Module.new(path.filename))
end
create_spec() click to toggle source
# File lib/goku/element_factory.rb, line 18
def create_spec
  Goku::Elements::Spec.new(path.filename, ancestor_names)
end
nested(element) click to toggle source
# File lib/goku/element_factory.rb, line 30
def nested(element)
  elements = ancestors << element

  elements.each_cons(2) { |parent, sub| parent.add(sub) }

  elements.first
end