Sha256: 54fa41623e304c8728aef9014759fb1fb259f177be114cfd6871799d8ebf8f73

Contents?: true

Size: 1.77 KB

Versions: 5

Compression:

Stored size: 1.77 KB

Contents

module Ropenlayer
  module Openlayer  
    class Js
      
      attr_accessor :body
      
      # == Ropenlayer::Openlayer::Js
      #
      # Just a simple JS constructor for objects methods calls and variable setting
      def initialize(initialize_string = '')
        @body = initialize_string
      end
    
      # create a new js method
      #
      #  Ropenlayer::Openlayer::Js.new_method("Element.create", "div", { :class => 'eyecandy', :id => 'my_id'}).to_s
      #  #=> new Element.create("div", { "class":"eyecandy","id":"my_id"});
      #
      def self.new_method(method, options = {})
        js_object  = new
        args        = options[:args]        || []
        propierties = options[:propierties] || {}
        
        js_object.body =  "new #{ method }("
        js_object.body << "#{ args.join(', ') }" if args.any?
        
        if propierties.keys.any?
          
          js_object.body << ", " if args.any? 
          
          js_object.body << propierties.keys.inject("{") do |propierties_string, propierty|
                              propierties_string << "'#{ propierty }': #{ propierties[propierty] }"
                              propierties_string << ", " unless propierties.keys.last == propierty
                              propierties_string
                            end
          js_object.body << "}"               
          
        end
        js_object.body << ")"
        js_object
      end
      
      # create a new js global variable:
      #
      #  Ropenlayer::Js.new_var("test", "1").to_s
      #  #=> var test = "1"
      #
      def self.new_var(name, value)
        new("var #{ name } = #{ value }")
      end
      

      def to_s
        @body
      end
      
      def to_js
        "#{ @body };"
      end
      
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
ropenlayer-0.3.5 lib/ropenlayer/openlayer/js.rb
ropenlayer-0.3.4 lib/ropenlayer/openlayer/js.rb
ropenlayer-0.3.3 lib/ropenlayer/openlayer/js.rb
ropenlayer-0.3.1 lib/ropenlayer/openlayer/js.rb
ropenlayer-0.3.0 lib/ropenlayer/openlayer/js.rb