Permalink
Browse files

Added lazy typing for generate, such that ./script/generate cn == ./s…

…cript/generate controller and the likes #1051 [k@v2studio.com]

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1137 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
  • Loading branch information...
1 parent a677da2 commit 9a97cb25eb37c2cf9eb3ab4b0c4350db0bf66678 @dhh dhh committed Apr 10, 2005
Showing with 11 additions and 3 deletions.
  1. +2 −0 railties/CHANGELOG
  2. +9 −3 railties/lib/rails_generator/lookup.rb
View
@@ -1,5 +1,7 @@
*SVN*
+* Added lazy typing for generate, such that ./script/generate cn == ./script/generate controller and the likes #1051 [k@v2studio.com]
+
* Fixed that ownership is brought over in pg_dump during tests for PostgreSQL #1060 [pburleson@gmail.com]
@@ -109,9 +109,15 @@ def use_component_sources!
def lookup(generator_name)
@found ||= {}
generator_name = generator_name.to_s.downcase
- @found[generator_name] ||= cache.find { |spec|
- spec.name == generator_name
- } or raise GeneratorError, "Couldn't find '#{generator_name}' generator"
+ @found[generator_name] ||= cache.find { |spec| spec.name == generator_name }
+ unless @found[generator_name]
+ chars = generator_name.scan(/./).map{|c|"#{c}.*?"}
+ rx = /^#{chars}$/
+ gns = cache.select{|spec| spec.name =~ rx }
+ @found[generator_name] ||= gns.first if gns.length == 1
+ raise GeneratorError, "Pattern '#{generator_name}' matches more than one generator: #{gns.map{|sp|sp.name}.join(', ')}" if gns.length > 1
+ end
+ @found[generator_name] or raise GeneratorError, "Couldn't find '#{generator_name}' generator"
end
# Convenience method to lookup and instantiate a generator.

0 comments on commit 9a97cb2

Please sign in to comment.