Sha256: e7e08825039c309b2e6ddbdbf5058353d79bf0eae3eba9605681ca8d8f7747ec

Contents?: true

Size: 783 Bytes

Versions: 5

Compression:

Stored size: 783 Bytes

Contents

# frozen_string_literal: true

require "pakyow/support/inflector"
require "pakyow/support/makeable"

module Pakyow
  # Loads files that define an app aspect and names the objects appropriately.
  #
  class Loader
    def initialize(path)
      @path = path
    end

    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

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

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
pakyow-core-1.0.0.rc5 lib/pakyow/loader.rb
pakyow-core-1.0.0.rc4 lib/pakyow/loader.rb
pakyow-core-1.0.0.rc3 lib/pakyow/loader.rb
pakyow-core-1.0.0.rc2 lib/pakyow/loader.rb
pakyow-core-1.0.0.rc1 lib/pakyow/loader.rb