module Geminus

Constants

PREAMBLE
VERSION

Public Class Methods

extended(base) click to toggle source
# File lib/geminus.rb, line 12
def extended(base)
  Registry.instance << base

  base.instance_variable_set(:@geminus, {})
  base.send(:extend, DSL)
end
generate_js() click to toggle source
# File lib/geminus.rb, line 19
def generate_js
  parts = [PREAMBLE]

  Registry.instance.each do |geminus|
    data = geminus.name.split("::".freeze).reverse
      .inject(geminus.generate_js) { |a, e| "{#{JSON.dump e}:#{a}}" }
    parts << "geminus(#{data});"
  end

  "(function(world){\n#{parts.join "\n;\n".freeze}\n}(this));"
end