Class: Admission::PrivilegesOrder::Definer
- Inherits:
-
Object
- Object
- Admission::PrivilegesOrder::Definer
- Defined in:
- lib/admission/privileges_order.rb
Instance Attribute Summary collapse
-
#definitions ⇒ Object
readonly
Returns the value of attribute definitions.
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize ⇒ Definer
constructor
A new instance of Definer.
- #privilege(name, levels: [], inherits: nil) ⇒ Object
Constructor Details
#initialize ⇒ Definer
Returns a new instance of Definer.
30 31 32 |
# File 'lib/admission/privileges_order.rb', line 30 def initialize @definitions = {} end |
Instance Attribute Details
#definitions ⇒ Object (readonly)
Returns the value of attribute definitions.
28 29 30 |
# File 'lib/admission/privileges_order.rb', line 28 def definitions @definitions end |
Class Method Details
.define(&block) ⇒ Object
52 53 54 55 56 57 58 |
# File 'lib/admission/privileges_order.rb', line 52 def self.define &block definer = new definer.instance_exec &block definer.send :setup_inheritance definer.send :build_index end |
Instance Method Details
#privilege(name, levels: [], inherits: nil) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/admission/privileges_order.rb', line 34 def privilege name, levels: [], inherits: nil name = name.to_sym if ([name] + levels).any?{|id| id == Admission::Privilege::RESERVED_ID } raise "reserved name `#{Admission::Privilege::RESERVED_ID}` !" end levels.unshift Admission::Privilege::BASE_LEVEL_NAME levels.map!{|level| Admission::Privilege.new name, level} inherits = nil if inherits && inherits.empty? if inherits inherits = *inherits inherits = inherits.map(&:to_sym).uniq end @definitions[name] = {levels: levels, inherits: inherits} end |