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 Method Summary collapse

Constructor Details

#initialize(path) ⇒ FileTraverser

Returns a new instance of FileTraverser.



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

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

Instance Method Details

#config_fileObject



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

def config_file
  @config_file ||= if File.exists?(CONFIG_FILE_NAME)
    YAML.load_file(CONFIG_FILE_NAME)
  else
    nil_config_file
  end
end

#ignored_filesObject



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

def ignored_files
  @ignored_files ||=
    config_file[EXCLUDE_PATHS_KEY].flat_map { |path| Dir[path] }
end

#ignored_speedupsObject



28
29
30
31
# File 'lib/fasterer/file_traverser.rb', line 28

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

#traverseObject



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

def traverse
  if @path.directory?
    scannable_files.each { |ruby_file| scan_file(ruby_file) }
  else
    scan_file(@path)
  end
  output_parse_errors if parse_error_paths.any?
end