class Main::Program::ClassMethods::Factory

Public Class Methods

new(&block) click to toggle source
# File lib/main/program/class_methods.rb, line 43
def initialize(&block)
  @block = block || lambda{}
end

Public Instance Methods

build(*args, &block) click to toggle source
# File lib/main/program/class_methods.rb, line 51
def build(*args, &block)
  argv = (args.shift || ARGV).map{|arg| arg.dup}
  env = (args.shift || ENV).to_hash.dup
  opts = (args.shift || {}).to_hash.dup

  factory = self

  program = Class.new(Program)

  program.factory = factory
  program.argv = argv
  program.env = env
  program.opts = opts

  program.module_eval(&factory)

  program.module_eval do
    dynamically_extend_via_commandline_modes!
    program.set_default_options!
    define_method(:run, &block) if block
    wrap_run!
  end
  program
end
to_proc() click to toggle source
# File lib/main/program/class_methods.rb, line 47
def to_proc
  @block
end