Merge pull request #3871 from stevecrozz/3870_hook_trigger_interface_change
Merge pull request 3871
This commit is contained in:
commit
8927898e1f
|
@ -144,6 +144,15 @@ module Jekyll
|
|||
end
|
||||
end
|
||||
|
||||
# returns the owner symbol for hook triggering
|
||||
def hook_owner
|
||||
if is_a?(Post)
|
||||
:post
|
||||
elsif is_a?(Page)
|
||||
:page
|
||||
end
|
||||
end
|
||||
|
||||
# Determine whether the document is an asset file.
|
||||
# Asset files include CoffeeScript files and Sass/SCSS files.
|
||||
#
|
||||
|
@ -236,7 +245,7 @@ module Jekyll
|
|||
#
|
||||
# Returns nothing.
|
||||
def do_layout(payload, layouts)
|
||||
Jekyll::Hooks.trigger self, :pre_render, payload
|
||||
Jekyll::Hooks.trigger hook_owner, :pre_render, self, payload
|
||||
info = { :filters => [Jekyll::Filters], :registers => { :site => site, :page => payload['page'] } }
|
||||
|
||||
# render and transform content (this becomes the final content of the object)
|
||||
|
@ -250,7 +259,7 @@ module Jekyll
|
|||
self.output = content
|
||||
|
||||
render_all_layouts(layouts, payload, info) if place_in_layout?
|
||||
Jekyll::Hooks.trigger self, :post_render
|
||||
Jekyll::Hooks.trigger hook_owner, :post_render, self
|
||||
end
|
||||
|
||||
# Write the generated page file to the destination directory.
|
||||
|
@ -264,7 +273,7 @@ module Jekyll
|
|||
File.open(path, 'wb') do |f|
|
||||
f.write(output)
|
||||
end
|
||||
Jekyll::Hooks.trigger self, :post_write
|
||||
Jekyll::Hooks.trigger hook_owner, :post_write, self
|
||||
end
|
||||
|
||||
# Accessor for data properties by Liquid.
|
||||
|
|
|
@ -190,7 +190,7 @@ module Jekyll
|
|||
f.write(output)
|
||||
end
|
||||
|
||||
Jekyll::Hooks.trigger self, :post_write
|
||||
Jekyll::Hooks.trigger :document, :post_write, self
|
||||
end
|
||||
|
||||
# Returns merged option hash for File.read of self.site (if exists)
|
||||
|
|
|
@ -1,13 +1,5 @@
|
|||
module Jekyll
|
||||
module Hooks
|
||||
# Helps look up hooks from the registry by owner's class
|
||||
OWNER_MAP = {
|
||||
Jekyll::Site => :site,
|
||||
Jekyll::Page => :page,
|
||||
Jekyll::Post => :post,
|
||||
Jekyll::Document => :document,
|
||||
}.freeze
|
||||
|
||||
DEFAULT_PRIORITY = 20
|
||||
|
||||
# compatibility layer for octopress-hooks users
|
||||
|
@ -88,19 +80,17 @@ module Jekyll
|
|||
end
|
||||
|
||||
# interface for Jekyll core components to trigger hooks
|
||||
def self.trigger(instance, event, *args)
|
||||
owner_symbol = OWNER_MAP[instance.class]
|
||||
|
||||
def self.trigger(owner, event, *args)
|
||||
# proceed only if there are hooks to call
|
||||
return unless @registry[owner_symbol]
|
||||
return unless @registry[owner_symbol][event]
|
||||
return unless @registry[owner]
|
||||
return unless @registry[owner][event]
|
||||
|
||||
# hooks to call for this owner and event
|
||||
hooks = @registry[owner_symbol][event]
|
||||
hooks = @registry[owner][event]
|
||||
|
||||
# sort and call hooks according to priority and load order
|
||||
hooks.sort_by { |h| @hook_priority[h] }.each do |hook|
|
||||
hook.call(instance, *args)
|
||||
hook.call(*args)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -36,7 +36,7 @@ module Jekyll
|
|||
site.frontmatter_defaults.find(File.join(dir, name), type, key)
|
||||
end
|
||||
|
||||
Jekyll::Hooks.trigger self, :post_init
|
||||
Jekyll::Hooks.trigger :page, :post_init, self
|
||||
end
|
||||
|
||||
# The generated directory into which the page will be placed
|
||||
|
|
|
@ -69,7 +69,7 @@ module Jekyll
|
|||
populate_categories
|
||||
populate_tags
|
||||
|
||||
Jekyll::Hooks.trigger self, :post_init
|
||||
Jekyll::Hooks.trigger :post, :post_init, self
|
||||
end
|
||||
|
||||
def published?
|
||||
|
|
|
@ -35,7 +35,7 @@ module Jekyll
|
|||
"page" => document.to_liquid
|
||||
}, site_payload || site.site_payload)
|
||||
|
||||
Jekyll::Hooks.trigger document, :pre_render, payload
|
||||
Jekyll::Hooks.trigger :document, :pre_render, document, payload
|
||||
|
||||
info = {
|
||||
filters: [Jekyll::Filters],
|
||||
|
|
|
@ -86,7 +86,7 @@ module Jekyll
|
|||
raise ArgumentError, "limit_posts must be a non-negative number"
|
||||
end
|
||||
|
||||
Jekyll::Hooks.trigger self, :after_reset
|
||||
Jekyll::Hooks.trigger :site, :after_reset, self
|
||||
end
|
||||
|
||||
# Load necessary libraries, plugins, converters, and generators.
|
||||
|
@ -144,7 +144,7 @@ module Jekyll
|
|||
def read
|
||||
reader.read
|
||||
limit_posts!
|
||||
Jekyll::Hooks.trigger self, :post_read
|
||||
Jekyll::Hooks.trigger :site, :post_read, self
|
||||
end
|
||||
|
||||
# Run each of the Generators.
|
||||
|
@ -164,13 +164,13 @@ module Jekyll
|
|||
|
||||
payload = site_payload
|
||||
|
||||
Jekyll::Hooks.trigger self, :pre_render, payload
|
||||
Jekyll::Hooks.trigger :site, :pre_render, self, payload
|
||||
|
||||
collections.each do |label, collection|
|
||||
collection.docs.each do |document|
|
||||
if regenerator.regenerate?(document)
|
||||
document.output = Jekyll::Renderer.new(self, document, payload).run
|
||||
Jekyll::Hooks.trigger document, :post_render
|
||||
Jekyll::Hooks.trigger :document, :post_render, document
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -199,7 +199,7 @@ module Jekyll
|
|||
item.write(dest) if regenerator.regenerate?(item)
|
||||
}
|
||||
regenerator.write_metadata
|
||||
Jekyll::Hooks.trigger self, :post_write
|
||||
Jekyll::Hooks.trigger :site, :post_write, self
|
||||
end
|
||||
|
||||
# Construct a Hash of Posts indexed by the specified Post attribute.
|
||||
|
|
Loading…
Reference in New Issue