Module: Serega::SeregaPlugins::Metadata

Defined in:
lib/serega/plugins/metadata/metadata.rb,
lib/serega/plugins/metadata/meta_attribute.rb,
lib/serega/plugins/metadata/validations/check_opts.rb,
lib/serega/plugins/metadata/validations/check_path.rb,
lib/serega/plugins/metadata/validations/check_block.rb,
lib/serega/plugins/metadata/validations/check_opt_hide_nil.rb,
lib/serega/plugins/metadata/validations/check_opt_hide_empty.rb

Defined Under Namespace

Modules: ClassMethods, ConfigInstanceMethods, SeregaSerializerInstanceMethods Classes: MetaAttribute, MetadataConfig

Class Method Summary collapse

Class Method Details

.after_load_plugin(serializer_class, **_opts) ⇒ Object



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

def self.after_load_plugin(serializer_class, **_opts)
  serializer_class.config.opts[:metadata] = {attribute_keys: %i[path hide_nil hide_empty]}
end

.before_load_plugin(serializer_class, **opts) ⇒ Object



10
11
12
13
14
15
16
17
18
# File 'lib/serega/plugins/metadata/metadata.rb', line 10

def self.before_load_plugin(serializer_class, **opts)
  if serializer_class.plugin_used?(:root)
    root = serializer_class.config.root
    root.one = opts[:root_one] if opts.key?(:root_one)
    root.many = opts[:root_many] if opts.key?(:root_many)
  else
    serializer_class.plugin(:root, **opts)
  end
end

.load_plugin(serializer_class, **_opts) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/serega/plugins/metadata/metadata.rb', line 20

def self.load_plugin(serializer_class, **_opts)
  serializer_class.extend(ClassMethods)
  serializer_class::SeregaConfig.include(ConfigInstanceMethods)
  serializer_class::SeregaSerializer.include(SeregaSerializerInstanceMethods)

  require_relative "./meta_attribute"
  require_relative "./validations/check_block"
  require_relative "./validations/check_opt_hide_nil"
  require_relative "./validations/check_opt_hide_empty"
  require_relative "./validations/check_opts"
  require_relative "./validations/check_path"

  meta_attribute_class = Class.new(MetaAttribute)
  meta_attribute_class.serializer_class = serializer_class
  serializer_class.const_set(:MetaAttribute, meta_attribute_class)
end

.plugin_nameObject



6
7
8
# File 'lib/serega/plugins/metadata/metadata.rb', line 6

def self.plugin_name
  :metadata
end