From 268538f92688fe5fcfe55c88dfcb6726aec6f8c3 Mon Sep 17 00:00:00 2001 From: Ben Hollis Date: Thu, 15 Aug 2013 21:12:29 -0700 Subject: [PATCH] Make an effort to handle spaces in filenames in a way that url_for can handle. --- middleman-core/features/directory_index.feature | 2 +- middleman-core/lib/middleman-core/cli/build.rb | 2 +- middleman-core/lib/middleman-core/sitemap/resource.rb | 2 +- middleman-core/lib/middleman-core/util.rb | 1 + 4 files changed, 4 insertions(+), 3 deletions(-) diff --git a/middleman-core/features/directory_index.feature b/middleman-core/features/directory_index.feature index e78e0fb3..99dbe60e 100644 --- a/middleman-core/features/directory_index.feature +++ b/middleman-core/features/directory_index.feature @@ -35,7 +35,7 @@ Feature: Directory Index Scenario: Preview normal file with spaces in filename Given the Server is running at "indexable-app" - When I go to "/evil spaces/" + When I go to "/evil%20spaces/" Then I should see "Spaces" Scenario: Preview normal file subdirectory diff --git a/middleman-core/lib/middleman-core/cli/build.rb b/middleman-core/lib/middleman-core/cli/build.rb index 1bad224c..6ff263c2 100644 --- a/middleman-core/lib/middleman-core/cli/build.rb +++ b/middleman-core/lib/middleman-core/cli/build.rb @@ -119,7 +119,7 @@ module Middleman::Cli # @return [String] The full path of the file that was written def render_to_file(resource) build_dir = self.class.shared_instance.config[:build_dir] - output_file = File.join(build_dir, resource.destination_path) + output_file = File.join(build_dir, resource.destination_path.gsub('%20', ' ')) if resource.binary? if !File.exists?(output_file) diff --git a/middleman-core/lib/middleman-core/sitemap/resource.rb b/middleman-core/lib/middleman-core/sitemap/resource.rb index 8aea12ba..143f08f4 100644 --- a/middleman-core/lib/middleman-core/sitemap/resource.rb +++ b/middleman-core/lib/middleman-core/sitemap/resource.rb @@ -38,7 +38,7 @@ module Middleman def initialize(store, path, source_file=nil) @store = store @app = @store.app - @path = path + @path = path.gsub(' ', '%20') # handle spaces in filenames @source_file = source_file @destination_paths = [@path] diff --git a/middleman-core/lib/middleman-core/util.rb b/middleman-core/lib/middleman-core/util.rb index 96436e26..06c520dd 100644 --- a/middleman-core/lib/middleman-core/util.rb +++ b/middleman-core/lib/middleman-core/util.rb @@ -153,6 +153,7 @@ module Middleman def self.url_for(app, path_or_resource, options={}) # Handle Resources and other things which define their own url method url = path_or_resource.respond_to?(:url) ? path_or_resource.url : path_or_resource + url = url.gsub(' ', '%20') begin uri = URI(url)