Sha256: b8dfe23eb80920fb0e7badeab4175d248c037ebff8d441d5521c0e6661feebd6

Contents?: true

Size: 1.55 KB

Versions: 27

Compression:

Stored size: 1.55 KB

Contents

module Gem

  ###
  # This module is used for safely loading YAML specs from a gem.  The
  # `safe_load` method defined on this module is specifically designed for
  # loading Gem specifications.  For loading other YAML safely, please see
  # Psych.safe_load

  module SafeYAML
    PERMITTED_CLASSES = %w[
      Symbol
      Time
      Date
      Gem::Dependency
      Gem::Platform
      Gem::Requirement
      Gem::Specification
      Gem::Version
      Gem::Version::Requirement
      YAML::Syck::DefaultKey
      Syck::DefaultKey
    ].freeze

    PERMITTED_SYMBOLS = %w[
      development
      runtime
    ].freeze

    if ::YAML.respond_to? :safe_load
      def self.safe_load(input)
        if Gem::Version.new(Psych::VERSION) >= Gem::Version.new('3.1.0.pre1')
          ::YAML.safe_load(input, permitted_classes: PERMITTED_CLASSES, permitted_symbols: PERMITTED_SYMBOLS, aliases: true)
        else
          ::YAML.safe_load(input, PERMITTED_CLASSES, PERMITTED_SYMBOLS, true)
        end
      end

      def self.load(input)
        if Gem::Version.new(Psych::VERSION) >= Gem::Version.new('3.1.0.pre1')
          ::YAML.safe_load(input, permitted_classes: [::Symbol])
        else
          ::YAML.safe_load(input, [::Symbol])
        end
      end
    else
      unless Gem::Deprecate.skip
        warn "YAML safe loading is not available. Please upgrade psych to a version that supports safe loading (>= 2.0)."
      end

      def self.safe_load(input, *args)
        ::YAML.load input
      end

      def self.load(input)
        ::YAML.load input
      end
    end
  end
end

Version data entries

27 entries across 27 versions & 1 rubygems

Version Path
rubygems-update-3.2.24 lib/rubygems/safe_yaml.rb
rubygems-update-3.2.23 lib/rubygems/safe_yaml.rb
rubygems-update-3.2.22 lib/rubygems/safe_yaml.rb
rubygems-update-3.2.21 lib/rubygems/safe_yaml.rb
rubygems-update-3.2.20 lib/rubygems/safe_yaml.rb
rubygems-update-3.2.19 lib/rubygems/safe_yaml.rb
rubygems-update-3.2.18 lib/rubygems/safe_yaml.rb
rubygems-update-3.2.17 lib/rubygems/safe_yaml.rb
rubygems-update-3.2.16 lib/rubygems/safe_yaml.rb
rubygems-update-3.2.15 lib/rubygems/safe_yaml.rb
rubygems-update-3.2.14 lib/rubygems/safe_yaml.rb
rubygems-update-3.2.13 lib/rubygems/safe_yaml.rb
rubygems-update-3.2.12 lib/rubygems/safe_yaml.rb
rubygems-update-3.2.11 lib/rubygems/safe_yaml.rb
rubygems-update-3.2.10 lib/rubygems/safe_yaml.rb
rubygems-update-3.2.9 lib/rubygems/safe_yaml.rb
rubygems-update-3.2.8 lib/rubygems/safe_yaml.rb
rubygems-update-3.2.7 lib/rubygems/safe_yaml.rb
rubygems-update-3.2.6 lib/rubygems/safe_yaml.rb
rubygems-update-3.2.5 lib/rubygems/safe_yaml.rb