Class: ActiveSerializer::Serializers::HashSerializer
- Inherits:
-
Object
- Object
- ActiveSerializer::Serializers::HashSerializer
show all
- Defined in:
- lib/active_serializer/serializers/hash_serializer.rb
Instance Attribute Summary collapse
Instance Method Summary
collapse
-
#attribute(name, value = nil, &block) ⇒ Object
-
#attributes(*serialized_data, &block) ⇒ Object
-
#initialize(root_hash, options = {}) ⇒ HashSerializer
constructor
A new instance of HashSerializer.
-
#namespace(name, &block) ⇒ Object
-
#resource(name, source_hash = nil, &block) ⇒ Object
-
#resources(name, source_hashes = nil, &block) ⇒ Object
-
#serialize_collection(name, objects, klass, *args) ⇒ Object
-
#serialize_entity(name, object, klass, *args) ⇒ Object
Constructor Details
#initialize(root_hash, options = {}) ⇒ HashSerializer
Returns a new instance of HashSerializer.
4
5
6
7
8
|
# File 'lib/active_serializer/serializers/hash_serializer.rb', line 4
def initialize(root_hash, options = {})
@root_hash = root_hash
@options = options
@serialized_data = {}
end
|
Instance Attribute Details
#serialized_data ⇒ Object
Returns the value of attribute serialized_data.
2
3
4
|
# File 'lib/active_serializer/serializers/hash_serializer.rb', line 2
def serialized_data
@serialized_data
end
|
Instance Method Details
#attribute(name, value = nil, &block) ⇒ Object
10
11
12
13
14
15
16
17
|
# File 'lib/active_serializer/serializers/hash_serializer.rb', line 10
def attribute(name, value = nil, &block)
if block_given?
value = yield
elsif !value
value = @root_hash[name]
end
set_value(name, value)
end
|
#attributes(*serialized_data, &block) ⇒ Object
32
33
34
35
36
37
38
39
40
41
42
|
# File 'lib/active_serializer/serializers/hash_serializer.rb', line 32
def attributes(*serialized_data, &block)
if !serialized_data.last.is_a?(Symbol)
source_hash = serialized_data.delete_at(-1)
else
source_hash = @root_hash
end
serialized_data.each do |attr_name|
set_value(attr_name, source_hash[attr_name])
end
end
|
#namespace(name, &block) ⇒ Object
44
45
46
47
48
|
# File 'lib/active_serializer/serializers/hash_serializer.rb', line 44
def namespace(name, &block)
serializer = self.class.new(@root_hash, @options)
serializer.instance_exec(@root_hash, &block)
set_value(name, serializer.serialized_data)
end
|
#resource(name, source_hash = nil, &block) ⇒ Object
50
51
52
53
|
# File 'lib/active_serializer/serializers/hash_serializer.rb', line 50
def resource(name, source_hash = nil, &block)
source_hash ||= @root_hash[name]
set_value(name, serialize_resource(source_hash, &block))
end
|
#resources(name, source_hashes = nil, &block) ⇒ Object
55
56
57
58
59
60
61
62
|
# File 'lib/active_serializer/serializers/hash_serializer.rb', line 55
def resources(name, source_hashes = nil, &block)
source_hashes ||= @root_hash[name]
self.serialized_data[name] = (source_hashes || []).inject([]) do |result, source_hash|
data = serialize_resource(source_hash, &block)
data.empty? ? result : (result << data)
end
end
|
#serialize_collection(name, objects, klass, *args) ⇒ Object
19
20
21
22
23
24
25
|
# File 'lib/active_serializer/serializers/hash_serializer.rb', line 19
def serialize_collection(name, objects, klass, *args)
raise ArgumentError, "You should provide serializer klass" if !klass
self.serialized_data[name] = []
objects.each do |object|
self.serialized_data[name] << klass.serialize(object, *args)
end
end
|
#serialize_entity(name, object, klass, *args) ⇒ Object
27
28
29
30
|
# File 'lib/active_serializer/serializers/hash_serializer.rb', line 27
def serialize_entity(name, object, klass, *args)
raise ArgumentError, "You should provide serializer klass" if !klass
self.serialized_data[name] = klass.serialize(object, *args)
end
|