Sha256: 97d696d3c6e03b5e6dcc842f773b8ca340d88c96385933d1445b7e0f528276ba

Contents?: true

Size: 1.18 KB

Versions: 4

Compression:

Stored size: 1.18 KB

Contents

class Array
  def args
    flatten.map{|a| a.args}.flatten
  end

  def last_option
    default = self.last_arg
    last = self.flatten.last
    last.kind_of?(Hash) ? last : default
  end

  def last_arg default = {}
    last = self.flatten.last
    last.kind_of?(Hash) ? last : default
  end

  def last_arg_value default = nil
    last = self.flatten.last
    raise ArgumentError, "Default value must be a Hash, was #{default}" if !default.kind_of? Hash
    key = default.keys.first
    return default[key] if !last.kind_of? Hash
    last[key] ? last[key] : default[key]
  end
end

class Symbol
  def args
    [to_s]
  end
end

class String
  def args
    (self =~ /\w+\s+\w+/) ? self.split : self
  end
end

def last_option *args
  default = last_arg({}, *args)
  last = args.flatten.last
  last.kind_of?(Hash) ? last : default
end

def last_arg default, *args
  last = args.flatten.last
  last.kind_of?(Hash) ? last : default
end

def last_arg_value default, *args
  last = args.flatten.last
  raise ArgumentError, "Default value must be a Hash, was #{default}" if !default.kind_of? Hash
  key = default.keys.first
  return default[key] if !last.kind_of? Hash
  last[key] ? last[key] : default[key]
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
sugar-high-0.7.3 lib/sugar-high/arguments.rb
sugar-high-0.7.2 lib/sugar-high/arguments.rb
sugar-high-0.7.1 lib/sugar-high/arguments.rb
sugar-high-0.7.0 lib/sugar-high/arguments.rb