class OSpecFilter

def self.main

def self.main
  @main ||= self.new
end

def ===(description)

def ===(description)
  @seen << description
  @filters.include? description
end

def fails(description)

def fails(description)
  @filters << description
end

def initialize

def initialize
  @filters = Set.new
  @seen = Set.new
end

def register

def register
  MSpec.register :exclude, self
end

def register_filters(description, block)

def register_filters(description, block)
  instance_eval(&block)
end

def unused_filters_message(list: false)

def unused_filters_message(list: false)
  unused = @filters - @seen
  return if unused.size == 0
  if list
    puts
    puts "Unused filters:"
    unused.each {|u| puts "- #{u}"}
    puts
  else
    warn "\nThere are #{unused.size} unused filters, re-run with ENV['LIST_UNUSED_FILTERS'] = true to list them\n\n"
  end
end