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