Class: Consoler::Options
- Inherits:
-
Object
- Object
- Consoler::Options
- Defined in:
- lib/consoler/options.rb
Overview
List of options
Instance Attribute Summary collapse
-
#description ⇒ String
readonly
Description of the options.
Instance Method Summary collapse
-
#each {|Consoler::Option, Integer| ... } ⇒ Consoler::Options
Loop through all options.
-
#get(name) ⇒ Consoler::Option?
Get a options by its name.
-
#initialize(options_def) ⇒ Options
constructor
Create a list of option based on a string definition.
-
#size ⇒ Integer
Get the number of options.
- #to_definition ⇒ Object
Constructor Details
#initialize(options_def) ⇒ Options
Create a list of option based on a string definition
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/consoler/options.rb', line 16 def initialize() @options = [] @description = nil return if .nil? if match = /(^|\s+)-- (?<description>.*)$/.match() then @description = match[:description] = [0...-match[0].size] end = .split ' ' tracker = Consoler::OptionalsTracker.new option_names = [] while option_def = .shift do Consoler::Option.create option_def, tracker do |option| raise "Duplicate option name: #{option.name}" if option_names.include? option.name @options.push option option_names.push option.name end end end |
Instance Attribute Details
#description ⇒ String (readonly)
Description of the options
10 11 12 |
# File 'lib/consoler/options.rb', line 10 def description @description end |
Instance Method Details
#each {|Consoler::Option, Integer| ... } ⇒ Consoler::Options
Loop through all options
60 61 62 63 64 65 66 |
# File 'lib/consoler/options.rb', line 60 def each @options.each_with_index do |option, i| yield option, i end self end |
#get(name) ⇒ Consoler::Option?
Get a options by its name
46 47 48 49 50 51 52 53 54 |
# File 'lib/consoler/options.rb', line 46 def get(name) each do |option| if option.name == name then return option end end return nil end |
#size ⇒ Integer
Get the number of options
71 72 73 |
# File 'lib/consoler/options.rb', line 71 def size @options.size end |
#to_definition ⇒ Object
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
# File 'lib/consoler/options.rb', line 75 def to_definition definition = '' optional = nil each do |option, i| definition += ' ' if optional.nil? and option.is_optional then definition += '[' optional = option.is_optional end definition += option.to_definition if option.is_optional then if @options[i + 1].nil? or optional != @options[i + 1].is_optional then definition += ']' optional = nil end end end definition.strip end |