Sha256: 590e7e4433f41a295b776e87fcb021b6bfb2b84fa69ec6202cae77cfa140df59

Contents?: true

Size: 1.33 KB

Versions: 1

Compression:

Stored size: 1.33 KB

Contents

module Quandl::Cassinatra::Dataset::Attributes

  extend ActiveSupport::Concern

  module ClassMethods
    
  end
  
  included do

    attributes :id, :data, :trim_start, :trim_end, :columns, :frequency, 
      :rows_count, :type, :updated_at, :created_at
  
  end
  
  def column_units
    @column_units ||= columns.collect{|c| c['units'] } if columns.present?
  end
  
  def column_names
    @column_names ||= columns.collect{|c| c['name'] } if columns.present?
  end
  
  def column_ids
    @column_ids ||= columns.collect{|c| c['id'] } if columns.present?
  end

  def trim_start
    @trim_start ||= parse_julian_date( read_attribute(:trim_start) )
  end

  def trim_end
    @trim_end ||= parse_julian_date( read_attribute(:trim_end) )
  end

  def created_at
    @created_at ||= Time.parse(read_attribute(:created_at)) rescue nil
  end
  
  def updated_at
    @updated_at ||= Time.parse(read_attribute(:updated_at)) rescue nil
  end
  
  def reload
    # reset instance variables
    [:column_units, :column_names, :column_ids, :count_data, :scope, 
      :updated_at, :created_at, :trim_start, :trim_end
    ].each{|n| instance_variable_set("@#{n}", nil) }
    # onwards
    super
  end
  
  protected
  
  def parse_julian_date(date)
    date = date.to_i unless date.is_a?(Integer)
    date = ( date > 0 ) ? Date.jd(date) : nil
    date
  end
  
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
quandl_cassinatra-0.2.3 lib/quandl/cassinatra/models/dataset/attributes.rb