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_const.rb,
lib/serega/plugins/metadata/validations/check_opt_value.rb,
lib/serega/plugins/metadata/validations/check_opt_hide_nil.rb,
lib/serega/plugins/metadata/validations/check_opt_hide_empty.rb
Overview
Plugin ‘:metadata`
Depends on: ‘:root` plugin, that must be loaded first
Adds ability to describe metadata that must be added to serialized response
Added class-level method ‘:meta_attribute`, to define metadata, it accepts:
-
‘*path` [Array of Symbols] - nested hash keys.
-
‘**options` [Hash]
-
‘:const` - describes metadata value (if it is constant)
-
‘:value` - describes metadata value as any `#callable` instance
-
‘:hide_nil` - does not show metadata key if value is nil, `false` by default
-
‘:hide_empty`, does not show metadata key if value is nil or empty, `false` by default
-
-
‘&block` [Proc] - describes value for current meta attribute
Defined Under Namespace
Modules: ClassMethods, ConfigInstanceMethods, InstanceMethods Classes: MetaAttribute, MetadataConfig
Class Method Summary collapse
-
.after_load_plugin(serializer_class, **_opts) ⇒ void
Adds config options and runs other callbacks after plugin was loaded.
-
.before_load_plugin(serializer_class, **_opts) ⇒ void
Checks requirements and loads additional plugins.
-
.load_plugin(serializer_class, **_opts) ⇒ void
Applies plugin code to specific serializer.
-
.plugin_name ⇒ Symbol
Plugin name.
Class Method Details
.after_load_plugin(serializer_class, **_opts) ⇒ void
This method returns an undefined value.
Adds config options and runs other callbacks after plugin was loaded
94 95 96 |
# File 'lib/serega/plugins/metadata/metadata.rb', line 94 def self.after_load_plugin(serializer_class, **_opts) serializer_class.config.opts[:metadata] = {attribute_keys: %i[const hide_nil hide_empty value]} end |
.before_load_plugin(serializer_class, **_opts) ⇒ void
This method returns an undefined value.
Checks requirements and loads additional plugins
53 54 55 56 57 |
# File 'lib/serega/plugins/metadata/metadata.rb', line 53 def self.before_load_plugin(serializer_class, **_opts) unless serializer_class.plugin_used?(:root) raise SeregaError, "Plugin #{plugin_name.inspect} must be loaded after the :root plugin. Please load the :root plugin first" end end |
.load_plugin(serializer_class, **_opts) ⇒ void
This method returns an undefined value.
Applies plugin code to specific serializer
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/serega/plugins/metadata/metadata.rb', line 67 def self.load_plugin(serializer_class, **_opts) serializer_class.extend(ClassMethods) serializer_class.include(InstanceMethods) serializer_class::SeregaConfig.include(ConfigInstanceMethods) require_relative "meta_attribute" require_relative "validations/check_block" require_relative "validations/check_opt_const" require_relative "validations/check_opt_hide_nil" require_relative "validations/check_opt_hide_empty" require_relative "validations/check_opt_value" require_relative "validations/check_opts" require_relative "validations/check_path" = Class.new(MetaAttribute) .serializer_class = serializer_class serializer_class.const_set(:MetaAttribute, ) end |
.plugin_name ⇒ Symbol
Returns Plugin name.
42 43 44 |
# File 'lib/serega/plugins/metadata/metadata.rb', line 42 def self.plugin_name :metadata end |