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