pbw 0.0.6 → 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. checksums.yaml +8 -8
  2. data/app/controllers/pbw/base_models_controller.rb +22 -10
  3. data/app/controllers/pbw/commands_controller.rb +11 -0
  4. data/app/controllers/pbw/items_controller.rb +1 -1
  5. data/app/models/pbw/ability.rb +35 -11
  6. data/app/models/pbw/area.rb +25 -0
  7. data/app/models/pbw/attached_process.rb +41 -0
  8. data/app/models/pbw/capability.rb +20 -0
  9. data/app/models/pbw/command.rb +105 -0
  10. data/app/models/pbw/constraint.rb +20 -0
  11. data/app/models/pbw/item.rb +16 -0
  12. data/app/models/pbw/item_container.rb +16 -0
  13. data/app/models/pbw/item_conversion.rb +16 -0
  14. data/app/models/pbw/item_transfer.rb +16 -0
  15. data/app/models/pbw/process.rb +17 -8
  16. data/app/models/pbw/rule.rb +16 -0
  17. data/app/models/pbw/token.rb +26 -1
  18. data/app/models/pbw/trigger.rb +20 -0
  19. data/app/models/pbw/user.rb +50 -14
  20. data/config/initializers/devise.rb +0 -8
  21. data/config/routes.rb +1 -1
  22. data/lib/generators/pbw/area/area_generator.rb +4 -0
  23. data/lib/generators/pbw/item/item_generator.rb +4 -0
  24. data/lib/generators/pbw/rules/capability/capability_generator.rb +4 -0
  25. data/lib/generators/pbw/rules/command/USAGE +3 -3
  26. data/lib/generators/pbw/rules/command/command_generator.rb +11 -11
  27. data/lib/generators/pbw/rules/command/templates/model.coffee +1 -0
  28. data/lib/generators/pbw/rules/constraint/constraint_generator.rb +4 -0
  29. data/lib/generators/pbw/rules/process/process_generator.rb +4 -0
  30. data/lib/generators/pbw/rules/trigger/trigger_generator.rb +4 -0
  31. data/lib/generators/pbw/scaffold_generator.rb +3 -3
  32. data/lib/generators/pbw/token/token_generator.rb +4 -0
  33. data/lib/pbw/tick.rb +8 -0
  34. data/lib/pbw/update.rb +8 -0
  35. data/lib/pbw/version.rb +1 -1
  36. data/lib/tasks/pbw_tasks.rake +11 -4
  37. metadata +36 -14
  38. data/app/controllers/pbw/roles_controller.rb +0 -46
  39. data/app/models/pbw/permission.rb +0 -13
  40. data/app/models/pbw/role.rb +0 -26
  41. data/lib/generators/pbw/rules/command/templates/command.rb +0 -18
  42. data/lib/generators/pbw/rules/command/templates/index.erb +0 -6
  43. data/lib/generators/pbw/rules/command/templates/templates/edit.jst +0 -17
  44. data/lib/generators/pbw/rules/command/templates/templates/index.jst +0 -16
  45. data/lib/generators/pbw/rules/command/templates/templates/show.jst +0 -9
  46. data/lib/generators/pbw/rules/command/templates/views/edit_view.coffee +0 -24
  47. data/lib/generators/pbw/rules/command/templates/views/index_view.coffee +0 -20
  48. data/lib/generators/pbw/rules/command/templates/views/show_view.coffee +0 -8
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ZWExNjYwMWQ4NWQxYzk1YzU4YmQxNjE5MjIyZjdkNTc0NDZlNWI2OQ==
4
+ ZDE5MzY0MTBlZjgxMjU3OGMxMGMwZTAzMzk4ZThlZmQ4ZGE3YjVhZg==
5
5
  data.tar.gz: !binary |-
6
- MDI2MjBiZWUyY2ZiMGQxODFiMDA0YWI1YjRkMTg5M2ViNTlmYjk0Mw==
6
+ NWFlMzkxMjY1MDFjYzZiNjljYjU1MWZiN2JiZjhlYTgzZTcxNzk4YQ==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- MWE0MjUyYWE2ODRlZjI1NjA2OTA3MTE0MzIyZDNmZGM2ODA2MzBhMDRiOTZi
10
- ODY4ZjBkOGUzNzZiODg2NDlkM2UzOWFhNTQ4YTAyYjFlZDE4N2NhZWU4OTY4
11
- YmYwNTEwMmU4ZGFjZWY1NDQxZGY2NGM1NmYyMzM4OGYwZWQwZTY=
9
+ ZWNkMzU1NWIyMDEyYTg1YTY0OTQ1YTIzZWI3ZDAxNmVlYmM5ZTNiNTdjNjQy
10
+ MDA3MWQ0Y2JlYzIyMTQzODRkZWJiNmI4ZmFmODAyYjI2MzNlNjRiMWExYzRm
11
+ ZDJlMmJiNWM4MDczN2IxN2IzYmU4ZDI5YTg2ZDI2YmUxNDg3OWI=
12
12
  data.tar.gz: !binary |-
13
- MWVlYmExMTU2OWNhMDhmZmE3Njg0Mjk0YTcxZmQ1ODY1YWQyMzRmZWFjZGMz
14
- NzQ1YzNlOTQ5YWM1NGVhOTM0MmIzNTRhMDNiMzQ3YzA0OWU0YWFlZjVhMGE1
15
- ZmJiODY4MTdkMWQyOGQwNjk1ZDM4N2JkZDYwZmJjNTUxYzQ0MDE=
13
+ NzI0YjMyZjI5ZWEzZGZjYWQ4NWQ3MThlMzQzM2VmMjI0NTU4ZGZlZjM2ZTUw
14
+ NDM5Zjk4MDkzYTMwZDk2Zjg1MWY2Yzc0ZjNjYTAwNTdiM2EwODFkMzIwNmY0
15
+ Y2Y0OTNhMDJjMjI2ODU3MzMyNDBmODkwY2NiOWEzMzdmNzQ5NGU=
@@ -9,6 +9,19 @@ module Pbw
9
9
  before_filter :model_for_read, :only => [:show]
10
10
  before_filter :model_for_update, :only => [:edit, :update, :destroy]
11
11
  before_filter :index_models, :only => [:index]
12
+ before_filter :model_for_create, :only => [:new, :create]
13
+
14
+ def set_model_class
15
+ # stub method
16
+ end
17
+
18
+ def update_model_before_create(model)
19
+ # stub method
20
+ end
21
+
22
+ def update_model_before_update(model)
23
+ # stub method
24
+ end
12
25
 
13
26
  def index
14
27
  session[:referrer] = request.url
@@ -30,17 +43,12 @@ module Pbw
30
43
  end
31
44
 
32
45
  def new
33
- authorize! :manage, Admin
34
- @model = real_model_class.new
35
46
  respond_with(@model) do |format|
36
47
  format.json { render json: @model }
37
48
  end
38
49
  end
39
50
 
40
51
  def create
41
- authorize! :manage, real_model_class
42
- @model = real_model_class.new(params[model_param])
43
- @model.image = @image if @image
44
52
  if @model.save
45
53
  respond_with(@model) do |format|
46
54
  format.json { render json: @model }
@@ -54,10 +62,6 @@ module Pbw
54
62
 
55
63
  def update
56
64
  if @model.update_attributes(params[model_param])
57
- if @image
58
- @model.image = @image
59
- @model.save
60
- end
61
65
  respond_with(@model) do |format|
62
66
  format.json { render json: @model }
63
67
  end
@@ -100,17 +104,25 @@ module Pbw
100
104
  end
101
105
 
102
106
  def index_models
103
- authorize! :read, model_class
107
+ authorize! :manage, model_class
104
108
  @models = model_class.desc(:created_at)
105
109
  end
106
110
 
111
+ def model_for_create
112
+ authorize! :create, real_model_class
113
+ @model = real_model_class.new(params[model_param])
114
+ update_model_before_create(@model)
115
+ end
116
+
107
117
  def model_for_read
108
118
  @model = model_class.find(model_id)
119
+ authorize! :read, @model
109
120
  end
110
121
 
111
122
  def model_for_update
112
123
  @model = model_class.find(model_id)
113
124
  authorize! :update, @model
125
+ update_model_before_update(@model)
114
126
  end
115
127
  end
116
128
 
@@ -0,0 +1,11 @@
1
+ module Pbw
2
+ class CommandsController < BaseModelsController
3
+ def set_model_class
4
+ self.model_class = Command
5
+ end
6
+
7
+ def update_model_before_create(model)
8
+ model.user = current_user
9
+ end
10
+ end
11
+ end
@@ -1,7 +1,7 @@
1
1
  module Pbw
2
2
  class ItemsController < BaseModelsController
3
3
  def set_model_class
4
- self.model_class = Resource
4
+ self.model_class = Item
5
5
  end
6
6
  end
7
7
  end
@@ -1,13 +1,37 @@
1
+ require 'cancan'
2
+
1
3
  class Ability
2
- include ::CanCan::Ability
3
-
4
- def initialize(user)
5
- user.role.permissions.each do |permission|
6
- if permission.subject_class == "all"
7
- can permission.action.to_sym, permission.subject_class.to_sym
8
- else
9
- can permission.action.to_sym, permission.subject_class.constantize
10
- end
4
+ include CanCan::Ability
5
+
6
+ MANAGED_CLASSES = [Area, Capability, Command, Constraint, Item, ItemContainer, ItemConversion, ItemTransfer, Process, Rule, Token, Trigger, User]
7
+
8
+ def initialize(user)
9
+ user ||= User.new
10
+ if user.superadmin?
11
+ can :manage, :all
12
+ else
13
+ can do |action, subject_class, subject|
14
+ case action.to_s
15
+ when "index", "show", "search"
16
+ check_method = :viewable_by?
17
+ when "create", "new"
18
+ check_method = :creatable_by?
19
+ when "edit", "update"
20
+ check_method = :editable_by?
21
+ when "delete", "destroy"
22
+ check_method = :deletable_by?
23
+ else
24
+ check_method = :viewable_by?
25
+ end
26
+ check_class = subject_class.respond_to?(check_method) ? subject_class : parent_of_subject_class(subject_class)
27
+ check_class.send(check_method, user, subject)
28
+ end
29
+ end
11
30
  end
12
- end
13
- end
31
+
32
+ def parent_of_subject_class(subject_class)
33
+ MANAGED_CLASSES.each do |klass|
34
+ return klass if subject_class.ancestors.include?(klass)
35
+ end
36
+ end
37
+ end
@@ -10,9 +10,26 @@ module Pbw
10
10
  has_many :item_containers
11
11
  has_and_belongs_to_many :constraints
12
12
  has_and_belongs_to_many :triggers
13
+ has_and_belongs_to_many :attached_processes
13
14
 
14
15
  attr_accessible :name
15
16
 
17
+ def self.viewable_by?(user, subject)
18
+ true
19
+ end
20
+
21
+ def self.creatable_by?(user, subject)
22
+ user.admin?
23
+ end
24
+
25
+ def self.editable_by?(user, subject)
26
+ user.admin?
27
+ end
28
+
29
+ def self.deletable_by?(user, subject)
30
+ user.admin?
31
+ end
32
+
16
33
  def before_token_enters(token)
17
34
  # stub method
18
35
  true
@@ -49,6 +66,14 @@ module Pbw
49
66
  # stub method
50
67
  end
51
68
 
69
+ def attach_tick_process(process, ticks_to_wait=0)
70
+ AttachedProcess.create(area: self, process: process, tickable: true, ticks_waiting: ticks_to_wait)
71
+ end
72
+
73
+ def attach_update_process(process, updates_to_wait=0)
74
+ AttachedProcess.create(area: self, process: process, updatable: true, updates_waiting: updates_to_wait)
75
+ end
76
+
52
77
  def count_item(item)
53
78
  container = ItemContainer.find_for_area(self)
54
79
  container ? container.quantity : 0
@@ -0,0 +1,41 @@
1
+ module Pbw
2
+ class AttachedProcess < Rule
3
+ belongs_to :token
4
+ belongs_to :area
5
+ belongs_to :process
6
+
7
+ field :tickable, :type => Boolean, :default => false
8
+ field :updatable, :type => Boolean, :default => false
9
+ field :ticks_waiting, :type => Integer, :default => 0
10
+ field :updates_waiting, :type => Integer, :default => 0
11
+
12
+ scope :tickable, where(tickable: true)
13
+ scope :updatable, where(updatable: true)
14
+
15
+ def tick!
16
+ return unless self.tickable && self.process && (self.token || self.area)
17
+ unless self.ticks_waiting > 0
18
+ self.process.run!(token_or_area)
19
+ destroy
20
+ else
21
+ self.ticks_waiting = self.ticks_waiting - 1
22
+ save!
23
+ end
24
+ end
25
+
26
+ def update!
27
+ return unless self.updatable && self.process && (self.token || self.area)
28
+ unless self.updates_waiting > 0
29
+ self.process.run!(token_or_area)
30
+ destroy
31
+ else
32
+ self.updates_waiting = self.updates_waiting - 1
33
+ save!
34
+ end
35
+ end
36
+
37
+ def token_or_area
38
+ self.token || self.area
39
+ end
40
+ end
41
+ end
@@ -2,6 +2,26 @@ module Pbw
2
2
  class Capability < Rule
3
3
  has_and_belongs_to_many :tokens
4
4
 
5
+ def self.viewable_by?(user, subject)
6
+ return true if user.admin?
7
+ subject.tokens.each do |token|
8
+ return true token.user && token.user == user
9
+ end
10
+ false
11
+ end
12
+
13
+ def self.creatable_by?(user, subject)
14
+ user.admin?
15
+ end
16
+
17
+ def self.editable_by?(user, subject)
18
+ user.admin?
19
+ end
20
+
21
+ def self.deletable_by?(user, subject)
22
+ user.admin?
23
+ end
24
+
5
25
  def before_process(token, &changeset)
6
26
  # stub method
7
27
  true
@@ -0,0 +1,105 @@
1
+ module Pbw
2
+ class Command < Rule
3
+ belongs_to :token
4
+ belongs_to :user
5
+
6
+ before_validation :validate_token_and_user
7
+
8
+ field :tickable, :type => Boolean, :default => false
9
+ field :updatable, :type => Boolean, :default => false
10
+ field :ticks_waiting, :type => Integer, :default => 0
11
+ field :updates_waiting, :type => Integer, :default => 0
12
+
13
+ before_save :set_tickable_and_updatable
14
+
15
+ scope :tickable, where(tickable: true)
16
+ scope :updatable, where(updatable: true)
17
+
18
+ def self.viewable_by?(user, subject)
19
+ user.admin? || subject.user == user
20
+ end
21
+
22
+ def self.creatable_by?(user, subject)
23
+ user.admin? || subject.user.nil? || (subject.user == user && subject.token.user && subject.token.user == user)
24
+ end
25
+
26
+ def self.editable_by?(user, subject)
27
+ user.admin? || (subject.user == user && subject.token.user && subject.token.user == user)
28
+ end
29
+
30
+ def self.deletable_by?(user, subject)
31
+ user.admin? || (subject.user == user && subject.token.user && subject.token.user == user)
32
+ end
33
+
34
+ def valid_for_token?(token)
35
+ # stub method
36
+ false
37
+ end
38
+
39
+ def valid_for_user?(user)
40
+ # stub method
41
+ false
42
+ end
43
+
44
+ def runs_on_ticks?
45
+ # stub method
46
+ false
47
+ end
48
+
49
+ def runs_on_updates?
50
+ # stub method
51
+ false
52
+ end
53
+
54
+ def processes
55
+ # stub method
56
+ []
57
+ end
58
+
59
+ def set_tickable_and_updatable
60
+ self.tickable = runs_on_ticks?
61
+ self.updatable = runs_on_updates?
62
+ end
63
+
64
+ def run_processes!
65
+ procs = processes
66
+ return if procs.nil?
67
+ if procs.responds_to?(:each)
68
+ procs.each do |process|
69
+ process.run!(self.token)
70
+ end
71
+ elsif procs.ancestors.include?(Process)
72
+ process.run!(self.token)
73
+ else
74
+ raise "Invalid return method from #{self.class.name}.processes"
75
+ end
76
+ end
77
+
78
+ def validate_token_and_user
79
+ errors.add(:token, 'Invalid token') unless valid_for_token?(self.token)
80
+ errors.add(:user, 'Invalid user') unless valid_for_user?(self.user)
81
+ end
82
+
83
+ def tick!
84
+ return unless self.tickable
85
+ unless self.ticks_waiting > 0
86
+ run_processes!
87
+ destroy
88
+ else
89
+ self.ticks_waiting = self.ticks_waiting - 1
90
+ save!
91
+ end
92
+ end
93
+
94
+ def update!
95
+ return unless self.updatable
96
+ unless self.updates_waiting > 0
97
+ run_processes!
98
+ destroy
99
+ else
100
+ self.updates_waiting = self.updates_waiting - 1
101
+ save!
102
+ end
103
+ end
104
+ end
105
+ end
@@ -3,6 +3,26 @@ module Pbw
3
3
  has_and_belongs_to_many :tokens
4
4
  has_and_belongs_to_many :areas
5
5
 
6
+ def self.viewable_by?(user, subject)
7
+ return true if user.admin?
8
+ subject.tokens.each do |token|
9
+ return true token.user && token.user == user
10
+ end
11
+ false
12
+ end
13
+
14
+ def self.creatable_by?(user, subject)
15
+ user.admin?
16
+ end
17
+
18
+ def self.editable_by?(user, subject)
19
+ user.admin?
20
+ end
21
+
22
+ def self.deletable_by?(user, subject)
23
+ user.admin?
24
+ end
25
+
6
26
  def before_process(token_or_area, &changeset)
7
27
  # stub method
8
28
  true
@@ -12,6 +12,22 @@ module Pbw
12
12
 
13
13
  attr_accessible :name
14
14
 
15
+ def self.viewable_by?(user, subject)
16
+ true
17
+ end
18
+
19
+ def self.creatable_by?(user, subject)
20
+ user.admin?
21
+ end
22
+
23
+ def self.editable_by?(user, subject)
24
+ user.admin?
25
+ end
26
+
27
+ def self.deletable_by?(user, subject)
28
+ user.admin?
29
+ end
30
+
15
31
  def before_add(container, quantity)
16
32
  # stub method
17
33
  true
@@ -12,6 +12,22 @@ module Pbw
12
12
 
13
13
  attr_accessible :item, :token, :area, :user, :quantity
14
14
 
15
+ def self.viewable_by?(user, subject)
16
+ user.admin? || subject.user == user || (subject.token && subject.token.user == user)
17
+ end
18
+
19
+ def self.creatable_by?(user, subject)
20
+ true
21
+ end
22
+
23
+ def self.editable_by?(user, subject)
24
+ user.admin? || subject.user == user || (subject.token && subject.token.user == user)
25
+ end
26
+
27
+ def self.deletable_by?(user, subject)
28
+ user.admin?
29
+ end
30
+
15
31
  def self.find_or_create_for_token(token, item, quantity_to_add)
16
32
  container = where(token: token, item: item).first
17
33
  container = new(token: token, item: item) unless container
@@ -5,6 +5,22 @@ module Pbw
5
5
  belongs_to :item
6
6
  field :from, :type => Hash
7
7
 
8
+ def self.viewable_by?(user, subject)
9
+ true
10
+ end
11
+
12
+ def self.creatable_by?(user, subject)
13
+ user.admin?
14
+ end
15
+
16
+ def self.editable_by?(user, subject)
17
+ user.admin?
18
+ end
19
+
20
+ def self.deletable_by?(user, subject)
21
+ user.admin?
22
+ end
23
+
8
24
  def set_from_item(item, quantity)
9
25
  return false unless item && quantity
10
26
  self.from ||= {}
@@ -5,5 +5,21 @@ module Pbw
5
5
  belongs_to :item
6
6
  field :from_class, :type => String
7
7
  field :to_class, :type => String
8
+
9
+ def self.viewable_by?(user, subject)
10
+ true
11
+ end
12
+
13
+ def self.creatable_by?(user, subject)
14
+ user.admin?
15
+ end
16
+
17
+ def self.editable_by?(user, subject)
18
+ user.admin?
19
+ end
20
+
21
+ def self.deletable_by?(user, subject)
22
+ user.admin?
23
+ end
8
24
  end
9
25
  end
@@ -1,9 +1,23 @@
1
1
  module Pbw
2
2
  class Process < Rule
3
3
  has_many :triggers
4
+ has_and_belongs_to_many :attached_processes
4
5
 
5
- field :run_tick, :type => Boolean
6
- field :run_update, :type => Boolean
6
+ def self.viewable_by?(user, subject)
7
+ user.admin?
8
+ end
9
+
10
+ def self.creatable_by?(user, subject)
11
+ true
12
+ end
13
+
14
+ def self.editable_by?(user, subject)
15
+ user.admin?
16
+ end
17
+
18
+ def self.deletable_by?(user, subject)
19
+ user.admin?
20
+ end
7
21
 
8
22
  def before_run(token_or_area)
9
23
  # stub method
@@ -16,7 +30,7 @@ module Pbw
16
30
 
17
31
  def changeset(token_or_area)
18
32
  # stub method
19
- raise "Not implemented"
33
+ Pbw::Changeset.new
20
34
  end
21
35
 
22
36
  def execute_changeset!(&changeset)
@@ -40,10 +54,5 @@ module Pbw
40
54
  token_or_area.check_triggers!
41
55
  after_triggers(token_or_area)
42
56
  end
43
-
44
- def schedule!(token_or_area)
45
- # TODO
46
- raise "Not implemented"
47
- end
48
57
  end
49
58
  end
@@ -6,5 +6,21 @@ module Pbw
6
6
  validates :name, presence: true, uniqueness: true
7
7
 
8
8
  attr_accessible :name
9
+
10
+ def self.viewable_by?(user, subject)
11
+ true
12
+ end
13
+
14
+ def self.creatable_by?(user, subject)
15
+ user.admin?
16
+ end
17
+
18
+ def self.editable_by?(user, subject)
19
+ user.admin?
20
+ end
21
+
22
+ def self.deletable_by?(user, subject)
23
+ user.admin?
24
+ end
9
25
  end
10
26
  end
@@ -6,14 +6,31 @@ module Pbw
6
6
  validates_presence_of :name
7
7
 
8
8
  belongs_to :area
9
+ belongs_to :user
9
10
  has_and_belongs_to_many :capabilities
10
11
  has_and_belongs_to_many :constraints
11
12
  has_and_belongs_to_many :triggers
12
- has_and_belongs_to_many :users
13
+ has_and_belongs_to_many :attached_processes
13
14
  has_many :item_containers
14
15
 
15
16
  attr_accessible :name
16
17
 
18
+ def self.viewable_by?(user, subject)
19
+ user.admin? || subject.user == user
20
+ end
21
+
22
+ def self.creatable_by?(user, subject)
23
+ true
24
+ end
25
+
26
+ def self.editable_by?(user, subject)
27
+ user.admin? || subject.user == user
28
+ end
29
+
30
+ def self.deletable_by?(user, subject)
31
+ user.admin? || subject.user == user
32
+ end
33
+
17
34
  def before_ownership(user)
18
35
  # stub method
19
36
  true
@@ -50,6 +67,14 @@ module Pbw
50
67
  # stub method
51
68
  end
52
69
 
70
+ def attach_tick_process(process, ticks_to_wait=0)
71
+ AttachedProcess.create(token: self, process: process, tickable: true, ticks_waiting: ticks_to_wait)
72
+ end
73
+
74
+ def attach_update_process(process, updates_to_wait=0)
75
+ AttachedProcess.create(token: self, process: process, updatable: true, updates_waiting: updates_to_wait)
76
+ end
77
+
53
78
  def can_convert?(item)
54
79
  self.capabilities.any?{|c| c.can_convert?(item)}
55
80
  end
@@ -4,6 +4,26 @@ module Pbw
4
4
  has_and_belongs_to_many :areas
5
5
  belongs_to :process
6
6
 
7
+ def self.viewable_by?(user, subject)
8
+ return true if user.admin?
9
+ subject.tokens.each do |token|
10
+ return true token.user && token.user == user
11
+ end
12
+ false
13
+ end
14
+
15
+ def self.creatable_by?(user, subject)
16
+ user.admin?
17
+ end
18
+
19
+ def self.editable_by?(user, subject)
20
+ user.admin?
21
+ end
22
+
23
+ def self.deletable_by?(user, subject)
24
+ user.admin?
25
+ end
26
+
7
27
  def trigger?(token_or_area)
8
28
  # stub method
9
29
  end