Module: Serega::SeregaPlugins::Presenter

Defined in:
lib/serega/plugins/presenter/presenter.rb

Overview

Plugin Presenter adds possibility to use declare Presenter for your objects inside serializer

class User < Serega
  plugin :presenter

  attribute :name

  class Presenter
    def name
      [first_name, last_name].compact_blank.join(' ')
    end
  end
end

Defined Under Namespace

Modules: ClassMethods, SeregaObjectSerializerInstanceMethods Classes: Presenter

Class Method Summary collapse

Class Method Details

.after_load_plugin(serializer_class, **_opts) ⇒ void

This method returns an undefined value.

Runs callbacks after plugin was attached

Parameters:

  • serializer_class (Class<Serega>)

    Current serializer class

  • _opts (Hash)

    Plugin options



49
50
51
52
53
# File 'lib/serega/plugins/presenter/presenter.rb', line 49

def self.after_load_plugin(serializer_class, **_opts)
  presenter_class = Class.new(Presenter)
  presenter_class.serializer_class = serializer_class
  serializer_class.const_set(:Presenter, presenter_class)
end

.load_plugin(serializer_class, **_opts) ⇒ void

This method returns an undefined value.

Applies plugin code to specific serializer

Parameters:

  • serializer_class (Class<Serega>)

    Current serializer class

  • _opts (Hash)

    Plugin options



36
37
38
39
# File 'lib/serega/plugins/presenter/presenter.rb', line 36

def self.load_plugin(serializer_class, **_opts)
  serializer_class.extend(ClassMethods)
  serializer_class::SeregaObjectSerializer.include(SeregaObjectSerializerInstanceMethods)
end

.plugin_nameSymbol

Returns Plugin name.

Returns:

  • (Symbol)

    Plugin name



24
25
26
# File 'lib/serega/plugins/presenter/presenter.rb', line 24

def self.plugin_name
  :presenter
end