In Files

Methods

Files

Class/Module Index [+]

Quicksearch

Tins::GO

Public Instance Methods

go(s, args = ARGV) click to toggle source

Parses the argument array args, according to the pattern s, to retrieve the single character command line options from it. If s is ‘xy:’ an option ‘-x’ without an option argument is searched, and an option ‘-y foo’ with an option argument (‘foo’).

An option hash is returned with all found options set to true or the found option argument.

# File lib/tins/go.rb, line 26
def go(s, args = ARGV)
  b, v = s.scan(/(.)(:?)/).inject([ {}, {} ]) { |t, (o, a)|
    a = a == ':'
    t[a ? 1 : 0][o] = a ? nil : false
    t
  }
  while a = args.shift
    a !~ /\A-(.+)/ and args.unshift a and break
    p = $1
    until p == ''
      o = p.slice!(0, 1)
      if v.key?(o)
        if p == '' then
          a = args.shift or break 1
        else
          a = p
        end
        if v[o].nil?
          a = a.dup
          a.extend EnumerableExtension
          a.push a
          v[o] = a
        else
          v[o].push a
        end
        break
      elsif b.key?(o)
        if b[o] == false
          b[o]= 1
        else
          b[o] += 1
        end
      else
        args.unshift a
        break 1
      end
    end and break
  end
  b.merge(v)
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.