Sha256: bcd94537c5709db6fd33d576939c19eb980edd0b750b503cab5696778a1cbe95

Contents?: true

Size: 1.07 KB

Versions: 2

Compression:

Stored size: 1.07 KB

Contents

module Yaks
  class Resource
    include Attributes.new(
              type: nil, links: [], attributes: {}, subresources: {}, controls: []
            ),
            Enumerable

    def [](attr)
      attributes[attr]
    end

    def each
      return to_enum unless block_given?
      yield self
    end

    def self_link
      links.reverse.find do |link|
        link.rel.equal? :self
      end
    end

    def collection?
      false
    end

    def null_resource?
      false
    end

    def collection_rel
      raise UnsupportedOperationError, "Only Yaks::CollectionResource has a collection_rel"
    end

    def members
      raise UnsupportedOperationError, "Only Yaks::CollectionResource has members"
    end

    def update_attributes(new_attrs)
      update(attributes: @attributes.merge(new_attrs))
    end

    def add_link(link)
      append_to(:links, link)
    end

    def add_control(control)
      append_to(:controls, control)
    end

    def add_subresource(rel, subresource)
      update(subresources: @subresources.merge(rel => subresource))
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
yaks-0.6.2 lib/yaks/resource.rb
yaks-0.6.1 lib/yaks/resource.rb