Sha256: cb1af04eb89ee6c36b589e69c14ec5a7a5e27a66979e3909d34b99320a1067ea

Contents?: true

Size: 818 Bytes

Versions: 3

Compression:

Stored size: 818 Bytes

Contents

module ActivityStreams
  class Base
    include AttrRequired, AttrOptional, Validator

    def initialize(attributes = {})
      (required_attributes + optional_attributes).each do |_attr_|
        self.send :"#{_attr_}=", attributes[_attr_]
      end
      validate_attributes!
    end

    def validate_attributes!
      attr_missing!
    end

    def as_json(options = {})
      (required_attributes + optional_attributes).inject({}) do |hash, _attr_|
        _value_ = self.send _attr_
        hash.merge!(
          _attr_.to_s.camelize(:lower).to_sym => case _value_
          when Symbol, Addressable::URI
            _value_.to_s
          when Time
            _value_.iso8601
          else
            _value_
          end
        )
      end.delete_if do |k,v|
        v.blank?
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
activitystreams-0.0.4 lib/activitystreams/base.rb
activitystreams-0.0.3 lib/activitystreams/base.rb
activitystreams-0.0.2 lib/activitystreams/base.rb