@@ -127,7 +127,7 @@ def enhance_with_matching_rule(task_name, level=0)
127127 "Rule Recursion Too Deep" if level >= 16
128128 @rules . each do |pattern , args , extensions , block |
129129 if pattern . match ( task_name )
130- task = attempt_rule ( task_name , args , extensions , block , level )
130+ task = attempt_rule ( task_name , pattern , args , extensions , block , level )
131131 return task if task
132132 end
133133 end
@@ -241,8 +241,8 @@ def trace_rule(level, message) # :nodoc:
241241 end
242242
243243 # Attempt to create a rule given the list of prerequisites.
244- def attempt_rule ( task_name , args , extensions , block , level )
245- sources = make_sources ( task_name , extensions )
244+ def attempt_rule ( task_name , task_pattern , args , extensions , block , level )
245+ sources = make_sources ( task_name , task_pattern , extensions )
246246 prereqs = sources . map { |source |
247247 trace_rule level , "Attempting Rule #{ task_name } => #{ source } "
248248 if File . exist? ( source ) || Rake ::Task . task_defined? ( source )
@@ -263,15 +263,16 @@ def attempt_rule(task_name, args, extensions, block, level)
263263
264264 # Make a list of sources from the list of file name extensions /
265265 # translation procs.
266- def make_sources ( task_name , extensions )
266+ def make_sources ( task_name , task_pattern , extensions )
267267 result = extensions . map { |ext |
268268 case ext
269269 when /%/
270270 task_name . pathmap ( ext )
271271 when %r{/}
272272 ext
273273 when /^\. /
274- task_name . ext ( ext )
274+ source = task_name . sub ( task_pattern , ext )
275+ source == ext ? task_name . ext ( ext ) : source
275276 when String
276277 ext
277278 when Proc , Method
0 commit comments