Sha256: d8599bf451a990038b54cf9a61b2766c84153c6123efe9f58e1a1e0b21068ba3

Contents?: true

Size: 889 Bytes

Versions: 2

Compression:

Stored size: 889 Bytes

Contents

require "hashme/version"

# External dependencies

require "active_model"
require "active_model/naming"
require "active_model/serialization"

require "active_support/core_ext"
require "active_support/json"

# Local dependencies

require "hashme/attributes"
require "hashme/castable"
require "hashme/casted_array"
require "hashme/properties"
require "hashme/property"

module Hashme
  extend ActiveSupport::Concern

  include ActiveModel::Validations

  included do
    include Castable
    include Attributes
    include Properties
    # Eventually! include Validations
  end

  def initialize(attrs = {})
    # Use the `Properties` module's `#set_attribtues` method
    set_attributes(attrs)
  end

  module ClassMethods
    # Little help. Equivalent to new.tap
    def build(*attrs)
      instance = self.new(*attrs)
      yield instance if block_given?
      instance
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
hashme-0.1.1 lib/hashme.rb
hashme-0.1.0 lib/hashme.rb