Sha256: 4e99e33c12352d76b84efd466183d9a5d862fe7b3b5410fe7cab9cc565458060

Contents?: true

Size: 849 Bytes

Versions: 3

Compression:

Stored size: 849 Bytes

Contents

module Lookbook
  class EntityStore
    include Enumerable

    delegate :each, :clear, to: :@entities

    def initialize
      @entities = []
    end

    def add(*entities)
      entities.each { @entities.push(_1) }
    end

    def replace(*entities)
      entities.each do |entity|
        i = index(entity)
        @entities[i] = entity unless i.nil?
      end
    end

    def remove(*entities)
      entities.each do |entity|
        i = index(entity)
        @entities.delete_at(i) unless i.nil?
      end
    end

    def replace_all(entities)
      clear
      add(*entities)
    end

    def include?(entity)
      !index(entity).nil?
    end

    def index(entity)
      @entities.index { _1.id == entity.id }
    end

    def all = @entities

    alias_method :to_a, :all

    def to_data
      @entities.map(&:to_h)
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
lookbook-3.0.0.alpha.2 lib/lookbook/entity_store.rb
lookbook-3.0.0.alpha.1 lib/lookbook/entity_store.rb
lookbook-3.0.0.alpha.0 lib/lookbook/entity_store.rb