Module: Opts::DSL::ClassMethods

Defined in:
lib/opts/dsl.rb

Instance Method Summary collapse

Instance Method Details

#arg(name, options = {}) ⇒ Object



49
50
51
52
# File 'lib/opts/dsl.rb', line 49

def arg(name, options={})
  @command_args ||= Opts::ArgumentParser.new
  @command_args.arg(name, options)
end

#class_opt(name, options = {}) ⇒ Object



34
35
36
37
# File 'lib/opts/dsl.rb', line 34

def class_opt(name, options={})
  @class_opts ||= Opts::OptionParser.new
  @class_opts.opt(name, options)
end

#class_use(klass, *args, &block) ⇒ Object



29
30
31
32
# File 'lib/opts/dsl.rb', line 29

def class_use(klass, *args, &block)
  @class_builder ||= Opts::Builder.new
  @class_builder.use(klass, *args, &block)
end

#method_added(m) ⇒ Object



54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/opts/dsl.rb', line 54

def method_added(m)
  @command_parser  ||= Opts::CommandParser.new
  @command_builder ||= Opts::Builder.new
  @command_opts    ||= Opts::OptionParser.new
  @command_args    ||= Opts::ArgumentParser.new
  
  @command_builder.use @command_opts
  @command_builder.use @command_args
  @command_builder.run lambda { |env, args|
    env[:stack].last.__send__(m, env, args)
  }
  @command_parser.cmd(m, @command_builder.to_app)
  
  @command_builder = nil
  @command_opts    = nil
  @command_args    = nil
end

#opt(name, options = {}) ⇒ Object



44
45
46
47
# File 'lib/opts/dsl.rb', line 44

def opt(name, options={})
  @command_opts ||= Opts::OptionParser.new
  @command_opts.opt(name, options)
end

#parserObject



16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/opts/dsl.rb', line 16

def parser
  @parser ||= begin
    @class_builder   ||= Opts::Builder.new
    @class_opts      ||= Opts::OptionParser.new
    @command_parser  ||= Opts::CommandParser.new
    
    @class_builder.use @class_opts
    @class_builder.run @command_parser
    
    @class_builder.to_app
  end
end

#use(klass, *args, &block) ⇒ Object



39
40
41
42
# File 'lib/opts/dsl.rb', line 39

def use(klass, *args, &block)
  @command_builder ||= Opts::Builder.new
  @command_builder.use(klass, *args, &block)
end