Class: MakeRestful::PermissibleSet

Inherits:
Set
  • Object
show all
Defined in:
lib/make_restful/permissible_set.rb

Direct Known Subclasses

PermissibleActions

Instance Method Summary collapse

Constructor Details

#initialize(set = []) ⇒ PermissibleSet

Returns a new instance of PermissibleSet.



3
4
5
6
7
# File 'lib/make_restful/permissible_set.rb', line 3

def initialize(set=[])
  @only = Set.new
  @except = Set.new
  super(set)
end

Instance Method Details

#allowed?(*objects) ⇒ Boolean

Returns:

  • (Boolean)


25
26
27
# File 'lib/make_restful/permissible_set.rb', line 25

def allowed?(*objects)
  true if objects.flatten.map(&:to_sym).select { |i| permissible_objects.include? i }.present?
end

#available_objectsObject



13
14
15
# File 'lib/make_restful/permissible_set.rb', line 13

def available_objects
  Set.new(self.to_a)
end

#except(*objects) ⇒ Object



21
22
23
# File 'lib/make_restful/permissible_set.rb', line 21

def except(*objects)
  @except += objects.flatten.compact.map(&:to_sym)
end

#objects=(*objects) ⇒ Object



9
10
11
# File 'lib/make_restful/permissible_set.rb', line 9

def objects=(*objects)
  self.replace objects.flatten.compact
end

#only(*objects) ⇒ Object



17
18
19
# File 'lib/make_restful/permissible_set.rb', line 17

def only(*objects)
  @only = objects.flatten.compact.map(&:to_sym)
end

#permissible_objectsObject



29
30
31
# File 'lib/make_restful/permissible_set.rb', line 29

def permissible_objects
  Set.new(available_objects).intersection(@only.present? ? @only : available_objects).difference(@except)
end