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)

    loaded plugins opts



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)

    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::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