module JamesBond::Core::MissionLoader

Public Class Methods

append_default_missions(mission_list) click to toggle source
# File lib/james_bond/core/mission_loader.rb, line 35
def self.append_default_missions(mission_list)
  mission_list + default_missions.map do |mission_class|
    klass = Object.const_get(mission_class)
    klass.new
  end
end
constantize_gem_name(gem_name) click to toggle source
# File lib/james_bond/core/mission_loader.rb, line 42
def self.constantize_gem_name(gem_name)
  class_name = (gem_name || "").split("-")
                               .map { |split| split.split("_").collect(&:capitalize).join }
                               .join("::")
end
default_missions() click to toggle source
# File lib/james_bond/core/mission_loader.rb, line 8
def self.default_missions
  @default_missions ||= %w(JamesBond::Core::HelpMission)
end
default_missions=(list) click to toggle source
# File lib/james_bond/core/mission_loader.rb, line 12
def self.default_missions=(list)
  @default_missions = list
end
generate_gem_require_name(gem_name) click to toggle source
# File lib/james_bond/core/mission_loader.rb, line 48
def self.generate_gem_require_name(gem_name)
  gem_name.gsub("-", "/")
end
load_mission(mission_name) click to toggle source
# File lib/james_bond/core/mission_loader.rb, line 25
def self.load_mission(mission_name)
  gem_name      = "james_bond-#{sanitize_mission_name(mission_name)}_mission"
  require_name  = generate_gem_require_name(gem_name)
  constant_name = constantize_gem_name(gem_name)

  require require_name
  klass = Object.const_get(constant_name)
  klass.new
end
load_missions(mission_names) click to toggle source
# File lib/james_bond/core/mission_loader.rb, line 16
def self.load_missions(mission_names)
  missions_loaded = mission_names.map do |mission_name|
    load_mission(mission_name)
  end
  missions_loaded = append_default_missions(missions_loaded)

  JamesBond::Core::MissionPool.new(mission_list: missions_loaded)
end
sanitize_mission_name(mission_name) click to toggle source
# File lib/james_bond/core/mission_loader.rb, line 52
def self.sanitize_mission_name(mission_name)
  mission_name.gsub(/[^0-9a-z\_\-]/i, "")
end