Module: Symphonia::Permissions

Defined in:
lib/symphonia/permissions.rb

Defined Under Namespace

Classes: Permission, PermissionMissingError

Constant Summary collapse

@@mapper =
[]
@@used_names =
[]

Class Method Summary collapse

Class Method Details

.allObject



36
37
38
# File 'lib/symphonia/permissions.rb', line 36

def all
  mapper
end

.find_all(permission_names = []) ⇒ Object



40
41
42
43
# File 'lib/symphonia/permissions.rb', line 40

def find_all(permission_names=[])
  ps = used_names & Array(permission_names).compact
  ps.collect{|m| get(m.to_sym)}
end

.get(name) ⇒ Object

Returns the permission of given name or nil if it wasn’t found Argument should be a symbol



32
33
34
# File 'lib/symphonia/permissions.rb', line 32

def get(name)
  mapper.detect{|i| i.name == name}
end

.map(&block) ⇒ Object



10
11
12
13
14
# File 'lib/symphonia/permissions.rb', line 10

def map(&block)
  if block_given?
    yield self
  end
end

.register(name, options = {}) ⇒ Object



16
17
18
19
20
21
22
23
24
# File 'lib/symphonia/permissions.rb', line 16

def register(name, options={})
  return if @@used_names.include?(name)

  p = Permission.new(name, options)
  @@used_names << p.name.to_s
  mapper << p

  p
end

.update(name) ⇒ Object



26
27
28
# File 'lib/symphonia/permissions.rb', line 26

def update(name)
  self.get(name) || raise(PermissionMissingError)
end