Class: Listen::Silencer

Inherits:
Object
  • Object
show all
Includes:
Celluloid
Defined in:
lib/listen/silencer.rb

Constant Summary collapse

DEFAULT_IGNORED_DIRECTORIES =

The default list of directories that get ignored.

%w[.bundle .git .hg .rbx .svn bundle log tmp vendor/ruby]
DEFAULT_IGNORED_EXTENSIONS =

The default list of files that get ignored.

%w[.DS_Store .tmp]

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(listener) ⇒ Silencer

Returns a new instance of Silencer.



13
14
15
16
# File 'lib/listen/silencer.rb', line 13

def initialize(listener)
  @listener = listener
  _init_patterns
end

Instance Attribute Details

#listenerObject

Returns the value of attribute listener.



11
12
13
# File 'lib/listen/silencer.rb', line 11

def listener
  @listener
end

#patternsObject

Returns the value of attribute patterns.



11
12
13
# File 'lib/listen/silencer.rb', line 11

def patterns
  @patterns
end

Instance Method Details

#_default_ignored_directories_patternsObject (private)



36
37
38
39
# File 'lib/listen/silencer.rb', line 36

def _default_ignored_directories_patterns
  ignored_directories = DEFAULT_IGNORED_DIRECTORIES.map { |d| Regexp.escape(d) }
  %r{^(?:#{ignored_directories.join('|')})(/|$)}
end

#_default_ignored_extensions_patternsObject (private)



41
42
43
44
# File 'lib/listen/silencer.rb', line 41

def _default_ignored_extensions_patterns
  ignored_extensions = DEFAULT_IGNORED_EXTENSIONS.map { |e| Regexp.escape(e) }
  %r{(?:#{ignored_extensions.join('|')})$}
end

#_default_patternsObject (private)



32
33
34
# File 'lib/listen/silencer.rb', line 32

def _default_patterns
  [_default_ignored_directories_patterns, _default_ignored_extensions_patterns]
end

#_init_patternsObject (private)



24
25
26
27
28
29
30
# File 'lib/listen/silencer.rb', line 24

def _init_patterns
  @patterns = []
  @patterns << _default_patterns unless listener.options[:ignore!]
  @patterns << listener.options[:ignore] << listener.options[:ignore!]
  @patterns.compact!
  @patterns.flatten!
end

#_relative_path(path) ⇒ Object (private)



46
47
48
49
# File 'lib/listen/silencer.rb', line 46

def _relative_path(path)
  relative_paths = listener.directories.map { |dir| path.relative_path_from(dir).to_s }
  relative_paths.detect { |path| !path.start_with?('../') }
end

#silenced?(path) ⇒ Boolean

Returns:

  • (Boolean)


18
19
20
# File 'lib/listen/silencer.rb', line 18

def silenced?(path)
  patterns.any? { |pattern| _relative_path(path) =~ pattern }
end