Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

77 lines (63 sloc) 1.596 kb
##
# The YAML module allows you to use one of the two YAML engines that ship with
# ruby. By default Psych is used but the old and unmaintained Syck may be
# chosen.
#
# See Psych or Syck for usage and documentation.
#
# To set the YAML engine to syck:
#
# YAML::ENGINE.yamler = 'syck'
#
# To set the YAML engine back to psych:
#
# YAML::ENGINE.yamler = 'psych'
module YAML
class EngineManager # :nodoc:
attr_reader :yamler
def initialize
@yamler = nil
end
def syck?
'syck' == @yamler
end
def yamler= engine
raise(ArgumentError, "bad engine") unless %w{syck psych}.include?(engine)
require engine unless (engine == 'syck' ? Syck : Psych).const_defined?(:VERSION)
Object.class_eval <<-eorb, __FILE__, __LINE__ + 1
remove_const 'YAML'
YAML = #{engine.capitalize}
remove_method :to_yaml
alias :to_yaml :#{engine}_to_yaml
eorb
@yamler = engine
engine
end
end
##
# Allows changing the current YAML engine. See YAML for details.
ENGINE = YAML::EngineManager.new
end
if defined?(Psych)
engine = 'psych'
elsif defined?(Syck)
engine = 'syck'
else
begin
require 'psych'
engine = 'psych'
rescue LoadError
warn "#{caller[0]}:"
warn "It seems your ruby installation is missing psych (for YAML output)."
warn "To eliminate this warning, please install libyaml and reinstall your ruby."
require 'syck'
engine = 'syck'
end
end
module Syck
ENGINE = YAML::ENGINE
end
module Psych
ENGINE = YAML::ENGINE
end
YAML::ENGINE.yamler = engine
Jump to Line
Something went wrong with that request. Please try again.