Sha256: 74ab60201fb9bf92d5a4dbbff1e4500e5cbe441f5334eecd16b24360ca25113f

Contents?: true

Size: 1.41 KB

Versions: 3

Compression:

Stored size: 1.41 KB

Contents

module Giggly
  module Javascript
    module Helper
      
      # The Javascript helper should be totally generic to the api that is being used
      # So that if there is a future api it can be wrapped in a class and include this
      
      def include_gigya_api(service)
        '<script type="text/javascript" src="http://cdn.gigya.com/JS/gigya.js?services=' + service.to_s + '"></script>'
      end
      
      def javascript(&block)
        out = '<script type="text/javascript">' + "\n"
        out += yield.to_s
        out += "\n" + '</script>'
        out
      end
      
      def to_var(name, object, scope_to_window = false)
        "#{scope_to_window ? '' : 'var '}#{name.to_s} = #{javascriptify_object object};"
      end
      
      # borrowed mainly from the ym4r_gm plugin
      def javascriptify_object(object)
        if object.is_a? String
          "'#{escape_javascript object}'"
        elsif object.is_a? Array
          '[' + object.collect{ |o| javascriptify_variable(o) }.join(', ') + ']'
        elsif object.is_a? Hash
          '{' + object.to_a.collect{ |o| "#{o[0].to_s} : #{javascriptify_object(o[1])}" }.join(', ') + '}'
        elsif object.nil?
          'undefined'
        else
          object.to_s
        end
      end
      
      # from rails
      def escape_javascript(javascript)
        javascript.gsub(/\r\n|\n|\r/, "\\n").gsub("\"") { |m| "\\#{m}" }
      end
      
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
giggly-0.1.2 lib/giggly/javascript/helper.rb
giggly-0.1.1 lib/giggly/javascript/helper.rb
giggly-0.1.0 lib/giggly/javascript/helper.rb