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 metadata to the serialized response via the class-level
meta_attribute method, which accepts:
*path[Array] - nested hash keys -
**options[Hash]:const- a constant metadata value:value- a#callableproducing the metadata value:hide_nil- hide the key if the value is nil (falseby default):hide_empty- hide the key if the value is nil or empty (falseby default)
&block- computes the value for this 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
95 96 97 |
# File 'lib/serega/plugins/metadata/metadata.rb', line 95 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
52 53 54 55 56 |
# File 'lib/serega/plugins/metadata/metadata.rb', line 52 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.
40 41 42 |
# File 'lib/serega/plugins/metadata/metadata.rb', line 40 def self.plugin_name :metadata end |