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, SeregaSerializerInstanceMethods Classes: Presenter

Class Method Summary collapse

Class Method Details

.after_load_plugin(serializer_class, **_opts) ⇒ void

This method returns an undefined value.

Adds Presenter to current serializer

Parameters:

  • serializer_class (Class<Serega>)

    Current serializer class

  • _opts (Hash)

    Loaded plugins 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.

Loads plugin

Parameters:

  • serializer_class (Class<Serega>)

    Current serializer class

  • _opts (Hash)

    Loaded plugins 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::SeregaSerializer.include(SeregaSerializerInstanceMethods)
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