1require 'psych/handler' 2 3module Psych 4 module Handlers 5 ### 6 # This handler will capture an event and record the event. Recorder events 7 # are available vial Psych::Handlers::Recorder#events. 8 # 9 # For example: 10 # 11 # recorder = Psych::Handlers::Recorder.new 12 # parser = Psych::Parser.new recorder 13 # parser.parse '--- foo' 14 # 15 # recorder.events # => [list of events] 16 # 17 # # Replay the events 18 # 19 # emitter = Psych::Emitter.new $stdout 20 # recorder.events.each do |m, args| 21 # emitter.send m, *args 22 # end 23 24 class Recorder < Psych::Handler 25 attr_reader :events 26 27 def initialize 28 @events = [] 29 super 30 end 31 32 EVENTS.each do |event| 33 define_method event do |*args| 34 @events << [event, args] 35 end 36 end 37 end 38 end 39end 40