Sha256: b8eb37829fbb0a8df127c7aa8b688d28343cc56c77e5d76f2634e409969c091a

Contents?: true

Size: 1.07 KB

Versions: 5

Compression:

Stored size: 1.07 KB

Contents

module Lipsiadmin
  module Ext
    # Ext configuration used by components
    # 
    #   Generates: { name: 'name', handler: function(){ alert('Hello World') } }
    #
    class Configuration < Hash
      
      def initialize(hash)#:nodoc:
        hash.each { |k,v| self[k] = v }
      end
      
      # Returns the configuration as a string.
      # Optionally you can specify the indentation spaces.
      def to_s(indent=1)
        return if self.empty?
        i = ("  "*indent)
        s = self.size > 0 ? "\n" : "  "
        "{#{s}" + self.reject { |k,v| k.blank? || v.to_s.blank? }.collect { |k,v| "#{i*2}#{k}: #{s(v)}" if k != :var }.join(",#{s}") + "#{s}#{i}}"
      end
      
      private
        def javascript_object_for(object)
          case object
            when Configuration
              object.to_s(2)
            when Array
              "[" + object.collect { |o| s(o) }.join(",") + "]"
            else
              object.respond_to?(:to_json) ? object.to_json : object.inspect
          end
        end
        alias_method :s, :javascript_object_for
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
lipsiadmin-4.1.8 lib/view/helpers/ext/configuration.rb
lipsiadmin-4.1.4 lib/view/helpers/ext/configuration.rb
lipsiadmin-4.1.5 lib/view/helpers/ext/configuration.rb
lipsiadmin-4.1.6 lib/view/helpers/ext/configuration.rb
lipsiadmin-4.1.7 lib/view/helpers/ext/configuration.rb