class Listen::Silencer::Controller

Public Class Methods

new(silencer, default_options) click to toggle source
# File lib/listen/silencer/controller.rb, line 6
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

Public Instance Methods

append_ignores(*regexps) click to toggle source
# File lib/listen/silencer/controller.rb, line 19
def append_ignores(*regexps)
  prev_ignores = Array(@prev_silencer_options[:ignore])
  _reconfigure_silencer(ignore: [prev_ignores + regexps])
end
replace_with_bang_ignores(regexps) click to toggle source
# File lib/listen/silencer/controller.rb, line 24
def replace_with_bang_ignores(regexps)
  _reconfigure_silencer(ignore!: regexps)
end
replace_with_only(regexps) click to toggle source
# File lib/listen/silencer/controller.rb, line 28
def replace_with_only(regexps)
  _reconfigure_silencer(only: regexps)
end

Private Instance Methods

_reconfigure_silencer(extra_options) click to toggle source
# File lib/listen/silencer/controller.rb, line 34
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