class Listen::Silencer::Controller

def _reconfigure_silencer(extra_options)

def _reconfigure_silencer(extra_options)
  opts = extra_options.dup
  opts = opts.map do |key, value|
    [key, Array(value).flatten.compact]
  end
  opts = Hash[opts]
  if opts.key?(:ignore) && opts[:ignore].empty?
    opts.delete(:ignore)
  end
  @prev_silencer_options = opts
  @silencer.configure(@prev_silencer_options.dup.freeze)
end

def append_ignores(*regexps)

def append_ignores(*regexps)
  prev_ignores = Array(@prev_silencer_options[:ignore])
  _reconfigure_silencer(ignore: [prev_ignores + regexps])
end

def initialize(silencer, default_options)

def initialize(silencer, default_options)
  @silencer = silencer
  opts = default_options
  @prev_silencer_options = {}
  rules = [:only, :ignore, :ignore!].map do |option|
    [option, opts[option]] if opts.key? option
  end
  _reconfigure_silencer(Hash[rules.compact])
end

def replace_with_bang_ignores(regexps)

def replace_with_bang_ignores(regexps)
  _reconfigure_silencer(ignore!: regexps)
end

def replace_with_only(regexps)

def replace_with_only(regexps)
  _reconfigure_silencer(only: regexps)
end