Sha256: e5c75c7f879048c522861bad96e73e770a17464a224c744af336added9068444

Contents?: true

Size: 921 Bytes

Versions: 11

Compression:

Stored size: 921 Bytes

Contents

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

  #
  # 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

11 entries across 11 versions & 1 rubygems

Version Path
tree.rb-0.3.11 lib/tree_rb/input_file_system/dir_processor.rb
tree.rb-0.3.10 lib/tree_rb/util/dir_processor.rb
tree.rb-0.3.9 lib/tree_rb/util/dir_processor.rb
tree.rb-0.3.8 lib/tree_rb/util/dir_processor.rb
tree.rb-0.3.7 lib/tree_rb/util/dir_processor.rb
tree.rb-0.3.6 lib/tree_rb/util/dir_processor.rb
tree.rb-0.3.5 lib/tree_rb/util/dir_processor.rb
tree.rb-0.3.4 lib/tree_rb/util/dir_processor.rb
tree.rb-0.3.3 lib/tree_rb/util/dir_processor.rb
tree.rb-0.3.2 lib/tree_rb/util/dir_processor.rb
tree.rb-0.3.1 lib/tree_rb/util/dir_processor.rb