class Pakyow::Loader

Loads files that define an app aspect and names the objects appropriately.

Public Class Methods

new(path) click to toggle source
# File lib/pakyow/loader.rb, line 10
def initialize(path)
  @path = path
end

Public Instance Methods

call(target) click to toggle source
# File lib/pakyow/loader.rb, line 14
def call(target)
  code = String.new
  target.__object_name.namespace.parts.each do |part|
    code << "module #{Support.inflector.camelize(part)}\n"
  end

  code << "class #{Support.inflector.camelize(target.__object_name.name)}\n"
  code << File.read(@path)
  code << "end\n"

  target.__object_name.namespace.parts.count.times do
    code << "end\n"
  end

  object = eval(code, TOPLEVEL_BINDING, @path, 1 - target.__object_name.namespace.parts.count - 1)

  if object.respond_to?(:__source_location)
    object.__source_location = [@path, 1]
  end

  object
end