Sha256: ceb8ed12864b1c1fa09648de3c2de49688447d9860c2c7049890e556e537e915

Contents?: true

Size: 1.44 KB

Versions: 26

Compression:

Stored size: 1.44 KB

Contents

# frozen_string_literal: true

module Glossarist
  module Utilities
    module Enum
      module InstanceMethods
        def selected_type
          initialize_selected_type if @selected_type.nil?

          @selected_type
        end

        def select_type(type_name, values)
          values = if values.is_a?(Array)
                     values
                   else
                     [values]
                   end

          values.each do |value|
            select_type_value(type_name, value)
          end
        end

        def deselect_type(type_name, value)
          selected_type[type_name].delete(value)
        end

        private

        def select_type_value(type_name, value)
          if !value
            selected_type[type_name].clear
          elsif self.class.valid_types(type_name).include?(value.to_sym)
            selected_type[type_name].clear unless self.class.type_options(type_name)[:multiple]
            selected_type[type_name] << value.to_sym
          else
            raise(
              Glossarist::InvalidTypeError,
              "`#{value}` is not a valid #{type_name}. Supported #{type_name} are #{self.class.enums[type_name][:registered_values].to_a.join(", ")}"
            )
          end
        end

        def initialize_selected_type
          @selected_type = {}

          self.class.registered_enums.each do |type|
            @selected_type[type] = []
          end
        end
      end
    end
  end
end

Version data entries

26 entries across 26 versions & 2 rubygems

Version Path
glossarist-2.3.0 lib/glossarist/utilities/enum/instance_methods.rb
glossarist-2.2.1 lib/glossarist/utilities/enum/instance_methods.rb
glossarist-2.2.0 lib/glossarist/utilities/enum/instance_methods.rb
glossarist-2.1.0 lib/glossarist/utilities/enum/instance_methods.rb
glossarist-2.0.10 lib/glossarist/utilities/enum/instance_methods.rb
glossarist-2.0.9 lib/glossarist/utilities/enum/instance_methods.rb
glossarist-2.0.8 lib/glossarist/utilities/enum/instance_methods.rb
glossarist-2.0.7 lib/glossarist/utilities/enum/instance_methods.rb
glossarist-2.0.6 lib/glossarist/utilities/enum/instance_methods.rb
glossarist-2.0.5 lib/glossarist/utilities/enum/instance_methods.rb
glossarist-2.0.4 lib/glossarist/utilities/enum/instance_methods.rb
glossarist-2.0.3 lib/glossarist/utilities/enum/instance_methods.rb
glossarist-2.0.2 lib/glossarist/utilities/enum/instance_methods.rb
glossarist-2.0.1 lib/glossarist/utilities/enum/instance_methods.rb
glossarist-2.0.0 lib/glossarist/utilities/enum/instance_methods.rb
glossarist-1.1.0 lib/glossarist/utilities/enum/instance_methods.rb
glossarist-1.0.9 lib/glossarist/utilities/enum/instance_methods.rb
glossarist-1.0.8 lib/glossarist/utilities/enum/instance_methods.rb
glossarist-1.0.7 lib/glossarist/utilities/enum/instance_methods.rb
glossarist-1.0.6 lib/glossarist/utilities/enum/instance_methods.rb