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 libxml2_using_packaged?

def libxml2_using_packaged?
  NOKOGIRI_USE_PACKAGED_LIBRARIES
end

def libxml2_using_system?

def libxml2_using_system?
  ! libxml2_using_packaged?
end

def loaded_parser_version

def loaded_parser_version
  LIBXML_PARSER_VERSION.scan(/^(\d+)(\d\d)(\d\d)(?!\d)/).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'
    if libxml2_using_packaged?
      hash_info['libxml']['source']  = "packaged"
      hash_info['libxml']['libxml2_path'] = NOKOGIRI_LIBXML2_PATH
      hash_info['libxml']['libxslt_path'] = NOKOGIRI_LIBXSLT_PATH
      hash_info['libxml']['libxml2_patches'] = NOKOGIRI_LIBXML2_PATCHES
      hash_info['libxml']['libxslt_patches'] = NOKOGIRI_LIBXSLT_PATCHES
    else
      hash_info['libxml']['source']  = "system"
    end
    hash_info['libxml']['compiled']  = compiled_parser_version
    hash_info['libxml']['loaded']    = loaded_parser_version
    hash_info['warnings']            = warnings
  elsif jruby?
    hash_info['xerces']   = Nokogiri::XERCES_VERSION
    hash_info['nekohtml'] = Nokogiri::NEKO_VERSION
  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