Class: FlagShihTzu::TriStateEncoder
- Inherits:
-
Object
- Object
- FlagShihTzu::TriStateEncoder
- Defined in:
- lib/flag_shih_tzu.rb
Class Method Summary collapse
- .bit_width ⇒ Object
- .changed?(from_bits, to_bits, flag_mask) ⇒ Boolean
- .disabled_sql_value(_flag_mask) ⇒ Object
- .disabled_value(bits, flag_mask) ⇒ Object
- .enabled_sql_value(flag_mask) ⇒ Object
- .mask(flag_key) ⇒ Object
- .matches?(bits, flag_mask, enabled) ⇒ Boolean
- .nil_sql_value(flag_mask) ⇒ Object
- .read(bits, flag_mask) ⇒ Object
- .sql_operand_for(flag_mask, enabled) ⇒ Object
- .sql_operator_for(_enabled) ⇒ Object
- .sql_value_for(flag_mask, enabled) ⇒ Object
- .write(bits, flag_mask, value) ⇒ Object
Class Method Details
.bit_width ⇒ Object
136 137 138 |
# File 'lib/flag_shih_tzu.rb', line 136 def bit_width 2 end |
.changed?(from_bits, to_bits, flag_mask) ⇒ Boolean
161 162 163 |
# File 'lib/flag_shih_tzu.rb', line 161 def changed?(from_bits, to_bits, flag_mask) (from_bits & flag_mask) != (to_bits & flag_mask) end |
.disabled_sql_value(_flag_mask) ⇒ Object
169 170 171 |
# File 'lib/flag_shih_tzu.rb', line 169 def disabled_sql_value(_flag_mask) 0 end |
.disabled_value(bits, flag_mask) ⇒ Object
156 157 158 159 |
# File 'lib/flag_shih_tzu.rb', line 156 def disabled_value(bits, flag_mask) value = read(bits, flag_mask) value.nil? ? nil : !value end |
.enabled_sql_value(flag_mask) ⇒ Object
165 166 167 |
# File 'lib/flag_shih_tzu.rb', line 165 def enabled_sql_value(flag_mask) low_bit(flag_mask) end |
.mask(flag_key) ⇒ Object
140 141 142 |
# File 'lib/flag_shih_tzu.rb', line 140 def mask(flag_key) ((1 << bit_width) - 1) << ((flag_key - 1) * bit_width) end |
.matches?(bits, flag_mask, enabled) ⇒ Boolean
191 192 193 |
# File 'lib/flag_shih_tzu.rb', line 191 def matches?(bits, flag_mask, enabled) (bits & flag_mask) == sql_value_for(flag_mask, enabled) end |
.nil_sql_value(flag_mask) ⇒ Object
173 174 175 |
# File 'lib/flag_shih_tzu.rb', line 173 def nil_sql_value(flag_mask) flag_mask end |
.read(bits, flag_mask) ⇒ Object
144 145 146 147 148 149 |
# File 'lib/flag_shih_tzu.rb', line 144 def read(bits, flag_mask) raw_value = bits & flag_mask return if raw_value == flag_mask raw_value != 0 end |
.sql_operand_for(flag_mask, enabled) ⇒ Object
187 188 189 |
# File 'lib/flag_shih_tzu.rb', line 187 def sql_operand_for(flag_mask, enabled) "#{flag_mask} | #{sql_value_for(flag_mask, enabled)}" end |
.sql_operator_for(_enabled) ⇒ Object
183 184 185 |
# File 'lib/flag_shih_tzu.rb', line 183 def sql_operator_for(_enabled) "& ~" end |
.sql_value_for(flag_mask, enabled) ⇒ Object
177 178 179 180 181 |
# File 'lib/flag_shih_tzu.rb', line 177 def sql_value_for(flag_mask, enabled) return nil_sql_value(flag_mask) if enabled.nil? enabled ? enabled_sql_value(flag_mask) : disabled_sql_value(flag_mask) end |
.write(bits, flag_mask, value) ⇒ Object
151 152 153 154 |
# File 'lib/flag_shih_tzu.rb', line 151 def write(bits, flag_mask, value) cleared_bits = bits & ~flag_mask cleared_bits | encoded_value(flag_mask, value) end |