Sha256: 55c645e0d85495bab03be3bc4c593ed7ac85f9a3ab4d55f725f91d4c261c7702

Contents?: true

Size: 1.08 KB

Versions: 6

Compression:

Stored size: 1.08 KB

Contents

# frozen_string_literal: true

class Serega
  module Plugins
    module ValidateModifiers
      def self.plugin_name
        :validate_modifiers
      end

      def self.load_plugin(serializer_class, **_opts)
        serializer_class.include(InstanceMethods)
        require_relative "./validate"
      end

      def self.after_load_plugin(serializer_class, **opts)
        serializer_class.config[:validate_modifiers] = {auto: opts.fetch(:auto, true)}
      end

      module InstanceMethods
        # Raises error if some modifiers are invalid
        def validate_modifiers
          @modifiers_validated ||= begin
            Validate.call(self.class, opts[:only])
            Validate.call(self.class, opts[:except])
            Validate.call(self.class, opts[:with])
            true
          end
        end

        private

        def initialize(opts)
          super
          validate_modifiers if self.class.config[:validate_modifiers][:auto]
        end
      end

      module InstanceMethods
      end
    end

    register_plugin(ValidateModifiers.plugin_name, ValidateModifiers)
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
serega-0.1.5 lib/serega/plugins/validate_modifiers/validate_modifiers.rb
serega-0.1.4 lib/serega/plugins/validate_modifiers/validate_modifiers.rb
serega-0.1.3 lib/serega/plugins/validate_modifiers/validate_modifiers.rb
serega-0.1.2 lib/serega/plugins/validate_modifiers/validate_modifiers.rb
serega-0.1.1 lib/serega/plugins/validate_modifiers/validate_modifiers.rb
serega-0.1.0 lib/serega/plugins/validate_modifiers/validate_modifiers.rb