Class: Handle::Field::HSAdmin
- Inherits:
-
Base
- Object
- Base
- Handle::Field::HSAdmin
show all
- Defined in:
- lib/handle/field/admin.rb
Instance Attribute Summary collapse
Attributes inherited from Base
#index, #perms, #ttl
Instance Method Summary
collapse
Methods inherited from Base
#==, default_index, from_data, from_hash, from_string, #to_json, value_type
Constructor Details
#initialize(handle = nil) ⇒ HSAdmin
Returns a new instance of HSAdmin.
10
11
12
13
14
15
16
17
18
19
20
|
# File 'lib/handle/field/admin.rb', line 10
def initialize(handle=nil)
super()
@admin_handle = handle
@admin_index = 300
@admin_perms = Handle::Permissions.new(
:add_handle, :delete_handle, :add_na, :delete_na,
:modify_values, :remove_values, :add_values, :read_values,
:modify_admin, :remove_admin, :add_admin, :list_handles,
)
@admin_perms.bitmask = 0b111111111111
end
|
Instance Attribute Details
#admin_handle ⇒ Object
Returns the value of attribute admin_handle.
7
8
9
|
# File 'lib/handle/field/admin.rb', line 7
def admin_handle
@admin_handle
end
|
#admin_perms ⇒ Object
Returns the value of attribute admin_perms.
8
9
10
|
# File 'lib/handle/field/admin.rb', line 8
def admin_perms
@admin_perms
end
|
Instance Method Details
#admin_index=(value) ⇒ Object
62
63
64
|
# File 'lib/handle/field/admin.rb', line 62
def admin_index=(value)
@admin_index = value.to_i
end
|
#merge!(hash) ⇒ Object
66
67
68
69
70
71
72
73
74
75
76
|
# File 'lib/handle/field/admin.rb', line 66
def merge!(hash)
hash.each_pair do |key,value|
k = key.to_sym
self.perms.bitmask = value if k == :perms
self.admin_perms.bitmask = value if k == :admin_perms
if [:admin_handle, :admin_index, :index, :ttl, :value].include? k
self.send(:"#{k.to_s}=", value)
end
end
self
end
|
#to_h ⇒ Object
48
49
50
51
52
53
54
55
56
|
# File 'lib/handle/field/admin.rb', line 48
def to_h
result = super.merge({
admin_handle: self.admin_handle,
admin_index: self.admin_index,
admin_perms: self.admin_perms.bitmask
})
result.delete(:value)
result
end
|
#to_s ⇒ Object
58
59
60
|
# File 'lib/handle/field/admin.rb', line 58
def to_s
" index=#{self.index} type=#{self.class.value_type} ttl=#{self.ttl} #{self.perms} #{value_str.inspect}"
end
|
#value ⇒ Object
22
23
24
25
|
# File 'lib/handle/field/admin.rb', line 22
def value
values = [self.admin_perms.bitmask, 0, 13, self.admin_handle, 0, self.admin_index]
values.pack('nnnZ*cn')
end
|
#value=(bytes) ⇒ Object
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
# File 'lib/handle/field/admin.rb', line 32
def value=(bytes)
if bytes =~ /^([0-9]+):([01]+):(.+)$/
self.admin_index = $1.to_i
self.admin_perms.bitmask = $2.to_i(2)
self.admin_handle = $3
else
if bytes =~ /^[0-9A-Fa-f]+$/
bytes = bytes.scan(/../).map(&:hex).pack('C*')
end
values = bytes.unpack('nnnZ*cn')
self.admin_perms.bitmask = values[0]
self.admin_handle = values[3]
self.admin_index = values[5] unless values[5].nil? or values[5] == 0
end
end
|
#value_str ⇒ Object
27
28
29
30
|
# File 'lib/handle/field/admin.rb', line 27
def value_str
[self.admin_index,self.admin_perms.to_s,self.admin_handle].join(':')
end
|