Class: StoneWall::Parser
- Inherits:
-
Object
- Object
- StoneWall::Parser
- Defined in:
- lib/stonewall/parser.rb
Instance Method Summary collapse
- #action(action_name, &guard) ⇒ Object
- #allow(*alloweds) ⇒ Object
- #guard_aasm_events ⇒ Object
- #guard_attribute(*attributes) ⇒ Object (also: #guard_attributes)
- #guard_method(*methods) ⇒ Object (also: #guard_methods)
-
#initialize(parent, role = :all, variant = :all) ⇒ Parser
constructor
A new instance of Parser.
- #method_group(name, methods) ⇒ Object
- #role(role_name) {|Parser.new(@parent, role_name)| ... } ⇒ Object
- #variant(variant_name) {|Parser.new(@parent, @role, variant_name)| ... } ⇒ Object
- #varies_on(field) ⇒ Object
Constructor Details
#initialize(parent, role = :all, variant = :all) ⇒ Parser
Returns a new instance of Parser.
3 4 5 6 |
# File 'lib/stonewall/parser.rb', line 3 def initialize(parent, role = :all, variant = :all) @parent, @role, @variant = parent, role, variant @method_groups = Hash.new end |
Instance Method Details
#action(action_name, &guard) ⇒ Object
28 29 30 |
# File 'lib/stonewall/parser.rb', line 28 def action(action_name, &guard) @parent.stonewall.actions[action_name] = guard end |
#allow(*alloweds) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 |
# File 'lib/stonewall/parser.rb', line 8 def allow(*alloweds) alloweds.flatten.each do |allowed| if @parent.stonewall.method_groups.keys.include?(allowed) @parent.stonewall.method_groups[allowed].each do |m| @parent.stonewall.add_grant(@role, @variant, m) end else @parent.stonewall.add_grant(@role, @variant, allowed) end end end |
#guard_aasm_events ⇒ Object
32 33 34 35 36 37 38 39 40 |
# File 'lib/stonewall/parser.rb', line 32 def guard_aasm_events @parent.aasm_events.keys.each do |event| @parent.stonewall.actions[event] = Proc.new { |object, user| User.do_as(user) { object.send(("may_" + event.to_s + "?").to_sym) } } end end |
#guard_attribute(*attributes) ⇒ Object Also known as: guard_attributes
50 51 52 53 54 |
# File 'lib/stonewall/parser.rb', line 50 def guard_attribute(*attributes) attributes.each do |m| StoneWall::Helpers.guard_attribute(@parent, m) end end |
#guard_method(*methods) ⇒ Object Also known as: guard_methods
57 58 59 60 61 |
# File 'lib/stonewall/parser.rb', line 57 def guard_method(*methods) methods.each do |m| StoneWall::Helpers.guard_method(@parent, m) end end |
#method_group(name, methods) ⇒ Object
20 21 22 |
# File 'lib/stonewall/parser.rb', line 20 def method_group(name, methods) @parent.stonewall.method_groups[name] = methods end |
#role(role_name) {|Parser.new(@parent, role_name)| ... } ⇒ Object
42 43 44 |
# File 'lib/stonewall/parser.rb', line 42 def role(role_name) yield Parser.new(@parent, role_name) end |
#variant(variant_name) {|Parser.new(@parent, @role, variant_name)| ... } ⇒ Object
46 47 48 |
# File 'lib/stonewall/parser.rb', line 46 def variant(variant_name) yield Parser.new(@parent, @role, variant_name) end |
#varies_on(field) ⇒ Object
24 25 26 |
# File 'lib/stonewall/parser.rb', line 24 def varies_on(field) @parent.stonewall.set_variant_field(field) end |