Implied extensions. Closes #304
This commit is contained in:
parent
aab9644185
commit
e769477e93
|
@ -28,6 +28,7 @@
|
||||||
* Add pid for cleanup
|
* Add pid for cleanup
|
||||||
* Use guard/listen for file watching
|
* Use guard/listen for file watching
|
||||||
* Merge full i18n support
|
* Merge full i18n support
|
||||||
|
* Implied file extensions (style.scss => sytle.css)
|
||||||
|
|
||||||
2.0.14
|
2.0.14
|
||||||
====
|
====
|
||||||
|
|
52
middleman-core/features/implied_extensions.feature
Normal file
52
middleman-core/features/implied_extensions.feature
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
Feature: Use default extensions when user doesn't supply them
|
||||||
|
|
||||||
|
Scenario: Default extensions preview
|
||||||
|
Given the Server is running at "implied-extensions-app"
|
||||||
|
When I go to "/index.html"
|
||||||
|
Then I should see "hello: world"
|
||||||
|
When I go to "/index.erb"
|
||||||
|
Then I should see "File Not Found"
|
||||||
|
When I go to "/index"
|
||||||
|
Then I should see "File Not Found"
|
||||||
|
|
||||||
|
Scenario: Default extensions preview
|
||||||
|
Given a fixture app "implied-extensions-app"
|
||||||
|
And a file named "config.rb" with:
|
||||||
|
"""
|
||||||
|
template_extensions :erb => :htm
|
||||||
|
"""
|
||||||
|
And the Server is running
|
||||||
|
When I go to "/index.htm"
|
||||||
|
Then I should see "hello: world"
|
||||||
|
When I go to "/index.erb"
|
||||||
|
Then I should see "File Not Found"
|
||||||
|
When I go to "/index"
|
||||||
|
Then I should see "File Not Found"
|
||||||
|
When I go to "/index.html"
|
||||||
|
Then I should see "File Not Found"
|
||||||
|
|
||||||
|
Scenario: Default extensions build
|
||||||
|
Given a fixture app "implied-extensions-app"
|
||||||
|
And a successfully built app at "implied-extensions-app"
|
||||||
|
When I cd to "build"
|
||||||
|
Then the following files should exist:
|
||||||
|
| index.html |
|
||||||
|
Then the following files should not exist:
|
||||||
|
| index |
|
||||||
|
| index.erb |
|
||||||
|
And the file "index.html" should contain "hello: world"
|
||||||
|
|
||||||
|
Scenario: Default extensions build with override
|
||||||
|
Given a fixture app "implied-extensions-app"
|
||||||
|
And a file named "config.rb" with:
|
||||||
|
"""
|
||||||
|
template_extensions :erb => :htm
|
||||||
|
"""
|
||||||
|
And a successfully built app at "implied-extensions-app"
|
||||||
|
When I cd to "build"
|
||||||
|
Then the following files should exist:
|
||||||
|
| index.htm |
|
||||||
|
Then the following files should not exist:
|
||||||
|
| index |
|
||||||
|
| index.erb |
|
||||||
|
| index.html |
|
|
@ -0,0 +1 @@
|
||||||
|
hello: <%= "world" %>
|
|
@ -33,6 +33,11 @@ module Middleman::CoreExtensions::Rendering
|
||||||
|
|
||||||
# Override init to clear cache on file removal
|
# Override init to clear cache on file removal
|
||||||
def initialize
|
def initialize
|
||||||
|
# Default extension map
|
||||||
|
@_template_extensions = {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
super
|
super
|
||||||
|
|
||||||
static_path = source_dir.sub(self.root, "").sub(/^\//, "")
|
static_path = source_dir.sub(self.root, "").sub(/^\//, "")
|
||||||
|
@ -44,6 +49,14 @@ module Middleman::CoreExtensions::Rendering
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Add or overwrite a default template extension
|
||||||
|
#
|
||||||
|
# @param [Hash] extension_map
|
||||||
|
# @return [void]
|
||||||
|
def template_extensions(extension_map={})
|
||||||
|
@_template_extensions.merge!(extension_map)
|
||||||
|
end
|
||||||
|
|
||||||
# Render a template, with layout, given a path
|
# Render a template, with layout, given a path
|
||||||
#
|
#
|
||||||
# @param [String] path
|
# @param [String] path
|
||||||
|
|
|
@ -10,6 +10,10 @@ module Middleman::Renderers::ERb
|
||||||
app.set :erb_engine, :erb
|
app.set :erb_engine, :erb
|
||||||
app.set :erb_engine_prefix, ::Tilt
|
app.set :erb_engine_prefix, ::Tilt
|
||||||
|
|
||||||
|
app.before_configuration do
|
||||||
|
template_extensions :erb => :html
|
||||||
|
end
|
||||||
|
|
||||||
# After config
|
# After config
|
||||||
app.after_configuration do
|
app.after_configuration do
|
||||||
# Find the user's prefered engine
|
# Find the user's prefered engine
|
||||||
|
|
|
@ -176,6 +176,15 @@ module Middleman::Sitemap
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# If there is no extension, look for one
|
||||||
|
if File.extname(path).empty?
|
||||||
|
input_ext = File.extname(file).split(".").last.to_sym
|
||||||
|
|
||||||
|
if app.template_extensions.has_key?(input_ext)
|
||||||
|
path << ".#{app.template_extensions[input_ext]}"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
path
|
path
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -21,9 +21,7 @@ Given /^current environment is "([^\"]*)"$/ do |env|
|
||||||
@current_env = env.to_sym
|
@current_env = env.to_sym
|
||||||
end
|
end
|
||||||
|
|
||||||
Given /^the Server is running at "([^\"]*)"$/ do |app_path|
|
Given /^the Server is running$/ do
|
||||||
step %Q{a fixture app "#{app_path}"}
|
|
||||||
|
|
||||||
root_dir = File.expand_path(current_dir)
|
root_dir = File.expand_path(current_dir)
|
||||||
|
|
||||||
if File.exists?(File.join(root_dir, "source"))
|
if File.exists?(File.join(root_dir, "source"))
|
||||||
|
@ -49,6 +47,11 @@ Given /^the Server is running at "([^\"]*)"$/ do |app_path|
|
||||||
@browser = ::Rack::Test::Session.new(::Rack::MockSession.new(app_rack))
|
@browser = ::Rack::Test::Session.new(::Rack::MockSession.new(app_rack))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Given /^the Server is running at "([^\"]*)"$/ do |app_path|
|
||||||
|
step %Q{a fixture app "#{app_path}"}
|
||||||
|
step %Q{the Server is running}
|
||||||
|
end
|
||||||
|
|
||||||
When /^I go to "([^\"]*)"$/ do |url|
|
When /^I go to "([^\"]*)"$/ do |url|
|
||||||
@browser.get(url)
|
@browser.get(url)
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue