Sha256: 6f5a201e8c6ce51ed844dc84709fe75c250c9a78b6fa8007944a982d8fc2d1f2
Contents?: true
Size: 1.66 KB
Versions: 1
Compression:
Stored size: 1.66 KB
Contents
# frozen_string_literal: true require "micro/attributes/with" module Micro module Attributes module Features INVALID_FEATURES = 'Invalid feature name! Available options: :initialize, :strict_initialize, :diff, :activemodel_validations'.freeze OPTIONS = { # Features 'diff' => With::Diff, 'initialize' => With::Initialize, 'strict_initialize' => With::StrictInitialize, 'activemodel_validations' => With::ActiveModelValidations, # Combinations 'diff:initialize' => With::DiffAndInitialize, 'diff:strict_initialize' => With::DiffAndStrictInitialize, 'activemodel_validations:diff' => With::ActiveModelValidationsAndDiff, 'activemodel_validations:initialize' => With::ActiveModelValidationsAndInitialize, 'activemodel_validations:strict_initialize' => With::ActiveModelValidationsAndStrictInitialize, 'activemodel_validations:diff:initialize' => With::ActiveModelValidationsAndDiffAndInitialize, 'activemodel_validations:diff:strict_initialize' => With::ActiveModelValidationsAndDiffAndStrictInitialize }.freeze private_constant :OPTIONS def self.all With::ActiveModelValidationsAndDiffAndInitialize end def self.with(names) option = OPTIONS[names.map { |name| name.to_s.downcase }.sort.join(':')] return option if option raise ArgumentError, INVALID_FEATURES end def self.options(init, diff, activemodel_validations) [init].tap do |options| options << :diff if diff options << :activemodel_validations if activemodel_validations end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
u-attributes-1.0.0 | lib/micro/attributes/features.rb |