module StringEnums::ClassMethods

Public Instance Methods

string_enum(pairs) click to toggle source

rubocop:disable Metrics/MethodLength

# File lib/string_enums.rb, line 31
    def string_enum(pairs)
      pairs.each do |name, values|
        values.each do |value|
          snake_case_value = value.tr(' ', '_')

          class_eval <<-RUBY
            const_set("#{name.upcase}_#{snake_case_value.upcase}", '#{value}')

            def #{snake_case_value}?
              string_enum_check_value?(:#{name}, '#{value}')
            end

            def mark_#{snake_case_value}
              string_enum_write_value(:#{name}, '#{value}')
            end
          RUBY
        end
      end
    end