class Rspec::Core::Metadata

def apply_condition(filter_on, filter, metadata=nil)

def apply_condition(filter_on, filter, metadata=nil)
  metadata ||= self
  case filter
  when Hash
    filter.all? { |k, v| apply_condition(k, v, metadata[filter_on]) }
  when Regexp
    metadata[filter_on] =~ filter
  when Proc
    filter.call(metadata[filter_on]) rescue false
  when Fixnum
    if filter_on == :line_number
      [metadata[:line_number],metadata[:example_group][:line_number]].include?(filter)
    else
      metadata[filter_on] == filter
    end
  else
    metadata[filter_on] == filter
  end
end