Class: DirTreeWalker

Inherits:
Object
  • Object
show all
Defined in:
lib/tree_visitor/dir_tree_walker.rb

Instance Method Summary collapse

Constructor Details

#initialize(dirname) ⇒ DirTreeWalker

Returns a new instance of DirTreeWalker.



3
4
5
6
7
8
9
10
11
12
13
# File 'lib/tree_visitor/dir_tree_walker.rb', line 3

def initialize( dirname )
  @dirname = dirname
  unless File.directory?( dirname )
    raise "#{dirname} is not a directory!"
  end

  @visitor = nil
  @ignore_dir_patterns = []
  @inspect_file_patterns = []
  @ignore_file_patterns = []
end

Instance Method Details

#add_ignore_dir(pattern) ⇒ Object



15
16
17
# File 'lib/tree_visitor/dir_tree_walker.rb', line 15

def add_ignore_dir( pattern )
  @ignore_dir_patterns << pattern
end

#add_ignore_file(pattern) ⇒ Object



19
20
21
# File 'lib/tree_visitor/dir_tree_walker.rb', line 19

def add_ignore_file( pattern )
  @ignore_file_patterns << pattern
end

#add_inspect_file(pattern) ⇒ Object

quali file bisogna prendere in considerazione inspect opposto di ignore :-)



27
28
29
# File 'lib/tree_visitor/dir_tree_walker.rb', line 27

def add_inspect_file( pattern )
  @inspect_file_patterns << pattern
end

#ignore_dir?(dirname) ⇒ Boolean

Returns:

  • (Boolean)


31
32
33
34
35
36
# File 'lib/tree_visitor/dir_tree_walker.rb', line 31

def ignore_dir?( dirname )
  basename = File.basename( dirname )
  @ignore_dir_patterns.find{ |pattern|
    basename == pattern
  }
end

#ignore_file?(filename) ⇒ Boolean

Returns:

  • (Boolean)


38
39
40
41
42
43
44
45
46
47
# File 'lib/tree_visitor/dir_tree_walker.rb', line 38

def ignore_file?( filename )
  basename = File.basename( filename )
  @ignore_file_patterns.find{ |pattern|
    if pattern.kind_of? Regexp
      pattern =~ basename
    else
      pattern == basename
    end
  }
end

#inspect_file?(filename) ⇒ Boolean

Returns:

  • (Boolean)


49
50
51
52
53
54
55
56
57
58
59
# File 'lib/tree_visitor/dir_tree_walker.rb', line 49

def inspect_file?( filename )
  return true if @inspect_file_patterns.empty?
  basename = File.basename( filename )
  @inspect_file_patterns.find{ |pattern|
    if pattern.kind_of? Regexp
      pattern =~ basename
    else
      pattern == basename
    end
  }
end

#run(treeNodeVisitor) ⇒ Object



61
62
63
64
# File 'lib/tree_visitor/dir_tree_walker.rb', line 61

def run( treeNodeVisitor )
  @visitor = treeNodeVisitor
  process_directory( File.expand_path( @dirname ) )
end