Module: MARC::MagicReader

Defined in:
lib/marc/xml_parsers.rb

Overview

The MagicReader will try to use the best available XML Parser at the time of initialization. The order is currently:

  * Nokogiri
  * jrexml (JRuby only)
  * rexml

With the idea that other parsers could be added as their modules are added. Realistically, this list should be limited to stream-based parsers. The magic should be used selectively, however. After all, one project’s definition of ‘best’ might not apply universally. It is arguable which is "best" on JRuby: Nokogiri or jrexml.

Class Method Summary (collapse)

Class Method Details

+ (Object) extended(receiver)



15
16
17
18
19
20
21
22
23
24
# File 'lib/marc/xml_parsers.rb', line 15

def self.extended(receiver)
  magic = MARC::XMLReader.best_available
  case magic
  when 'nokogiri' then receiver.extend(NokogiriReader)
  when 'libxml' then receiver.extend(LibXMLReader)
  when 'jstax' then receiver.extend(JRubySTAXReader)
  when 'jrexml' then receiver.extend(JREXMLReader)
  else receiver.extend(REXMLReader)
  end
end