fixed 'after_render' hook is not work.
- 'before_render' hook is called twice. - add simple cucumber test about some hooks.
This commit is contained in:
parent
486d34a2c1
commit
c444b3f232
13
middleman-core/features/extension_hooks.feature
Normal file
13
middleman-core/features/extension_hooks.feature
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
Feature: Extension author could use some hooks
|
||||||
|
|
||||||
|
Scenario: When build
|
||||||
|
Given a fixture app "extension-hooks-app"
|
||||||
|
When I run `middleman build`
|
||||||
|
Then the exit status should be 0
|
||||||
|
And the output should contain "/// after_configuration ///"
|
||||||
|
And the output should contain "/// ready ///"
|
||||||
|
And the output should contain "/// before_build ///"
|
||||||
|
And the output should contain "/// before ///"
|
||||||
|
And the output should contain "/// before_render ///"
|
||||||
|
And the output should contain "/// after_render ///"
|
||||||
|
And the output should contain "/// after_build ///"
|
39
middleman-core/fixtures/extension-hooks-app/config.rb
Normal file
39
middleman-core/fixtures/extension-hooks-app/config.rb
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
set :layout, false
|
||||||
|
|
||||||
|
class MyFeature < Middleman::Extension
|
||||||
|
def initialize(app, options_hash = {}, &block)
|
||||||
|
super
|
||||||
|
|
||||||
|
app.before do
|
||||||
|
puts '/// before ///'
|
||||||
|
end
|
||||||
|
|
||||||
|
app.ready do
|
||||||
|
puts '/// ready ///'
|
||||||
|
end
|
||||||
|
|
||||||
|
app.before_render do |body, path, locs, template_class|
|
||||||
|
puts "/// before_render ///"
|
||||||
|
end
|
||||||
|
|
||||||
|
app.after_render do |content, path, locs, template_class|
|
||||||
|
puts "/// after_render ///"
|
||||||
|
end
|
||||||
|
|
||||||
|
app.before_build do |builder|
|
||||||
|
puts "/// before_build ///"
|
||||||
|
end
|
||||||
|
|
||||||
|
app.after_build do |builder|
|
||||||
|
puts "/// after_build ///"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def after_configuration
|
||||||
|
puts '/// after_configuration ///'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
::Middleman::Extensions.register(:my_feature, MyFeature)
|
||||||
|
|
||||||
|
activate :my_feature
|
|
@ -0,0 +1,9 @@
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>extension-hooks-app</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>extension-hooks-app</h1>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -76,7 +76,7 @@ module Middleman
|
||||||
end
|
end
|
||||||
|
|
||||||
# Allow hooks to manipulate the result after render
|
# Allow hooks to manipulate the result after render
|
||||||
content = @app.callbacks_for(:before_render).reduce(content) do |sum, callback|
|
content = @app.callbacks_for(:after_render).reduce(content) do |sum, callback|
|
||||||
callback.call(sum, path, locs, template_class) || sum
|
callback.call(sum, path, locs, template_class) || sum
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue