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.13"

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
# File 'lib/unix_like_permissions.rb', line 15

def load_permissions_map!(permissions)
  PermissionSeries.const_set(:PERMISSIONS_MAP_WAS, PermissionSeries::PERMISSIONS_MAP)
  PermissionSeries.const_set(:PERMISSIONS_MAP, permissions_map(permissions))
  PermissionSeries::PERMISSIONS_MAP.freeze

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

#permissions_map(permissions) ⇒ Object



24
25
26
27
28
29
30
# File 'lib/unix_like_permissions.rb', line 24

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