Class: SafeYAML::PsychResolver
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
48
49
50
|
# File 'lib/safe_yaml/psych_resolver.rb', line 48
def value_is_quoted?(node)
node.quoted
end
|