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