module UnrealReaper

Constants

VERSION

Public Class Methods

included(cls) click to toggle source
# File lib/unreal_reaper.rb, line 16
def included(cls)
  cls.class_eval do
    def self.ur_package(name, opts = {})
      UnrealReaper::Installer.new(self).install(name, opts)
    end
  end
end
load(package, opts = { top_cls: nil, helper_cls: nil, writer_cls: nil }) click to toggle source
# File lib/unreal_reaper.rb, line 24
def load(package, opts = { top_cls: nil, helper_cls: nil, writer_cls: nil })
  name, tm, hm, wm = format_package(package, opts)
  raise "Cannot load a empty package" unless tm || hm || wm
  packages[name.to_sym] = { top_cls: tm, helper_cls: hm, writer_cls: wm }
end
packages() click to toggle source
# File lib/unreal_reaper.rb, line 30
def packages
  @packages ||= {}
end
ur_package(name, opts = {}) click to toggle source
# File lib/unreal_reaper.rb, line 18
def self.ur_package(name, opts = {})
  UnrealReaper::Installer.new(self).install(name, opts)
end

Private Class Methods

format_package(package, opts) click to toggle source
# File lib/unreal_reaper.rb, line 36
def format_package(package, opts)
  opts = opts.symbolize_keys
  name = nil
  tm = opts[:top_cls]
  hm = opts[:helper_cls]
  wm = opts[:writer_cls]

  case package
  when String, Symbol
    name = package.to_sym
  when Module
    name = package.name.underscore
    tm ||= get_package_cls(package, :Top)
    hm ||= get_package_cls(package, :Helper)
    wm ||= get_package_cls(package, :Writer)

    if package.is_a?(Class)
      hm ||= package
      wm ||= package
    end
  else
    raise "The package isn't a module"
  end

  [name, tm, hm, wm]
end
get_package_cls(package, name) click to toggle source
# File lib/unreal_reaper.rb, line 63
def get_package_cls(package, name)
  return unless package.constants.include?(name)
  cls = package.const_get(name)
  raise "'#{name}' is not a class" unless cls.is_a?(Class)
  cls
end