module IsResource

Public Class Methods

included(base) click to toggle source
# File lib/spooky/is_resource.rb, line 2
def self.included(base)
  base.class_eval do
    attr_reader(*const_get("ATTRIBUTES"))

    def initialize(attrs = {})
      self.class.const_get("ATTRIBUTES").each do |attribute|
        instance_variable_set("@#{attribute}", attrs[attribute])
      end

      parse_datetimes(attrs)
      parse_attributes(attrs)
    end

    def parse_datetimes(attrs)
      ["created_at", "updated_at", "published_at"].each do |date_attr|
        instance_variable_set("@#{date_attr}", DateTime.iso8601(attrs[date_attr])) if attrs[date_attr].present?
      end
    end

    def parse_attributes(attrs)
      # Abstract method, should be overridden in child if needed.
    end
  end
end
new(attrs = {}) click to toggle source
# File lib/spooky/is_resource.rb, line 6
def initialize(attrs = {})
  self.class.const_get("ATTRIBUTES").each do |attribute|
    instance_variable_set("@#{attribute}", attrs[attribute])
  end

  parse_datetimes(attrs)
  parse_attributes(attrs)
end

Public Instance Methods

parse_attributes(attrs) click to toggle source
# File lib/spooky/is_resource.rb, line 21
def parse_attributes(attrs)
  # Abstract method, should be overridden in child if needed.
end
parse_datetimes(attrs) click to toggle source
# File lib/spooky/is_resource.rb, line 15
def parse_datetimes(attrs)
  ["created_at", "updated_at", "published_at"].each do |date_attr|
    instance_variable_set("@#{date_attr}", DateTime.iso8601(attrs[date_attr])) if attrs[date_attr].present?
  end
end