Class: Fasterer::FileTraverser

Inherits:
Object
  • Object
show all
Defined in:
lib/fasterer/file_traverser.rb

Constant Summary collapse

CONFIG_FILE_NAME =
'.fasterer.yml'
SPEEDUPS_KEY =
'speedups'
EXCLUDE_PATHS_KEY =
'exclude_paths'

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(path) ⇒ FileTraverser

Returns a new instance of FileTraverser.



18
19
20
21
22
23
# File 'lib/fasterer/file_traverser.rb', line 18

def initialize(path)
  @path = Pathname(path)
  @parse_error_paths = []
  set_ignored_speedups
  set_ignored_paths
end

Instance Attribute Details

#ignored_pathsObject (readonly)

Returns the value of attribute ignored_paths.



16
17
18
# File 'lib/fasterer/file_traverser.rb', line 16

def ignored_paths
  @ignored_paths
end

#ignored_speedupsObject (readonly)

Returns the value of attribute ignored_speedups.



16
17
18
# File 'lib/fasterer/file_traverser.rb', line 16

def ignored_speedups
  @ignored_speedups
end

Instance Method Details

#config_fileObject



46
47
48
# File 'lib/fasterer/file_traverser.rb', line 46

def config_file
  File.exists?(CONFIG_FILE_NAME) && YAML.load_file(CONFIG_FILE_NAME)
end

#set_ignored_pathsObject



40
41
42
43
44
# File 'lib/fasterer/file_traverser.rb', line 40

def set_ignored_paths
  @ignored_paths = if config_file && config_file[EXCLUDE_PATHS_KEY]
    config_file[EXCLUDE_PATHS_KEY].flat_map {|path| Dir[path] }
  end || []
end

#set_ignored_speedupsObject



34
35
36
37
38
# File 'lib/fasterer/file_traverser.rb', line 34

def set_ignored_speedups
  @ignored_speedups = if config_file && config_file[SPEEDUPS_KEY]
    config_file[SPEEDUPS_KEY].select {|_, value| value == false }.keys.map(&:to_sym)
  end || []
end

#traverseObject



25
26
27
28
29
30
31
32
# File 'lib/fasterer/file_traverser.rb', line 25

def traverse
  if @path.directory?
    traverse_directory(@path)
  else
    scan_file(@path)
  end
  output_parse_errors if parse_error_paths.any?
end