Class: CC::Yaml::Nodes::Node

Inherits:
Object
  • Object
show all
Defined in:
lib/cc/yaml/nodes/node.rb

Direct Known Subclasses

Mapping, Scalar, Sequence

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(parent) {|_self| ... } ⇒ Node

Returns a new instance of Node.

Yields:

  • (_self)

Yield Parameters:



11
12
13
14
15
16
# File 'lib/cc/yaml/nodes/node.rb', line 11

def initialize(parent)
  @nested_warnings = []
  @parent          = parent
  prepare
  yield self if block_given?
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method, *args, &block) ⇒ Object



91
92
93
94
# File 'lib/cc/yaml/nodes/node.rb', line 91

def method_missing(method, *args, &block)
  return super unless __getobj__.respond_to?(method)
  __getobj__.public_send(method, *args, &block)
end

Instance Attribute Details

#parentObject

Returns the value of attribute parent.



9
10
11
# File 'lib/cc/yaml/nodes/node.rb', line 9

def parent
  @parent
end

Class Method Details

.has_default?Boolean

Returns:

  • (Boolean)


5
6
7
# File 'lib/cc/yaml/nodes/node.rb', line 5

def self.has_default?
  false
end

Instance Method Details

#as_json(options = nil) ⇒ Object



100
101
102
# File 'lib/cc/yaml/nodes/node.rb', line 100

def as_json(options = nil)
  __getobj__.as_json(options)
end

#deep_verifyObject



59
60
61
# File 'lib/cc/yaml/nodes/node.rb', line 59

def deep_verify
  verify
end

#dupObject



110
111
112
# File 'lib/cc/yaml/nodes/node.rb', line 110

def dup
  super.dup_values
end

#error(message, *params) ⇒ Object



49
50
51
# File 'lib/cc/yaml/nodes/node.rb', line 49

def error(message, *params)
  errors << message % params
end

#errorsObject



41
42
43
# File 'lib/cc/yaml/nodes/node.rb', line 41

def errors
  @errors ||= []
end

#errors?Boolean

Returns:

  • (Boolean)


22
23
24
# File 'lib/cc/yaml/nodes/node.rb', line 22

def errors?
  errors.any?
end

#nested_warning(message, *prefix) ⇒ Object



30
31
32
# File 'lib/cc/yaml/nodes/node.rb', line 30

def nested_warning(message, *prefix)
  @nested_warnings << [prefix, message]
end

#nested_warnings(*prefix) ⇒ Object



34
35
36
37
38
39
# File 'lib/cc/yaml/nodes/node.rb', line 34

def nested_warnings(*prefix)
  messages  = errors + warnings
  prefixed  = messages.map { |warning| [prefix, warning] }
  prefixed += @nested_warnings.map { |p, w| [prefix + p, w] }
  prefixed
end

#prepareObject



53
54
# File 'lib/cc/yaml/nodes/node.rb', line 53

def prepare
end

#respond_to_missing?(method, include_private = false) ⇒ Boolean

Returns:

  • (Boolean)


87
88
89
# File 'lib/cc/yaml/nodes/node.rb', line 87

def respond_to_missing?(method, include_private = false)
  __getobj__.respond_to?(method, false)
end

#to_sObject



96
97
98
# File 'lib/cc/yaml/nodes/node.rb', line 96

def to_s
  __getobj__.to_s
end

#verifyObject



56
57
# File 'lib/cc/yaml/nodes/node.rb', line 56

def verify
end

#visit_child(visitor, value) ⇒ Object



83
84
85
# File 'lib/cc/yaml/nodes/node.rb', line 83

def visit_child(visitor, value)
  visit_unexpected(visitor, value, "unexpected child")
end

#visit_mapping(visitor, value) ⇒ Object



67
68
69
# File 'lib/cc/yaml/nodes/node.rb', line 67

def visit_mapping(visitor, value)
  visit_unexpected(visitor, value, "unexpected mapping")
end

#visit_pair(visitor, key, value) ⇒ Object



71
72
73
# File 'lib/cc/yaml/nodes/node.rb', line 71

def visit_pair(visitor, key, value)
  visit_unexpected(visitor, value, "unexpected pair")
end

#visit_scalar(visitor, type, value, implicit = true) ⇒ Object



75
76
77
# File 'lib/cc/yaml/nodes/node.rb', line 75

def visit_scalar(visitor, type, value, implicit = true)
  visit_unexpected(visitor, value, "unexpected scalar") unless type == :null
end

#visit_sequence(visitor, value) ⇒ Object



79
80
81
# File 'lib/cc/yaml/nodes/node.rb', line 79

def visit_sequence(visitor, value)
  visit_unexpected(visitor, value, "unexpected sequence")
end

#visit_unexpected(visitor, value, message = nil) ⇒ Object



63
64
65
# File 'lib/cc/yaml/nodes/node.rb', line 63

def visit_unexpected(visitor, value, message = nil)
  error(message || "unexpected %p", value)
end

#warning(message, *params) ⇒ Object



45
46
47
# File 'lib/cc/yaml/nodes/node.rb', line 45

def warning(message, *params)
  warnings << message % params
end

#warningsObject



26
27
28
# File 'lib/cc/yaml/nodes/node.rb', line 26

def warnings
  @warnings ||= []
end

#warnings?Boolean

Returns:

  • (Boolean)


18
19
20
# File 'lib/cc/yaml/nodes/node.rb', line 18

def warnings?
  warnings.any?
end

#with_value(value) ⇒ Object



104
105
106
107
108
# File 'lib/cc/yaml/nodes/node.rb', line 104

def with_value(value)
  node = dup
  node.with_value!(value)
  node
end