Module: UnixLikePermissions

Extended by:
UnixLikePermissions
Included in:
UnixLikePermissions
Defined in:
lib/unix_like_permissions.rb,
lib/unix_like_permissions/version.rb,
lib/unix_like_permissions/permission_series.rb,
lib/unix_like_permissions/types/permission_series.rb

Defined Under Namespace

Modules: Types Classes: PermissionSeries

Constant Summary collapse

VERSION =
"0.4.14"

Instance Method Summary collapse

Instance Method Details

#create(permissions) ⇒ Object



11
12
13
# File 'lib/unix_like_permissions.rb', line 11

def create(permissions)
  PermissionSeries.new(permissions)
end

#load_permissions_map!(permissions) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/unix_like_permissions.rb', line 15

def load_permissions_map!(permissions)
  PermissionSeries.send(:remove_const, :PERMISSIONS_MAP_WAS) if defined?(PermissionSeries::PERMISSIONS_MAP_WAS)
  PermissionSeries.const_set(:PERMISSIONS_MAP_WAS, PermissionSeries::PERMISSIONS_MAP)

  PermissionSeries.send(:remove_const, :PERMISSIONS_MAP) if defined?(PermissionSeries::PERMISSIONS_MAP)
  PermissionSeries.const_set(:PERMISSIONS_MAP, permissions_map(permissions))

  PermissionSeries::PERMISSIONS_MAP.freeze
  PermissionSeries::PERMISSIONS_MAP_WAS.freeze

  PermissionSeries.define_getters!
  puts "Permission map loaded: #{PermissionSeries::PERMISSIONS_MAP}"
end

#permissions_map(permissions) ⇒ Object



29
30
31
32
33
34
35
# File 'lib/unix_like_permissions.rb', line 29

def permissions_map(permissions)
  raise ArgumentError("Permission map must be array of symbols!") unless permissions.is_a?(Array) && permissions.all? { |permission| permission.is_a?(Symbol) }

  permissions.map.with_index do |permission, index|
    [permission, 2**index]
  end.to_h
end