class Object #require 'ruby-debug';debugger #p 'a' end module CucumberExt def self.included(obj) #add_set_images_to_results(obj) add_images_to_results(obj) add_push_image_to_results(obj) add_delete_images_to_results(obj) end def self.add_delete_images_to_results(klass) klass.class_eval { define_method('delete_images') { Cucumber::Constants::IMAGES.each { |i| Cucumber::Constants::IMAGES.delete(i) } } } end def self.add_set_images_to_results(klass) klass.class_eval { define_method('set_images') { @images = [] unless @images.kind_of?(Array) } } end def self.add_images_to_results(klass) klass.class_eval { define_method('images') { #set_images Cucumber::Constants::IMAGES #@images } } end def self.add_push_image_to_results(klass) klass.class_eval { define_method('add_image') { |params={}, &block| raise ArgumentError unless params.has_key?(:src) raise ArgumentError unless params.has_key?(:label) Cucumber::Constants::IMAGES << {:src => params[:src], :label => params[:label]} } } end end module Cucumber module Constants IMAGES = [] end class Runtime class ForProgrammingLanguages include CucumberExt end end class StepMother < Runtime include CucumberExt end end