lib/jekyll/assets/hook.rb in jekyll-assets-2.1.3 vs lib/jekyll/assets/hook.rb in jekyll-assets-2.2.0
- old
+ new
@@ -1,59 +1,69 @@
+# ----------------------------------------------------------------------------
# Frozen-string-literal: true
-# Copyright: 2012-2015 - MIT License
+# Copyright: 2012 - 2016 - MIT License
# Encoding: utf-8
+# ----------------------------------------------------------------------------
module Jekyll
module Assets
class Hook
class UnknownHookError < RuntimeError
def initialize(base: nil, point: nil)
super "Unknown hook #{base ? "base" : "point"} '#{base || point}'"
end
end
+ # ----------------------------------------------------------------------
+
HOOK_ALIASES = {
:env => {
:post_init => :init,
:pre_init => :init
}
}
+ # ----------------------------------------------------------------------
+
HOOK_POINTS = {
:env => [
:init
]
}
+ # ----------------------------------------------------------------------
+
def self.all
@_all ||= {}
end
+ # ----------------------------------------------------------------------
# Trigger a hook, giving an optional block where we pass you the,
# proc we got and then you can do as you please (such as instance eval)
# but if you do not give us one then we simply pass the args.
+ # ----------------------------------------------------------------------
def self.trigger(base, point_, *args, &block)
- raise ArgumentError, "Do not give args with a block" if args.size > 0 && block_given?
+ raise ArgumentError, "Do not give args with a block" if !args.empty? && block_given?
if all.key?(base) && all[base].key?(point_)
Set.new.merge(point(base, point_, :early)).merge(point(base, point_)).map do |v|
block_given?? block.call(v) : v.call(*args)
end
end
end
- #
+ # ----------------------------------------------------------------------
def self.point(base, point, when_ = :late)
point = all[base][point] ||= {
:early => Set.new,
:late => Set.new
}
point[when_]
end
- #
+ # ----------------------------------------------------------------------
def self.register(base, point, when_ = :late, &block)
raise UnknownHookError, base: base unless HOOK_POINTS.key?(base)
point = HOOK_ALIASES[base][point] if HOOK_ALIASES.fetch(base, {}).key?(point)
raise UnknownHookError, point: point unless HOOK_POINTS[base].include?(point)