Sha256: ae93ecceee012593a7cac8b58dbbf9bb1599178e8721e0bd38ae14850f75451e

Contents?: true

Size: 928 Bytes

Versions: 8

Compression:

Stored size: 928 Bytes

Contents

# -*- coding: utf-8 -*-
module TreeVisitor

  #
  # Visit a directory tree
  # not TreeNode related
  #
  class DirProcessor

    def initialize( &action )
      @processors = {}
      @default_processor = action
    end

    def add_processor( re, &action )
      @processors[ re ] = action
    end

    def process( dirname )
      @dirname = dirname
      old_dirname = Dir.pwd
      Dir.chdir( @dirname )
      Dir["**/*"].each { |f|
        pn = Pathname.new( f ).expand_path
        # puts "#{self.class.name}#loadfromdir #{f}"
        next if pn.directory?
        process_file( pn )
      }
      Dir.chdir( old_dirname )
      self
    end

    private
  
    def process_file( pn )
      # puts "file: #{f}"
      pair = @processors.find { |re,action| re =~ pn.to_s }
      unless pair.nil?
        pair[1].call( pn )
      else
        @default_processor.call( pn ) if @default_processor
      end
    end

  end
end

Version data entries

8 entries across 8 versions & 2 rubygems

Version Path
tree.rb-0.3.0 lib/treevisitor/util/dir_processor.rb
treevisitor-0.2.3 lib/treevisitor/util/dir_processor.rb
treevisitor-0.2.2 lib/treevisitor/util/dir_processor.rb
treevisitor-0.2.1 lib/treevisitor/util/dir_processor.rb
treevisitor-0.2.0 lib/treevisitor/util/dir_processor.rb
treevisitor-0.1.6 lib/treevisitor/util/dir_processor.rb
treevisitor-0.1.5 lib/treevisitor/dir_processor.rb
treevisitor-0.1.4 lib/treevisitor/dir_processor.rb