Class: Lino::SubcommandBuilder

Inherits:
Object
  • Object
show all
Includes:
Appliables, Options, Utilities
Defined in:
lib/lino/subcommand_builder.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Appliables

#with_appliable, #with_appliables

Methods included from Utilities

#empty?, #join_with, #map_and_join, #nil?, #nil_or_empty?, #quote_with

Methods included from Options

#with_flag, #with_flags, #with_option, #with_options, #with_repeated_option

Constructor Details

#initialize(subcommand: nil, options: []) ⇒ SubcommandBuilder

Returns a new instance of SubcommandBuilder.



20
21
22
23
# File 'lib/lino/subcommand_builder.rb', line 20

def initialize(subcommand: nil, options: [])
  @subcommand = subcommand
  @options = Hamster::Vector.new(options)
end

Class Method Details

.for_subcommand(subcommand) ⇒ Object



15
16
17
# File 'lib/lino/subcommand_builder.rb', line 15

def for_subcommand(subcommand)
  SubcommandBuilder.new(subcommand: subcommand)
end

Instance Method Details

#build(option_separator, option_quoting) ⇒ Object



25
26
27
28
29
30
31
32
33
34
# File 'lib/lino/subcommand_builder.rb', line 25

def build(option_separator, option_quoting)
  components = [
    @subcommand,
    map_and_join(
      @options,
      &(quote_with(option_quoting) >> join_with(option_separator))
    )
  ]
  components.reject(&:empty?).join(' ')
end