class Nokogiri::VersionInfo

:nodoc:

def self.instance; @@instance; end

def self.instance; @@instance; end

def compiled_parser_version

def compiled_parser_version
  LIBXML_VERSION
end

def engine

def engine
  defined?(RUBY_ENGINE) ? RUBY_ENGINE : 'mri'
end

def jruby?

:nodoc:
def jruby?
  ::JRUBY_VERSION if RUBY_PLATFORM == "java"
end

def libxml2?

def libxml2?
  defined?(LIBXML_VERSION)
end

def loaded_parser_version

def loaded_parser_version
  LIBXML_PARSER_VERSION.scan(/^(.*)(..)(..)$/).first.collect{ |j|
    j.to_i
  }.join(".")
end

def to_hash

def to_hash
  hash_info = {}
  hash_info['warnings']              = []
  hash_info['nokogiri']              = Nokogiri::VERSION
  hash_info['ruby']                  = {}
  hash_info['ruby']['version']       = ::RUBY_VERSION
  hash_info['ruby']['platform']      = ::RUBY_PLATFORM
  hash_info['ruby']['description']   = ::RUBY_DESCRIPTION
  hash_info['ruby']['engine']        = engine
  hash_info['ruby']['jruby']         = jruby? if jruby?
  if libxml2?
    hash_info['libxml']              = {}
    hash_info['libxml']['binding']   = 'extension'
    hash_info['libxml']['compiled']  = compiled_parser_version
    hash_info['libxml']['loaded']    = loaded_parser_version
    hash_info['warnings']            = warnings
  end
  hash_info
end

def to_markdown

def to_markdown
  begin
    require 'psych'
  rescue LoadError
  end
  require 'yaml'
  "# Nokogiri (#{Nokogiri::VERSION})\n" +
  YAML.dump(to_hash).each_line.map { |line| "    #{line}" }.join
end

def warnings

def warnings
  return [] unless libxml2?
  if compiled_parser_version != loaded_parser_version
    ["Nokogiri was built against LibXML version #{compiled_parser_version}, but has dynamically loaded #{loaded_parser_version}"]
  else
    []
  end
end