Sha256: 6730ecc3bb26f8ae0470080833f51ac030d2ac2750c767b74b49a6d45495433d

Contents?: true

Size: 678 Bytes

Versions: 1

Compression:

Stored size: 678 Bytes

Contents

module SafeYAML
  class SyckTagVerifier
    QUOTE_STYLES = [:quote1, :quote2]

    attr_reader :tags

    def initialize(whitelist)
      @tags = Set.new
      @verifier = SafeYAML::TagVerifier.new(whitelist)
    end

    def verify(node)
      return unless node.respond_to?(:type_id)
      if !QUOTE_STYLES.include?(node.instance_variable_get(:@style)) && node.value.is_a?(String)
        YAML.check_string_for_symbol!(node.value)
      end
      @verifier.verify_tag!(node.type_id, node.value)

      case node.value
      when Hash
        node.value.each { |k,v| verify(k); verify(v) }
      when Array
        node.value.each { |i| verify(i) }
      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/syck_tag_verifier.rb