Sha256: ffd1fe31e14c3479341c96e63cd15a91bea21e836faa050b82029e2078a509c1
Contents?: true
Size: 1.32 KB
Versions: 2
Compression:
Stored size: 1.32 KB
Contents
# frozen_string_literal: true module Laminar # Callback hooks for particles module Callbacks def self.included(klass) klass.class_eval do extend ClassMethods include InstanceMethods end end # Class methods and attributes. module ClassMethods def before(*args, &block) before_list.concat(args) before_list << block if block end alias before_call before def after(*args, &block) after_list.concat(args) after_list << block if block end alias after_call after def finalize(*args, &block) final_list.concat(args) final_list << block if block end def before_list @before_list ||= [] end def after_list @after_list ||= [] end def final_list @final_list ||= [] end end # Additional instance methods module InstanceMethods private def run_before_callbacks run_callbacks(self.class.before_list) end def run_after_callbacks run_callbacks(self.class.after_list) end def run_final_callbacks run_callbacks(self.class.final_list) end def run_callbacks(list) list.each { |cb| cb.is_a?(Symbol) ? send(cb) : instance_exec(&cb) } end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
laminar-0.7.0 | lib/laminar/callbacks.rb |
laminar-0.6.0 | lib/laminar/callbacks.rb |