Class: CLI::Kit::Opts

Inherits:
Object
  • Object
show all
Includes:
Mixin
Defined in:
lib/cli/kit/opts.rb

Defined Under Namespace

Modules: Mixin

Constant Summary collapse

DEFAULT_OPTIONS =
[:helpflag]

Instance Method Summary collapse

Methods included from Mixin

#flag, included, #multi_option, #option, #option!, #position, #position!, #rest

Instance Method Details

#[](name) ⇒ Object

: (String name) -> (String | bool)?



196
197
198
199
200
201
202
203
# File 'lib/cli/kit/opts.rb', line 196

def [](name)
  obj = assert_result!
  if obj.opt.respond_to?(name)
    obj.opt.send(name)
  elsif obj.flag.respond_to?(name)
    obj.flag.send(name)
  end
end

#assert_result!Object

: -> Args::Evaluation

Raises:

  • (NotImplementedError)


223
224
225
226
227
# File 'lib/cli/kit/opts.rb', line 223

def assert_result!
  raise(NotImplementedError, 'not implemented') if @obj.is_a?(Args::Definition)

  @obj
end

#define!(defn) ⇒ Object

: (Args::Definition defn) -> void



230
231
232
233
234
235
236
237
238
239
# File 'lib/cli/kit/opts.rb', line 230

def define!(defn)
  @obj = defn
  klass = self.class #: as Mixin::MixinClassMethods
  klass.tracked_methods.each do |m|
    send(m)
  end
  DEFAULT_OPTIONS.each do |m|
    send(m)
  end
end

#each_flag(&block) ⇒ Object

: ?{ (Symbol arg0, bool arg1) -> void } -> untyped



184
185
186
187
188
189
190
191
192
193
# File 'lib/cli/kit/opts.rb', line 184

def each_flag(&block)
  return enum_for(:each_flag) unless block_given?

  obj = assert_result!
  obj.defn.flags.each do |flag|
    name = flag.name
    value = obj.flag.send(name)
    yield(name, value)
  end
end

#each_option(&block) ⇒ Object

: ?{ (Symbol arg0, String? arg1) -> void } -> untyped



172
173
174
175
176
177
178
179
180
181
# File 'lib/cli/kit/opts.rb', line 172

def each_option(&block)
  return enum_for(:each_option) unless block_given?

  obj = assert_result!
  obj.defn.options.each do |opt|
    name = opt.name
    value = obj.opt.send(name)
    yield(name, value)
  end
end

#evaluate!(ev) ⇒ Object

: (Args::Evaluation ev) -> void



242
243
244
245
# File 'lib/cli/kit/opts.rb', line 242

def evaluate!(ev)
  @obj = ev
  ev.resolve_positions!
end

#helpflagObject

: -> bool



161
162
163
# File 'lib/cli/kit/opts.rb', line 161

def helpflag
  flag(name: :help, short: '-h', long: '--help', desc: 'Show this help message')
end

#lookup_flag(name) ⇒ Object

: (String name) -> bool



215
216
217
218
219
220
# File 'lib/cli/kit/opts.rb', line 215

def lookup_flag(name)
  obj = assert_result!
  obj.flag.send(name)
rescue NoMethodError
  false
end

#lookup_option(name) ⇒ Object

: (String name) -> String?



206
207
208
209
210
211
212
# File 'lib/cli/kit/opts.rb', line 206

def lookup_option(name)
  obj = assert_result!
  obj.opt.send(name)
rescue NoMethodError
  # TODO: should we raise a KeyError?
  nil
end

#unparsedObject

: -> Array



166
167
168
169
# File 'lib/cli/kit/opts.rb', line 166

def unparsed
  obj = assert_result!
  obj.unparsed
end