module Rake
class MakefileLoader
SPACE_MARK = "__ __"
def load(fn)
open(fn) do |mf|
lines = mf.read
lines.gsub!(/\\ /, SPACE_MARK)
lines.gsub!(/ lines.gsub!(/\\\n/, ' ')
lines.split("\n").each do |line|
process_line(line)
end
end
end
private
def process_line(line)
file_tasks, args = line.split(':')
return if args.nil?
dependents = args.split.map { |d| respace(d) }
file_tasks.strip.split.each do |file_task|
file_task = respace(file_task)
file file_task => dependents
end
end
def respace(str)
str.gsub(/#{SPACE_MARK}/, ' ')
end
end
Rake.application.add_loader('mf', MakefileLoader.new)
end