Class: StoneWall::Parser

Inherits:
Object
  • Object
show all
Defined in:
lib/stonewall/parser.rb

Instance Method Summary collapse

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_eventsObject



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

Yields:

  • (Parser.new(@parent, role_name))


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

Yields:



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