Class: Pakyow::Loader

Inherits:
Object
  • Object
show all
Defined in:
lib/pakyow/loader.rb

Overview

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

Instance Method Summary collapse

Constructor Details

#initialize(path) ⇒ Loader

Returns a new instance of Loader.



10
11
12
# File 'lib/pakyow/loader.rb', line 10

def initialize(path)
  @path = path
end

Instance Method Details

#call(target) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# 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