# frozen_string_literal: true require 'micro/attributes/features/diff' require 'micro/attributes/features/initialize' require 'micro/attributes/features/initialize/strict' require 'micro/attributes/features/activemodel_validations' module Micro module Attributes module With # # Features # module Diff def self.included(base) base.send(:include, ::Micro::Attributes) base.send(:include, ::Micro::Attributes::Features::Diff) end end module Initialize def self.included(base) base.send(:include, ::Micro::Attributes) base.send(:include, ::Micro::Attributes::Features::Initialize) end end module ActiveModelValidations def self.included(base) base.send(:include, ::Micro::Attributes) base.send(:include, ::Micro::Attributes::Features::ActiveModelValidations) end end module StrictInitialize def self.included(base) base.send(:include, Initialize) base.send(:include, ::Micro::Attributes::Features::Initialize::Strict) end end # # Combinations # module DiffAndInitialize def self.included(base) base.send(:include, ::Micro::Attributes) base.send(:include, ::Micro::Attributes::Features::Initialize) base.send(:include, ::Micro::Attributes::Features::Diff) end end module DiffAndStrictInitialize def self.included(base) base.send(:include, DiffAndInitialize) base.send(:include, ::Micro::Attributes::Features::Initialize::Strict) end end module ActiveModelValidationsAndDiff def self.included(base) base.send(:include, ::Micro::Attributes) base.send(:include, ::Micro::Attributes::Features::ActiveModelValidations) base.send(:include, ::Micro::Attributes::Features::Diff) end end module ActiveModelValidationsAndInitialize def self.included(base) base.send(:include, ::Micro::Attributes) base.send(:include, ::Micro::Attributes::Features::Initialize) base.send(:include, ::Micro::Attributes::Features::ActiveModelValidations) end end module ActiveModelValidationsAndStrictInitialize def self.included(base) base.send(:include, ActiveModelValidationsAndInitialize) base.send(:include, ::Micro::Attributes::Features::Initialize::Strict) end end module ActiveModelValidationsAndDiffAndInitialize def self.included(base) base.send(:include, ::Micro::Attributes) base.send(:include, ::Micro::Attributes::Features::Initialize) base.send(:include, ::Micro::Attributes::Features::ActiveModelValidations) base.send(:include, ::Micro::Attributes::Features::Diff) end end module ActiveModelValidationsAndDiffAndStrictInitialize def self.included(base) base.send(:include, ActiveModelValidationsAndDiffAndInitialize) base.send(:include, ::Micro::Attributes::Features::Initialize::Strict) end end end end end