Sha256: 6fce642c4a65e8f41b4c7fcacc27ab546c534b971453001f20054f536d2f66c1

Contents?: true

Size: 1.17 KB

Versions: 21

Compression:

Stored size: 1.17 KB

Contents

# encoding: utf-8
# frozen_string_literal: true

module BetterRecord
  module ThreeState
    ENUM = {
      Y: 'Y',
      y: 'Y',
      Yes: 'Y',
      yes: 'Y',
      T: 'Y',
      t: 'Y',
      True: 'Y',
      true: 'Y',
      true => 'Y',
      N: 'N',
      n: 'N',
      No: 'N',
      no: 'N',
      F: 'N',
      f: 'N',
      False: 'N',
      false: 'N',
      false => 'N',
      U: 'U',
      u: 'U',
      Unknown: 'U',
      unknown: 'U',
    }.freeze

    TITLECASE = {
      'Y' => 'Yes',
      'N' => 'No',
      'U' => 'Unknown',
    }.freeze

    def self.titleize(category)
      TITLECASE[convert_to_three_state(category) || 'U']
    end

    def self.convert_to_three_state(value)
      case value.to_s.downcase
      when /^(?:y|t(rue)?$)/
        'Y'
      when /^(?:n|f(alse)?$)/
        'N'
      else
        'U'
      end
    end

    module TableDefinition
      def three_state(*args, **opts)
        args.each do |name|
          column name, :three_state, **opts
        end
      end
    end

    class Type < BetterRecord::CustomType
      def self.normalize_type_value(value)
        BetterRecord::ThreeState.convert_to_three_state(value)
      end
    end
  end
end

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
better_record-0.25.2 lib/better_record/three_state.rb
better_record-0.25.1 lib/better_record/three_state.rb
better_record-0.25.0 lib/better_record/three_state.rb
better_record-0.24.4 lib/better_record/three_state.rb
better_record-0.24.3 lib/better_record/three_state.rb
better_record-0.23.7 lib/better_record/three_state.rb
better_record-0.23.6 lib/better_record/three_state.rb
better_record-0.23.5 lib/better_record/three_state.rb
better_record-0.23.4 lib/better_record/three_state.rb
better_record-0.23.3 lib/better_record/three_state.rb
better_record-0.22.9 lib/better_record/three_state.rb
better_record-0.22.8 lib/better_record/three_state.rb
better_record-0.22.7 lib/better_record/three_state.rb
better_record-0.22.6 lib/better_record/three_state.rb
better_record-0.22.5 lib/better_record/three_state.rb
better_record-0.22.4 lib/better_record/three_state.rb
better_record-0.22.3 lib/better_record/three_state.rb
better_record-0.21.3 lib/better_record/three_state.rb
better_record-0.22.2 lib/better_record/three_state.rb
better_record-0.22.0 lib/better_record/three_state.rb