Class: Argonaut::Generator

Inherits:
Object
  • Object
show all
Defined in:
lib/argonaut/generator.rb

Instance Method Summary collapse

Constructor Details

#initialize(array_keys = [], &block) ⇒ Generator

Returns a new instance of Generator.



7
8
9
10
11
# File 'lib/argonaut/generator.rb', line 7

def initialize(array_keys=[], &block)
  @array_keys = array_keys.map(&:to_sym)
  @hash = {}
  block.call(self)
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(key, *values) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/argonaut/generator.rb', line 17

def method_missing(key, *values)
  value = if block_given?
    Generator.new(@array_keys) { |a| yield a }
  else
    values.size == 1 ? values.first : values
  end
  
  if @array_keys.include?(key) || @hash[key].is_a?(Array)
    if @hash.include?(key)
      @hash[key] << value
    else
      @hash[key] = [value]
    end
  elsif @hash[key].nil?
    @hash[key] = value
  else
    @hash[key] = [@hash[key], value]
  end
end

Instance Method Details

#array_keys!(array_keys) ⇒ Object



13
14
15
# File 'lib/argonaut/generator.rb', line 13

def array_keys!(array_keys)
  @array_keys = array_keys.map(&:to_sym)
end

#inspectObject



49
50
51
# File 'lib/argonaut/generator.rb', line 49

def inspect
  @hash.inspect
end

#respond_to?(method) ⇒ Boolean

Returns:

  • (Boolean)


37
38
39
# File 'lib/argonaut/generator.rb', line 37

def respond_to?(method)
  true
end

#to_json(extra = false) ⇒ Object



41
42
43
# File 'lib/argonaut/generator.rb', line 41

def to_json(extra=false)
  @hash.to_json(extra)
end

#to_sObject



45
46
47
# File 'lib/argonaut/generator.rb', line 45

def to_s
  @hash.to_s
end