Class: Super::ActionInquirer
- Inherits:
-
Object
- Object
- Super::ActionInquirer
show all
- Defined in:
- lib/super/action_inquirer.rb
Overview
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(categories_and_their_actions, action) ⇒ ActionInquirer
Returns a new instance of ActionInquirer.
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
# File 'lib/super/action_inquirer.rb', line 46
def initialize(categories_and_their_actions, action)
@categories = categories_and_their_actions.keys.map(&:to_s)
@actions = categories_and_their_actions.values.flatten.uniq.map(&:to_s)
@actions_categories = {}
categories_and_their_actions.each do |c, actions|
c = c.to_s
actions.each do |a|
a = a.to_s
@actions_categories[a] ||= []
@actions_categories[a].push(c)
end
end
intersection = @categories & @actions
if intersection.any?
raise Error::ActionInquirerError,
"Found shared elements between categories and actions: #{intersection.join(", ")}"
end
self.action = action
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method_name) ⇒ Object
87
88
89
90
91
92
93
94
95
96
97
98
99
|
# File 'lib/super/action_inquirer.rb', line 87
def method_missing(method_name, *)
inquiry = parse_inquiry(method_name)
return super if !inquiry
if @actions.include?(inquiry)
matches_action?(inquiry)
elsif @categories.include?(inquiry)
matches_category?(inquiry)
else
super
end
end
|
Instance Attribute Details
#action ⇒ Object
Returns the value of attribute action.
16
17
18
|
# File 'lib/super/action_inquirer.rb', line 16
def action
@action
end
|
Class Method Details
40
|
# File 'lib/super/action_inquirer.rb', line 40
def self.create!; new(default_for_resources, "create"); end
|
.default_for_resources ⇒ Hash<Symbol, Array<Symbol>>
Returns default settings for initialization.
20
21
22
23
24
25
26
27
28
29
|
# File 'lib/super/action_inquirer.rb', line 20
def self.default_for_resources
{
"read" => %w[index show new edit],
"write" => %w[create update destroy],
"delete" => %w[destroy],
"collection" => %w[index new create],
"member" => %w[show edit update destroy],
}
end
|
44
|
# File 'lib/super/action_inquirer.rb', line 44
def self.destroy!; new(default_for_resources, "destroy"); end
|
38
|
# File 'lib/super/action_inquirer.rb', line 38
def self.edit!; new(default_for_resources, "edit"); end
|
32
|
# File 'lib/super/action_inquirer.rb', line 32
def self.index!; new(default_for_resources, "index"); end
|
36
|
# File 'lib/super/action_inquirer.rb', line 36
def self.new!; new(default_for_resources, "new"); end
|
34
|
# File 'lib/super/action_inquirer.rb', line 34
def self.show!; new(default_for_resources, "show"); end
|
42
|
# File 'lib/super/action_inquirer.rb', line 42
def self.update!; new(default_for_resources, "update"); end
|
Instance Method Details
#respond_to_missing?(method_name) ⇒ Boolean
79
80
81
82
83
84
85
|
# File 'lib/super/action_inquirer.rb', line 79
def respond_to_missing?(method_name, *)
inquiry = parse_inquiry(method_name)
return super if !inquiry
@actions.include?(inquiry) || @categories.include?(inquiry) || super
end
|