Class: Decidim::Exporters::Serializer
- Inherits:
-
Object
- Object
- Decidim::Exporters::Serializer
- Defined in:
- app/serializers/decidim/exporters/serializer.rb
Overview
This is an abstract class with a very naive default implementation for the exporters to use. It can also serve as a superclass of your own implementation.
It is used to be run against each element of an exportable collection in order to extract relevant fields. Every export should specify their own serializer or this default will be used.
Direct Known Subclasses
DataPortabilitySerializers::DataPortabilityConversationSerializer, DataPortabilitySerializers::DataPortabilityFollowSerializer, DataPortabilitySerializers::DataPortabilityIdentitySerializer, DataPortabilitySerializers::DataPortabilityNotificationSerializer, DataPortabilitySerializers::DataPortabilityParticipatorySpacePrivateUserSerializer, DataPortabilitySerializers::DataPortabilityReportSerializer, DataPortabilitySerializers::DataPortabilityUserGroupSerializer, DataPortabilitySerializers::DataPortabilityUserSerializer, ParticipatorySpaceComponentsSerializer
Instance Attribute Summary collapse
-
#resource ⇒ Object
readonly
Returns the value of attribute resource.
Instance Method Summary collapse
-
#event_name ⇒ Object
Public: Converts serializers class name to event name.
-
#finalize(serialized_data) ⇒ Object
Public: Publishes notification (event) so that subscribers can modify serialized data.
-
#initialize(resource) ⇒ Serializer
constructor
Initializes the serializer with a resource.
-
#run ⇒ Object
Publishes a serialize event and returns serialized hash by default (can be customized at the event).
-
#serialize ⇒ Object
Public: Returns a serialized view of the provided resource.
Constructor Details
#initialize(resource) ⇒ Serializer
Initializes the serializer with a resource.
resource - The Object to serialize.
18 19 20 |
# File 'app/serializers/decidim/exporters/serializer.rb', line 18 def initialize(resource) @resource = resource end |
Instance Attribute Details
#resource ⇒ Object (readonly)
Returns the value of attribute resource.
13 14 15 |
# File 'app/serializers/decidim/exporters/serializer.rb', line 13 def resource @resource end |
Instance Method Details
#event_name ⇒ Object
Public: Converts serializers class name to event name.
For example: Decidim::Budgets::ProjectSerializer -> “decidim.serialize.budgets.project_serializer”
Returns String
54 55 56 |
# File 'app/serializers/decidim/exporters/serializer.rb', line 54 def event_name ActiveSupport::Inflector.underscore(self.class.to_s).sub("/", ".serialize.").gsub("/", ".") end |
#finalize(serialized_data) ⇒ Object
Public: Publishes notification (event) so that subscribers can modify serialized data.
serialized_data - Hash with the serialized data for this resource.
Returns a nested Hash with the fields by default.
39 40 41 42 43 44 45 46 47 |
# File 'app/serializers/decidim/exporters/serializer.rb', line 39 def finalize(serialized_data) event_data = { resource: resource, serialized_data: serialized_data } ActiveSupport::Notifications.publish(event_name, event_data) event_data[:serialized_data] end |
#run ⇒ Object
Publishes a serialize event and returns serialized hash by default (can be customized at the event).
23 24 25 |
# File 'app/serializers/decidim/exporters/serializer.rb', line 23 def run finalize(serialize) end |
#serialize ⇒ Object
Public: Returns a serialized view of the provided resource.
Returns a nested Hash with the fields.
30 31 32 |
# File 'app/serializers/decidim/exporters/serializer.rb', line 30 def serialize @resource.to_h end |