Class: SafeYAML::PsychResolver

Inherits:
Resolver
  • Object
show all
Defined in:
lib/safe_yaml/psych_resolver.rb

Constant Summary collapse

NODE_TYPES =
{
  Psych::Nodes::Document => :root,
  Psych::Nodes::Mapping  => :map,
  Psych::Nodes::Sequence => :seq,
  Psych::Nodes::Scalar   => :scalar,
  Psych::Nodes::Alias    => :alias
}.freeze

Instance Method Summary collapse

Methods inherited from Resolver

#get_and_check_node_tag, #options, #resolve_map, #resolve_node, #resolve_scalar, #resolve_seq, #tag_is_whitelisted?

Constructor Details

#initialize(options = {}) ⇒ PsychResolver

Returns a new instance of PsychResolver.



11
12
13
14
# File 'lib/safe_yaml/psych_resolver.rb', line 11

def initialize(options={})
  super
  @aliased_nodes = {}
end

Instance Method Details

#get_node_tag(node) ⇒ Object



33
34
35
# File 'lib/safe_yaml/psych_resolver.rb', line 33

def get_node_tag(node)
  node.tag
end

#get_node_type(node) ⇒ Object



29
30
31
# File 'lib/safe_yaml/psych_resolver.rb', line 29

def get_node_type(node)
  NODE_TYPES[node.class]
end

#get_node_value(node) ⇒ Object



37
38
39
40
41
42
43
44
45
46
# File 'lib/safe_yaml/psych_resolver.rb', line 37

def get_node_value(node)
  @aliased_nodes[node.anchor] = node if node.respond_to?(:anchor) && node.anchor

  case get_node_type(node)
  when :root, :map, :seq
    node.children
  when :scalar
    node.value
  end
end

#native_resolve(node) ⇒ Object



24
25
26
27
# File 'lib/safe_yaml/psych_resolver.rb', line 24

def native_resolve(node)
  @visitor ||= SafeYAML::SafeToRubyVisitor.new(self)
  @visitor.accept(node)
end

#resolve_alias(node) ⇒ Object



20
21
22
# File 'lib/safe_yaml/psych_resolver.rb', line 20

def resolve_alias(node)
  resolve_node(@aliased_nodes[node.anchor])
end

#resolve_root(root) ⇒ Object



16
17
18
# File 'lib/safe_yaml/psych_resolver.rb', line 16

def resolve_root(root)
  resolve_seq(root).first
end

#value_is_quoted?(node) ⇒ Boolean

Returns:

  • (Boolean)


48
49
50
# File 'lib/safe_yaml/psych_resolver.rb', line 48

def value_is_quoted?(node)
  node.quoted
end