Sha256: b9d3f566a131d620446a51152a53412a0456ae57db17de8b6a10eac1781f5791

Contents?: true

Size: 594 Bytes

Versions: 1

Compression:

Stored size: 594 Bytes

Contents

module Geminus
  module DSL
    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

    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
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
geminus-0.1.0 lib/geminus/dsl.rb