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
items_and_filters[R]
Public Class Methods
new(applies_predicate)
click to toggle source
# File lib/rspec/core/metadata_filter.rb, line 101 def initialize(applies_predicate) @applies_predicate = applies_predicate @items_and_filters = [] end
Public Instance Methods
append(item, metadata)
click to toggle source
# File lib/rspec/core/metadata_filter.rb, line 106 def append(item, metadata) @items_and_filters << [item, metadata] end
delete(item, metadata)
click to toggle source
# File lib/rspec/core/metadata_filter.rb, line 114 def delete(item, metadata) @items_and_filters.delete [item, metadata] end
items_for(request_meta)
click to toggle source
# File lib/rspec/core/metadata_filter.rb, line 118 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?(@applies_predicate, item_meta, request_meta) end end
prepend(item, metadata)
click to toggle source
# File lib/rspec/core/metadata_filter.rb, line 110 def prepend(item, metadata) @items_and_filters.unshift [item, metadata] end