Sha256: 8069e672daadacfcadf4a8f8efc9dc0f3158ceed229c70012c1005c388633b4e

Contents?: true

Size: 1.12 KB

Versions: 1

Compression:

Stored size: 1.12 KB

Contents

module Crowdskout
  module Components
    class Component

      def to_hash
        hash = Hash.new
        self.instance_variables.collect do |var|
          hash[var.to_s[1..-1]] = self.class.to_hash_value(self.instance_variable_get(var))
        end
        hash
      end

      def self.to_hash_value(val)
        if val.is_a? Crowdskout::Components::Component
          return val.to_hash
        elsif val.is_a? Array
          return val.collect{|subval| Component.to_hash_value(subval) }
        elsif val.is_a? DateTime
          return val.to_s
        else
          return val
        end
      end

      def to_json(val = nil)
        self.to_hash.to_json
      end

      protected

      # Get the requested value from a hash, or return the default
      # @param [Hash] hsh - the hash to search for the provided hash key
      # @param [String] key - hash key to look for
      # @param [String] default - value to return if the key is not found, default is null
      # @return [String]
      def self.get_value(hsh, key, default = nil)
        hsh.has_key?(key) and hsh[key] ? hsh[key] : default
      end

    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
crowdskout-0.0.4 lib/crowdskout/components/component.rb