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
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
] - nested hash keys beginning from the root object. - **options [Hash] - defaults are
hide_nil: false, hide_empty: false
- &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
85 86 87 |
# File 'lib/serega/plugins/metadata/metadata.rb', line 85 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) ⇒ void
This method returns an undefined value.
Checks requirements and loads additional plugins
46 47 48 49 50 |
# File 'lib/serega/plugins/metadata/metadata.rb', line 46 def self.before_load_plugin(serializer_class, **_opts) unless serializer_class.plugin_used?(:root) raise SeregaError, "Please load :root plugin first so we can wrap serialization response into top-level hash to add metadata there" end end |
.load_plugin(serializer_class, **_opts) ⇒ void
This method returns an undefined value.
Applies plugin code to specific serializer
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/serega/plugins/metadata/metadata.rb', line 60 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_hide_nil" require_relative "./validations/check_opt_hide_empty" 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.
35 36 37 |
# File 'lib/serega/plugins/metadata/metadata.rb', line 35 def self.plugin_name :metadata end |