nobu / ruby-lang.org wrote:
> The latest rake doesn't work with some patterns.

Wow, you are really pushing the limits here.  Good!

 > This is a patch to check it and allow file/task name starting
 > with a dot.

Unfortunately, the patch broke several existing unit tests.  But I think 
I got it working the way you want (more or less) without breaking anything.

First some commentary:

> 1) file name with source extension
>   rule '.o' => %w[.c Rakefile] do |t|
>     p "#{t.name} #{t.sources.join(' ')}"
>   end

The current way of adding literal file name to a list of rule dependents 
is to wrap it in a lambda, e.g.

    rule '.o' => ['.c', proc{"Rakefile"}] do |t| ... end

I added code to handle non-extension file names directly, so now the 
following will work:

    rule '.o' => %w[.c Rakefile] do |t| ... end

> 2) file name which starts with a dot
>   file '.foo'
>   rule '.o' => %w[.c .foo] do |t|
>     p "#{t.name} #{t.sources.join(' ')}"
>   end

Unfortunately, names beginning with dots are assumed to be file 
extension patterns.  If you really need it, wrap it in a lambda as 
above, or use something that is obviously not an extension, e.g:

     rule '.o' => %w[.c ./.foo] do |t| ... end

Code to handle the above has been committed.

> 3) target name without extension
>   rule 'foo' => %w[.c] do |t|
>     p "#{t.name} #{t.sources.join(' ')}"
>   end

If you are not matching a pattern in the rule, why don't you just use a 
normal task?  Nevertheless, this should work with the recently committed 
code.

Does this work for you?

-- Jim Weirich