Module: Geminus::DSL

Included in:
Container
Defined in:
lib/geminus/dsl.rb

Instance Method Summary collapse

Instance Method Details

#generate_jsObject



20
21
22
23
24
25
26
27
28
29
# File 'lib/geminus/dsl.rb', line 20

def generate_js
  pairs = []

  @geminus.each do |k, v|
    v = v.is_a?(Container) ? v.generate_js : JSON.dump(v)
    pairs << "#{JSON.dump k}:#{v}"
  end

  "{#{pairs.join ','}}"
end

#prop(key, val = nil, &blk) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/geminus/dsl.rb', line 3

def prop(key, val = nil, &blk)
  key = key.to_s

  if blk
    fail ArgumentError, "Pass either value or block" if val
    val = Container.new(&blk)
  end

  @geminus[key] = val

  instance_eval <<-RUBY, __FILE__, __LINE__
    def #{key}
      @geminus[#{key.inspect}]
    end
  RUBY
end