Module: FeedMethod

Included in:
DirProcessor::DirProcessor, DirProcessor::DirProcessor::ADir
Defined in:
lib/dir_processor.rb

Overview

my try to dry

Instance Method Summary collapse

Instance Method Details

#feed(dir) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/dir_processor.rb', line 11

def feed dir
  return unless accept? dir

  # Copy/Paste:
  crap = proc { |x| x == '.' || x == '..' }

  Dir.chdir dir do
    this_dir = dir
    dir = '.'

  all = Dir.entries(dir).reject(&crap).group_by { |x| is_dir?(x) ? :dirs : :files } #long_name
  all_files = all[:files]
  all_dirs = all[:dirs]

  so2(:first).each do |processor|
    processor.feed this_dir
  end
  so2(:file).each do |processor|
    (all[:files] || []).each { |file| processor.feed file } # long_name(dir,file) }
  end
  so2(:dir).each do |processor|
    # require 'pry'; binding.pry
    (all[:dirs] || []).each do |f|
      processor.feed f #long_name(dir,f)
    end
  end

  end
end