Method: Toolshed::Client#method_missing

Defined in:
lib/toolshed/client.rb

#method_missing(*args) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/toolshed/client.rb', line 30

def method_missing(*args)
  begin
    if args.first.to_s.end_with?('=')
      val = args.last
      my_h = self
      args.each_with_index do |arg, index|
        arg = arg.to_s.gsub('=', '')
        next_arg_val = args[index + 1].to_s.gsub('=', '')
        my_h = my_h[arg] unless next_arg_val == val.to_s
        my_h[arg] = val if next_arg_val == val.to_s && !my_h[arg].nil?
        my_h.merge!(arg => val) if next_arg_val == val.to_s && my_h[arg].nil?
      end
      @struct = to_ostruct
    else
      struct.send(args.first)
    end
  rescue NoMethodError => e
    Toolshed.die(e.message)
  end
end