class CC::Yaml::Serializer::Generic

Attributes

options[R]

Public Class Methods

new(options = nil) click to toggle source
# File lib/cc/yaml/serializer/generic.rb, line 12
def initialize(options = nil)
  @options = options || {}
end
serialize(node, options = nil) click to toggle source
# File lib/cc/yaml/serializer/generic.rb, line 8
def self.serialize(node, options = nil)
  new(options).serialize(node)
end

Public Instance Methods

serialize(node) click to toggle source
# File lib/cc/yaml/serializer/generic.rb, line 20
def serialize(node)
  case node
  when Nodes::Root     then serialize_root(node)
  when Nodes::Scalar   then serialize_scalar(node)
  when Nodes::Mapping  then serialize_mapping(node)
  when Nodes::Sequence then serialize_sequence(node)
  else raise NotSupportedError, "do not know how to serialize %p" % node.class
  end
end
serialize_binary(value) click to toggle source
# File lib/cc/yaml/serializer/generic.rb, line 87
def serialize_binary(value)
  serialize_str(value)
end
serialize_bool(value) click to toggle source
# File lib/cc/yaml/serializer/generic.rb, line 45
def serialize_bool(value)
  serialize_value(value)
end
serialize_decrypted(value) click to toggle source
# File lib/cc/yaml/serializer/generic.rb, line 75
def serialize_decrypted(value)
  serialize_value(value)
end
serialize_encrypted(value) click to toggle source
# File lib/cc/yaml/serializer/generic.rb, line 71
def serialize_encrypted(value)
  serialize_value(value)
end
serialize_float(value) click to toggle source
# File lib/cc/yaml/serializer/generic.rb, line 49
def serialize_float(value)
  serialize_value(value)
end
serialize_key(value) click to toggle source
# File lib/cc/yaml/serializer/generic.rb, line 111
def serialize_key(value)
  symbol_keys? ? value.to_sym : value.to_s
end
serialize_mapping(node) click to toggle source
# File lib/cc/yaml/serializer/generic.rb, line 103
def serialize_mapping(node)
  node.map { |key, value| [serialize_key(key), serialize(value)] }
end
serialize_regexp(value) click to toggle source
# File lib/cc/yaml/serializer/generic.rb, line 79
def serialize_regexp(value)
  serialize_value(value)
end
serialize_root(node) click to toggle source
# File lib/cc/yaml/serializer/generic.rb, line 99
def serialize_root(node)
  serialize_mapping(node)
end
serialize_scalar(node) click to toggle source
# File lib/cc/yaml/serializer/generic.rb, line 30
def serialize_scalar(node)
  case value = node.value
  when true, false  then serialize_bool(value)
  when Float        then serialize_float(value)
  when Integer      then serialize_integer(value)
  when Time         then serialize_time(value)
  when SecureString then serialize_secure(value)
  when Regexp       then serialize_regexp(value)
  when String
    value.encoding == Encoding::BINARY ? serialize_binary(value) : serialize_str(value)
  else
    serialize_value(node)
  end
end
serialize_secure(value) click to toggle source
# File lib/cc/yaml/serializer/generic.rb, line 57
def serialize_secure(value)
  case options[:secure]
  when :decrypted
    raise ArgumentError, "secure option is set decrypted, but a secure value is not decrypted" unless value.decrypted?
    serialize_decrypted(value)
  when :encrypted
    raise ArgumentError, "secure option is set encrypted, but a secure value is not encrypted" unless value.encrypted?
    serialize_encrypted(value)
  else
    raise ArgumentError, "unexpected value for secure option: %p" % options[:secure] if options[:secure]
    value.encrypted? ? serialize_encrypted(value) : serialize_decrypted(value)
  end
end
serialize_sequence(node) click to toggle source
# File lib/cc/yaml/serializer/generic.rb, line 107
def serialize_sequence(node)
  node.map { |value| serialize(value) }
end
serialize_str(value) click to toggle source
# File lib/cc/yaml/serializer/generic.rb, line 83
def serialize_str(value)
  serialize_value(value)
end
serialize_time(value) click to toggle source
# File lib/cc/yaml/serializer/generic.rb, line 53
def serialize_time(value)
  serialize_value(value)
end
serialize_value(node) click to toggle source
# File lib/cc/yaml/serializer/generic.rb, line 95
def serialize_value(node)
  raise NotSupportedError, "cannot serialize %p with %p" % [node.class, self.class]
end
symbol_keys?() click to toggle source
# File lib/cc/yaml/serializer/generic.rb, line 16
def symbol_keys?
  !!options[:symbol_keys]
end