class Cl::Opt

Constants

OPT
OPTS
TYPES

Attributes

long[R]
short[R]

Public Class Methods

new(strs, *) click to toggle source
Calls superclass method
# File lib/cl/opt.rb, line 24
def initialize(strs, *)
  super
  @short, @long = Validator.new(strs, opts).apply
end

Public Instance Methods

aliases() click to toggle source
# File lib/cl/opt.rb, line 71
def aliases
  Array(opts[:alias])
end
aliases?() click to toggle source
# File lib/cl/opt.rb, line 67
def aliases?
  !!opts[:alias]
end
array?() click to toggle source
# File lib/cl/opt.rb, line 63
def array?
  type == :array
end
assign(opts, type, _, value) click to toggle source
# File lib/cl/opt.rb, line 217
def assign(opts, type, _, value)
  [name, *aliases].each do |name|
    if array?
      opts[name] ||= []
      opts[name] << value
    else
      opts[name] = value
    end
  end
end
block() click to toggle source
Calls superclass method
# File lib/cl/opt.rb, line 212
def block
  # raise if no block was given, and the option's name cannot be inferred
  super || method(:assign)
end
default() click to toggle source
# File lib/cl/opt.rb, line 101
def default
  opts[:default]
end
default?() click to toggle source
# File lib/cl/opt.rb, line 97
def default?
  opts.key?(:default)
end
define(const) click to toggle source
# File lib/cl/opt.rb, line 29
def define(const)
  return unless __key__ = name
  const.send :include, Module.new {
    define_method (__key__) { opts[__key__] }
    define_method (:"#{__key__}?") { !!opts[__key__] }
  }
end
deprecated() click to toggle source
# File lib/cl/opt.rb, line 85
def deprecated
  # If it's a string then it's a deprecation message and the option itself
  # is considered deprecated. If it's a symbol it refers to a deprecated
  # alias, and the option's name is the deprecation message.
  return [name, opts[:deprecated]] unless opts[:deprecated].is_a?(Symbol)
  opts[:deprecated] ? [opts[:deprecated], name] : []
end
deprecated?(name = nil) click to toggle source
# File lib/cl/opt.rb, line 79
def deprecated?(name = nil)
  return !!opts[:deprecated] if name.nil?
  names = [name.to_s.gsub('_', '-').to_sym, name.to_s.gsub('-', '_').to_sym]
  deprecated? && names.include?(deprecated.first)
end
description() click to toggle source
# File lib/cl/opt.rb, line 75
def description
  opts[:description]
end
downcase?() click to toggle source
# File lib/cl/opt.rb, line 93
def downcase?
  !!opts[:downcase]
end
enum() click to toggle source
# File lib/cl/opt.rb, line 109
def enum
  Array(opts[:enum])
end
enum?() click to toggle source
# File lib/cl/opt.rb, line 105
def enum?
  !!opts[:enum]
end
example() click to toggle source
# File lib/cl/opt.rb, line 127
def example
  opts[:example]
end
example?() click to toggle source
# File lib/cl/opt.rb, line 123
def example?
  !!opts[:example]
end
flag?() click to toggle source
# File lib/cl/opt.rb, line 55
def flag?
  type == :flag
end
format() click to toggle source
# File lib/cl/opt.rb, line 135
def format
  format_regex(opts[:format])
end
format?() click to toggle source
# File lib/cl/opt.rb, line 131
def format?
  !!opts[:format]
end
formatted?(value) click to toggle source
# File lib/cl/opt.rb, line 139
def formatted?(value)
  return value.all? { |value| formatted?(value) } if value.is_a?(Array)
  opts[:format] =~ value
end
help?() click to toggle source
# File lib/cl/opt.rb, line 51
def help?
  name == :help
end
infer_type() click to toggle source
# File lib/cl/opt.rb, line 47
def infer_type
  strs.any? { |str| str.split(' ').size > 1 } ? :string : :flag
end
int?() click to toggle source
# File lib/cl/opt.rb, line 59
def int?
  type == :int || type == :integer
end
internal?() click to toggle source
# File lib/cl/opt.rb, line 144
def internal?
  !!opts[:internal]
end
known?(value) click to toggle source
# File lib/cl/opt.rb, line 113
def known?(value)
  return value.all? { |value| known?(value) } if value.is_a?(Array)
  enum.any? { |obj| obj.is_a?(Regexp) ? obj =~ value.to_s : obj == value }
end
long?(str) click to toggle source
# File lib/cl/opt.rb, line 228
def long?(str)
  str.start_with?('--')
end
max() click to toggle source
# File lib/cl/opt.rb, line 160
def max
  opts[:max]
end
max?() click to toggle source
# File lib/cl/opt.rb, line 156
def max?
  int? && !!opts[:max]
end
min() click to toggle source
# File lib/cl/opt.rb, line 152
def min
  opts[:min]
end
min?() click to toggle source
# File lib/cl/opt.rb, line 148
def min?
  int? && !!opts[:min]
end
name() click to toggle source
# File lib/cl/opt.rb, line 37
def name
  return @name if instance_variable_defined?(:@name)
  name = long.split(' ').first.match(OPT)[1] if long
  @name = name.sub('-', '_').to_sym if name
end
negate() click to toggle source
# File lib/cl/opt.rb, line 168
def negate
  ['no'] + Array(opts[:negate]) if flag?
end
negate?() click to toggle source
# File lib/cl/opt.rb, line 164
def negate?
  !!negate
end
note() click to toggle source
# File lib/cl/opt.rb, line 176
def note
  opts[:note]
end
note?() click to toggle source
# File lib/cl/opt.rb, line 172
def note?
  !!opts[:note]
end
required?() click to toggle source
# File lib/cl/opt.rb, line 180
def required?
  !!opts[:required]
end
requires() click to toggle source
# File lib/cl/opt.rb, line 188
def requires
  Array(opts[:requires])
end
requires?() click to toggle source
# File lib/cl/opt.rb, line 184
def requires?
  !!opts[:requires]
end
secret?() click to toggle source
# File lib/cl/opt.rb, line 192
def secret?
  !!opts[:secret]
end
see() click to toggle source
# File lib/cl/opt.rb, line 200
def see
  opts[:see]
end
see?() click to toggle source
# File lib/cl/opt.rb, line 196
def see?
  !!opts[:see]
end
separator() click to toggle source
# File lib/cl/opt.rb, line 204
def separator
  opts[:sep]
end
type() click to toggle source
# File lib/cl/opt.rb, line 43
def type
  @type ||= TYPES[opts[:type]] || opts[:type] || infer_type
end
unknown(value) click to toggle source
# File lib/cl/opt.rb, line 118
def unknown(value)
  return value.reject { |value| known?(value) } if value.is_a?(Array)
  known?(value) ? [] : Array(value)
end
upcase?() click to toggle source
# File lib/cl/opt.rb, line 208
def upcase?
  !!opts[:upcase]
end