Sha256: 80febcfdb242865867f7a645b9ca8c387548620eee82f0d20b91805cdbe82adb

Contents?: true

Size: 545 Bytes

Versions: 1

Compression:

Stored size: 545 Bytes

Contents

require 'set'

module SafeYAML
  class TagVerifier
    def initialize(whitelist)
      @whitelist = whitelist
      @seen = Set.new
    end

    def verify_tag!(tag, value)
      return if !tag || @seen.include?(tag)

      case @whitelist.check(tag, value)
      when :cacheable
        @seen << tag
      when :allowed
        # in the whitelist, but can't be cached (because it called a proc for yes/no)
      else
        raise SafeYAML::UnsafeTagError.new("YAML tag is not whitelisted: #{tag} #{value.inspect}")
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
safe_yaml-instructure-0.8.0 lib/safe_yaml/tag_verifier.rb