class Troles::Common::Marshaller::Bitmask
Attributes
role_subject[R]
valid_roles[R]
Public Class Methods
new(role_subject)
click to toggle source
Calls superclass method
# File lib/troles/common/marshaller/bitmask.rb, line 8 def initialize role_subject super end
Public Instance Methods
read()
click to toggle source
# File lib/troles/common/marshaller/bitmask.rb, line 12 def read valid_roles.reject do |r| num = as_number(ds_field_value) ((num || 0) & calc_index(r)).zero? end end
write(*roles)
click to toggle source
# File lib/troles/common/marshaller/bitmask.rb, line 19 def write *roles roles = roles.uniq.compact return as_number(false) if roles.empty? roles.to_symbols.map { |r| calc_index(r) }.inject { |sum, bitvalue| sum + bitvalue } end
Protected Instance Methods
as_number(value)
click to toggle source
# File lib/troles/common/marshaller/bitmask.rb, line 27 def as_number value case value when TrueClass, FalseClass value ? 2 : 1 when Fixnum value else raise ArgumentError, "Cant be converted to a bit index, #{value}" end end
calc_index(r)
click to toggle source
# File lib/troles/common/marshaller/bitmask.rb, line 38 def calc_index(r) 2**valid_roles.index(r) end