summaryrefslogtreecommitdiff
path: root/lib/rake/loaders/makefile.rb
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-03-06 04:47:12 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-03-06 04:47:12 +0000
commitcf4f718bc8fe352b450a1a6aa80b002701998263 (patch)
tree16d122cb36afc76d9416a42244a72f7a2830c02a /lib/rake/loaders/makefile.rb
parentc520d1fc84c338db3370fc7086f2840daa361dc9 (diff)
* lib/rake/loaders/makefile.rb (Rake::MakefileLoader#load): deals with
escaped spaces. incorporated from rake 0.8.4. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22791 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/rake/loaders/makefile.rb')
-rw-r--r--lib/rake/loaders/makefile.rb23
1 files changed, 14 insertions, 9 deletions
diff --git a/lib/rake/loaders/makefile.rb b/lib/rake/loaders/makefile.rb
index c0d05e7e3f..c77d428596 100644
--- a/lib/rake/loaders/makefile.rb
+++ b/lib/rake/loaders/makefile.rb
@@ -2,16 +2,16 @@ module Rake
# Makefile loader to be used with the import file loader.
class MakefileLoader
+ SPACE_MARK = "\0"
# Load the makefile dependencies in +fn+.
def load(fn)
- open(fn) do |mf|
- lines = mf.read
- lines.gsub!(/#[^\n]*\n/m, "")
- lines.gsub!(/\\\n/, ' ')
- lines.split("\n").each do |line|
- process_line(line)
- end
+ lines = open(fn) {|mf| mf.read}
+ lines.gsub!(/\\ /, SPACE_MARK)
+ lines.gsub!(/#[^\n]*\n/m, "")
+ lines.gsub!(/\\\n/, ' ')
+ lines.each_line do |line|
+ process_line(line)
end
end
@@ -19,13 +19,18 @@ module Rake
# Process one logical line of makefile data.
def process_line(line)
- file_tasks, args = line.split(':')
+ file_tasks, args = line.split(':', 2)
return if args.nil?
dependents = args.split
- file_tasks.strip.split.each do |file_task|
+ file_tasks.scan(/\S+/) do |file_task|
+ file_task = respace(file_task)
file file_task => dependents
end
end
+
+ def respace(str)
+ str.tr(SPACE_MARK, ' ')
+ end
end
# Install the handler