class RSpec::Core::FilterableItemRepository::UpdateOptimized

This implementation is simple, and is optimized for frequent updates but rare queries. ‘append` and `prepend` do no extra processing, and no internal memoization is done, since this is not optimized for queries.

This is ideal for use by a example or example group, which may be updated multiple times with globally configured hooks, etc, but will not be queried frequently by other examples or example groups. @private

Attributes

Public Class Methods

# File rspec-core/lib/rspec/core/metadata_filter.rb, line 91
def initialize
  @items_and_filters = []
end

Public Instance Methods

# File rspec-core/lib/rspec/core/metadata_filter.rb, line 95
def append(item, metadata)
  @items_and_filters << [item, metadata]
end
# File rspec-core/lib/rspec/core/metadata_filter.rb, line 103
def delete(item, metadata)
  @items_and_filters.delete [item, metadata]
end
# File rspec-core/lib/rspec/core/metadata_filter.rb, line 107
def items_for(request_meta)
  @items_and_filters.each_with_object([]) do |(item, item_meta), to_return|
    to_return << item if item_meta.empty? ||
                         MetadataFilter.apply?(item_meta, request_meta)
  end
end
# File rspec-core/lib/rspec/core/metadata_filter.rb, line 99
def prepend(item, metadata)
  @items_and_filters.unshift [item, metadata]
end