Sha256: 8680387213c0efb782ccb10064a2d416d58e4fe411b7106c1dd49b1ed479a06e

Contents?: true

Size: 1.56 KB

Versions: 7

Compression:

Stored size: 1.56 KB

Contents

require 'hashie'
require 'multi_json'

module EzLinkedin
  class Mash < ::Hashie::Mash

    # a simple helper to convert a json string to a Mash
    def self.from_json(json_string)
      result_hash = ::MultiJson.decode(json_string)
      new(result_hash)
    end

    # returns a Date if we have year, month and day, and no conflicting key
    def to_date
      if !self.has_key?('to_date') && contains_date_fields?
        Date.civil(self.year, self.month, self.day)
      else
        super
      end
    end

    def timestamp
      value = self['timestamp']
      if value.kind_of? Integer
        value = value / 1000 if value > 9999999999
        Time.at(value)
      else
        value
      end
    end

    protected

      def contains_date_fields?
        self.year? && self.month? && self.day?
      end

      # overload the convert_key mash method so that the LinkedIn
      # keys are made a little more ruby-ish
      def convert_key(key)
        case key.to_s
        when '_key'
          'id'
        when '_total'
          'total'
        when 'values'
          'all'
        when 'numResults'
          'total_results'
        else
          underscore(key)
        end
      end

      # borrowed from ActiveSupport
      # no need require an entire lib when we only need one method
      def underscore(camel_cased_word)
        word = camel_cased_word.to_s.dup
        word.gsub!(/::/, '/')
        word.gsub!(/([A-Z]+)([A-Z][a-z])/,'\1_\2')
        word.gsub!(/([a-z\d])([A-Z])/,'\1_\2')
        word.tr!("-", "_")
        word.downcase!
        word
      end

  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
ezlinkedin-0.5.3 lib/ezlinkedin/mash.rb
ezlinkedin-0.5.2 lib/ezlinkedin/mash.rb
ezlinkedin-0.4.2 lib/ezlinkedin/mash.rb
ezlinkedin-0.2.2 lib/ezlinkedin/mash.rb
ezlinkedin-0.1.2 lib/ezlinkedin/mash.rb
ezlinkedin-0.1.1 lib/ezlinkedin/mash.rb
ezlinkedin-0.0.1 lib/ezlinkedin/mash.rb