class EzLinkedin::Mash
Public Class Methods
from_json(json_string)
click to toggle source
a simple helper to convert a json string to a Mash
# File lib/ezlinkedin/mash.rb, line 8 def self.from_json(json_string) result_hash = ::MultiJson.decode(json_string) new(result_hash) end
Public Instance Methods
timestamp()
click to toggle source
# File lib/ezlinkedin/mash.rb, line 22 def timestamp value = self['timestamp'] if value.kind_of? Integer value = value / 1000 if value > 9999999999 Time.at(value) else value end end
to_date()
click to toggle source
returns a Date if we have year, month and day, and no conflicting key
Calls superclass method
# File lib/ezlinkedin/mash.rb, line 14 def to_date if !self.has_key?('to_date') && contains_date_fields? Date.civil(self.year, self.month, self.day) else super end end
Protected Instance Methods
contains_date_fields?()
click to toggle source
# File lib/ezlinkedin/mash.rb, line 34 def contains_date_fields? self.year? && self.month? && self.day? end
convert_key(key)
click to toggle source
overload the convert_key
mash method so that the LinkedIn keys are made a little more ruby-ish
# File lib/ezlinkedin/mash.rb, line 40 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
underscore(camel_cased_word)
click to toggle source
borrowed from ActiveSupport no need require an entire lib when we only need one method
# File lib/ezlinkedin/mash.rb, line 57 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