Class: Travis::Yaml::Serializer::Generic

Inherits:
Object
  • Object
show all
Defined in:
lib/travis/yaml/serializer/generic.rb

Direct Known Subclasses

Json, Ruby

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = nil) ⇒ Generic

Returns a new instance of Generic.



10
11
12
# File 'lib/travis/yaml/serializer/generic.rb', line 10

def initialize(options = nil)
  @options = options || {}
end

Instance Attribute Details

#optionsObject (readonly)

Returns the value of attribute options.



4
5
6
# File 'lib/travis/yaml/serializer/generic.rb', line 4

def options
  @options
end

Class Method Details

.serialize(node, options = nil) ⇒ Object



6
7
8
# File 'lib/travis/yaml/serializer/generic.rb', line 6

def self.serialize(node, options = nil)
  new(options).serialize(node)
end

Instance Method Details

#serialize(node) ⇒ Object



18
19
20
21
22
23
24
25
26
# File 'lib/travis/yaml/serializer/generic.rb', line 18

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) ⇒ Object



85
86
87
# File 'lib/travis/yaml/serializer/generic.rb', line 85

def serialize_binary(value)
  serialize_str(value)
end

#serialize_bool(value) ⇒ Object



43
44
45
# File 'lib/travis/yaml/serializer/generic.rb', line 43

def serialize_bool(value)
  serialize_value(value)
end

#serialize_decrypted(value) ⇒ Object



73
74
75
# File 'lib/travis/yaml/serializer/generic.rb', line 73

def serialize_decrypted(value)
  serialize_value(value)
end

#serialize_encrypted(value) ⇒ Object



69
70
71
# File 'lib/travis/yaml/serializer/generic.rb', line 69

def serialize_encrypted(value)
  serialize_value(value)
end

#serialize_float(value) ⇒ Object



47
48
49
# File 'lib/travis/yaml/serializer/generic.rb', line 47

def serialize_float(value)
  serialize_value(value)
end

#serialize_key(value) ⇒ Object



109
110
111
# File 'lib/travis/yaml/serializer/generic.rb', line 109

def serialize_key(value)
  symbol_keys? ? value.to_sym : value.to_s
end

#serialize_mapping(node) ⇒ Object



101
102
103
# File 'lib/travis/yaml/serializer/generic.rb', line 101

def serialize_mapping(node)
  node.map { |key, value| [serialize_key(key), serialize(value)] }
end

#serialize_regexp(value) ⇒ Object



77
78
79
# File 'lib/travis/yaml/serializer/generic.rb', line 77

def serialize_regexp(value)
  serialize_value(value)
end

#serialize_root(node) ⇒ Object



97
98
99
# File 'lib/travis/yaml/serializer/generic.rb', line 97

def serialize_root(node)
  serialize_mapping(node)
end

#serialize_scalar(node) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/travis/yaml/serializer/generic.rb', line 28

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) ⇒ Object



55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/travis/yaml/serializer/generic.rb', line 55

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) ⇒ Object



105
106
107
# File 'lib/travis/yaml/serializer/generic.rb', line 105

def serialize_sequence(node)
  node.map { |value| serialize(value) }
end

#serialize_str(value) ⇒ Object



81
82
83
# File 'lib/travis/yaml/serializer/generic.rb', line 81

def serialize_str(value)
  serialize_value(value)
end

#serialize_time(value) ⇒ Object



51
52
53
# File 'lib/travis/yaml/serializer/generic.rb', line 51

def serialize_time(value)
  serialize_value(value)
end

#serialize_value(value) ⇒ Object

Raises:

  • (NotSupportedError)


93
94
95
# File 'lib/travis/yaml/serializer/generic.rb', line 93

def serialize_value(value)
  raise NotSupportedError, 'cannot serialize %p with %p' % [node.class, self.class]
end

#symbol_keys?Boolean

Returns:

  • (Boolean)


14
15
16
# File 'lib/travis/yaml/serializer/generic.rb', line 14

def symbol_keys?
  !!options[:symbol_keys]
end