Module: Clamp::Subcommand::Declaration

Included in:
Command
Defined in:
lib/clamp/subcommand/declaration.rb

Instance Method Summary collapse

Instance Method Details

#find_subcommand(name) ⇒ Object



25
26
27
# File 'lib/clamp/subcommand/declaration.rb', line 25

def find_subcommand(name)
  recognised_subcommands.find { |sc| sc.is_called?(name) }
end

#has_subcommands!Object



29
30
31
32
33
34
35
# File 'lib/clamp/subcommand/declaration.rb', line 29

def has_subcommands!
  unless @has_subcommands
    parameter "SUBCOMMAND", "subcommand name", :attribute_name => :subcommand_name
    parameter "[ARGS] ...", "subcommand arguments", :attribute_name => :subcommand_arguments
    @has_subcommands = true
  end
end

#has_subcommands?Boolean

Returns:

  • (Boolean)


21
22
23
# File 'lib/clamp/subcommand/declaration.rb', line 21

def has_subcommands?
  !recognised_subcommands.empty?
end

#recognised_subcommandsObject



8
9
10
# File 'lib/clamp/subcommand/declaration.rb', line 8

def recognised_subcommands
  @recognised_subcommands ||= []
end

#subcommand(name, description, subcommand_class = self, &block) ⇒ Object



12
13
14
15
16
17
18
19
# File 'lib/clamp/subcommand/declaration.rb', line 12

def subcommand(name, description, subcommand_class = self, &block)
  has_subcommands!
  if block
    # generate a anonymous sub-class
    subcommand_class = Class.new(subcommand_class, &block)
  end
  recognised_subcommands << Subcommand.new(name, description, subcommand_class)
end