Smooth Migration to XML::SAXParser's new Callbacks
libxml's XML::SAXParser has been changed in the Development Release to use callbacks. If you want to code to the new interface yet continue to work with the released interface, the following can be added to your code:
if !XML::SaxParser.const_defined?(:Callbacks) # shim to upgrade libxml 0.3.8.4 to the 0.5.2.0 interface class XML::SaxParser module Callbacks end def callbacks= callback callback.methods.grep(/^on_/).each do |method| send(method) { |*args| callback.send method, *args } end end end end
This code is now part of Mars. Props to Scott Bronson.