Method: Such::Thing.do_parameters

Defined in:
lib/such/thing.rb

.do_parameters(parameters) ⇒ Object



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/such/thing.rb', line 37

def self.do_parameters(parameters)
  container, arguments, methods, signals = nil, [], {}, []
  while parameter = parameters.shift
    case parameter
    when Symbol
      # Symbols are expected to translate to something else.
      Thing.do_symbol parameter, parameters
    when Array
      # Arrays are added to the Thing's arguments list.
      arguments.concat parameter
    when Hash
      # Hashes are expected to be a symbol list of methods on Thing with respective arguments.
      # It's possible to override a previously defined method with new arguments.
      methods.merge! parameter
    when String
      # Typically a signal: Thing#signal_connect(signal){|*emits| block.call(*emits)}
      signals.push parameter
    else
      # Assume it's a container
      container = parameter
    end
  end
  signals.uniq!
  return container, arguments, methods, signals
end