class CC::Yaml::Nodes::Scalar
Attributes
__getobj__[RW]
value[RW]
Public Class Methods
[](*types)
click to toggle source
# File lib/cc/yaml/nodes/scalar.rb, line 4 def self.[](*types) Class.new(self) do default_type(types.first) cast(*types) end end
cast(*types)
click to toggle source
# File lib/cc/yaml/nodes/scalar.rb, line 15 def self.cast(*types) @cast ||= superclass.respond_to?(:cast) ? superclass.cast.dup : [] @cast.concat(types) if types.any? @cast end
cast?(type)
click to toggle source
# File lib/cc/yaml/nodes/scalar.rb, line 11 def self.cast?(type) cast.include? type end
default(value = nil)
click to toggle source
# File lib/cc/yaml/nodes/scalar.rb, line 26 def self.default(value = nil) @default = value if value @default ||= nil end
default_type(type = nil)
click to toggle source
# File lib/cc/yaml/nodes/scalar.rb, line 21 def self.default_type(type = nil) @default_type = type if type @default_type ||= superclass.respond_to?(:default_type) ? superclass.default_type : :str end
has_default?()
click to toggle source
# File lib/cc/yaml/nodes/scalar.rb, line 31 def self.has_default? !default.nil? end
Public Instance Methods
==(other)
click to toggle source
# File lib/cc/yaml/nodes/scalar.rb, line 48 def ==(other) other = other.value if other.is_a? self.class other == value end
cast(visitor, type, value)
click to toggle source
# File lib/cc/yaml/nodes/scalar.rb, line 82 def cast(visitor, type, value) visitor.cast(type, value) rescue ArgumentError => error error "failed to parse %p - %s", type.to_s, error.message.sub("():", ":") end
cast?(type)
click to toggle source
# File lib/cc/yaml/nodes/scalar.rb, line 88 def cast?(type) self.class.cast?(type) or type == default_type end
default_type()
click to toggle source
# File lib/cc/yaml/nodes/scalar.rb, line 53 def default_type self.class.default_type end
each_scalar(type = nil) { |value| ... }
click to toggle source
# File lib/cc/yaml/nodes/scalar.rb, line 106 def each_scalar(type = nil, &block) return enum_for(:each_scalar, type) unless block yield value if type.nil? or type === value end
empty?()
click to toggle source
# File lib/cc/yaml/nodes/scalar.rb, line 38 def empty? value.nil? end
inspect()
click to toggle source
# File lib/cc/yaml/nodes/scalar.rb, line 57 def inspect value.inspect end
prepare()
click to toggle source
Calls superclass method
CC::Yaml::Nodes::Node#prepare
# File lib/cc/yaml/nodes/scalar.rb, line 42 def prepare self.value = self.class.default @multiple = false super end
visit_child(visitor, value)
click to toggle source
# File lib/cc/yaml/nodes/scalar.rb, line 72 def visit_child(visitor, value) if @multiple value = cast(visitor, :str, value) rescue value warning "does not support multiple values, dropping %p", value else @multiple = true visitor.accept(self, value) end end
visit_scalar(visitor, type, value, implicit = true)
click to toggle source
# File lib/cc/yaml/nodes/scalar.rb, line 61 def visit_scalar(visitor, type, value, implicit = true) return self.value = cast(visitor, type, value) if cast? type return self.value = cast(visitor, default_type, value) if implicit error "%p not supported, dropping %p", type.to_s, cast(visitor, :str, value) end
visit_sequence(visitor, value)
click to toggle source
# File lib/cc/yaml/nodes/scalar.rb, line 67 def visit_sequence(visitor, value) @multiple = false visitor.apply_sequence(self, value) end
with_value(value)
click to toggle source
Calls superclass method
CC::Yaml::Nodes::Node#with_value
# File lib/cc/yaml/nodes/scalar.rb, line 96 def with_value(value) return value.dup if value.is_a? self.class value = value.value while value.is_a? Scalar super(value) end
with_value!(value)
click to toggle source
# File lib/cc/yaml/nodes/scalar.rb, line 102 def with_value!(value) self.value = value end