diff options
| author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-03-06 04:47:12 +0000 |
|---|---|---|
| committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-03-06 04:47:12 +0000 |
| commit | 5d4720da81db9c3131bb537af96e27686fa0ea35 (patch) | |
| tree | 16d122cb36afc76d9416a42244a72f7a2830c02a | |
| parent | 95c35a45a523dcc30d53b42a0a18a05789f69e86 (diff) | |
| download | ruby-5d4720da81db9c3131bb537af96e27686fa0ea35.tar.gz ruby-5d4720da81db9c3131bb537af96e27686fa0ea35.tar.xz ruby-5d4720da81db9c3131bb537af96e27686fa0ea35.zip | |
* lib/rake/loaders/makefile.rb (Rake::MakefileLoader#load): deals with
escaped spaces. incorporated from rake 0.8.4.
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@22791 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
| -rw-r--r-- | ChangeLog | 5 | ||||
| -rw-r--r-- | lib/rake/loaders/makefile.rb | 23 |
2 files changed, 18 insertions, 10 deletions
@@ -1,4 +1,7 @@ -Fri Mar 6 13:45:37 2009 Nobuyoshi Nakada <nobu@ruby-lang.org> +Fri Mar 6 13:47:10 2009 Nobuyoshi Nakada <nobu@ruby-lang.org> + + * lib/rake/loaders/makefile.rb (Rake::MakefileLoader#load): deals with + escaped spaces. incorporated from rake 0.8.4. * lib/rake/testtask.rb (Rake::TestTask#define): passes each libs as each arguments with expanded. incorporated from rake 0.8.4. diff --git a/lib/rake/loaders/makefile.rb b/lib/rake/loaders/makefile.rb index c0d05e7e3..c77d42859 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 |
