Module ModuleExtensions::AutoloadTree
In: lib/module_extensions/autoload_tree.rb
Copyright:Copyright (c) 2004 Nicolas Despres. All rights reserved.
Author:Nicolas Despres <polrop@lrde.epita.fr>.
License:Gnu General Public License.
Revision:$Id: /w/fey/ruby_ex/trunk/lib/module_extensions/autoload_tree.rb 53902 2007-01-13T11:33:32.044352Z ertai $

Methods

Classes and Modules

Class ModuleExtensions::AutoloadTree::AutoloadTreeTest

Public Instance methods

[Source]

# File lib/module_extensions/autoload_tree.rb, line 9
  def autoload_tree(dir, recursive=true, &block)
    pdir = Pathname.new(dir)
    pdir.each_entry do |p|
      next if p.to_s =~ /^\./
      pfull = pdir + p
      if pfull.directory? and recursive
        name = p.to_s.capitalize!
        const_set(name, Module.new) unless const_defined?(name)
        const_get(name).autoload_tree(pfull, recursive, &block)
      elsif pfull.file? and p.to_s =~ /\.rb$/
        autoload(name.to_sym, pfull.to_s) if name = block[p]
      end
    end
  end

[Source]

# File lib/module_extensions/autoload_tree.rb, line 24
  def autoloaded_module ( file, recursive=true )
    dir = file.sub(/\.rb$/, '').to_path
    autoload_tree(dir) do |path|
      path.basename.to_s.sub(/\.rb$/, '').gsub(/(?:^|_)([a-z])/) { $1.upcase }
    end
  end

[Validate]