This needs to be defined up front in case any internal classes need to base their behavior off of this.
# File lib/safe_yaml.rb, line 40 def restore_defaults! OPTIONS.clear.merge!(Deep.copy(DEFAULT_OPTIONS)) end
# File lib/safe_yaml.rb, line 106 def tag_is_explicitly_trusted?(tag) false end
# File lib/safe_yaml.rb, line 44 def tag_safety_check!(tag, options) return if tag.nil? || tag == "!" if options[:raise_on_unknown_tag] && !options[:whitelisted_tags].include?(tag) && !tag_is_explicitly_trusted?(tag) raise "Unknown YAML tag '#{tag}'" end end
# File lib/safe_yaml.rb, line 51 def whitelist!(*classes) classes.each do |klass| whitelist_class!(klass) end end
# File lib/safe_yaml.rb, line 57 def whitelist_class!(klass) raise "#{klass} not a Class" unless klass.is_a?(::Class) klass_name = klass.name raise "#{klass} cannot be anonymous" if klass_name.nil? || klass_name.empty? # Whitelist any built-in YAML tags supplied by Syck or Psych. predefined_tag = predefined_tags[klass] if predefined_tag OPTIONS[:whitelisted_tags] << predefined_tag return end # Exception is exceptional (har har). tag_class = klass < Exception ? "exception" : "object" tag_prefix = case YAML_ENGINE when "psych" then "!ruby/#{tag_class}" when "syck" then "tag:ruby.yaml.org,2002:#{tag_class}" else raise "unknown YAML_ENGINE #{YAML_ENGINE}" end OPTIONS[:whitelisted_tags] << "#{tag_prefix}:#{klass_name}" end
Generated with the Darkfish Rdoc Generator 2.