Module: Card::Set::All::EventViz
- Extended by:
- Card::Set
- Defined in:
- tmpsets/set/mod007-05_standard/all/event_viz.rb
Instance Method Summary collapse
-
#events(action) ⇒ Object
the events method is a developer’s tool for visualizing the event order for a given card.
- #events_tree(filt) ⇒ Object
-
#puts_events(events, prefix = '', depth = 0) ⇒ Object
private.
Methods included from Card::Set
abstract_set?, all_set?, card_accessor, card_reader, card_writer, clean_empty_module_from_hash, clean_empty_modules, define_active_job, define_event_method, define_event_perform_later_method, define_on_format, ensure_set, event, extended, format, process_base_module_list, process_base_modules, register_set, register_set_format, shortname, view, write_tmp_file
Instance Method Details
#events(action) ⇒ Object
the events method is a developer’s tool for visualizing the event order for a given card. For example, from a console you might run
puts mycard.events :update
to see the order of events that will be executed on mycard. The indention and arrows (^v) indicate event dependencies.
Note: as of yet, the functionality is a bit rough. It does not display events that are called directly from within other events (like :stored), and certain event requirements (like the presence of a “current_act”) may prevent events from showing up in the tree.
15 16 17 18 19 20 |
# File 'tmpsets/set/mod007-05_standard/all/event_viz.rb', line 15 def events action @action = action events = [ events_tree(:validation), events_tree(:save) ] @action = nil puts_events events end |
#events_tree(filt) ⇒ Object
52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'tmpsets/set/mod007-05_standard/all/event_viz.rb', line 52 def events_tree filt hash = {:name => filt } if respond_to? "_#{filt}_callbacks" send( "_#{filt}_callbacks" ).each do |callback| next unless callback.applies? self hash[callback.kind] ||= [] hash[callback.kind] << events_tree( callback.filter ) end end hash end |
#puts_events(events, prefix = '', depth = 0) ⇒ Object
private
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'tmpsets/set/mod007-05_standard/all/event_viz.rb', line 24 def puts_events events, prefix='', depth=0 r = '' depth += 1 events.each do |e| space = ' ' * (depth * 2) #FIXME - this is not right. before and around callbacks are processed in declaration order regardless of kind. # not all befores then all arounds if e[:before] r += puts_events( e[:before], space+'v ', depth) end if e[:around] r += puts_events( e[:around], space+'vv ', depth ) end output = "#{prefix}#{e[:name]}" #warn output r+= "#{output}\n" if e[:after] r += puts_events( e[:after ].reverse, space+'^ ', depth ) end end r end |