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.
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
# File 'lib/super/action_inquirer.rb', line 66
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
107
108
109
110
111
112
113
114
115
116
117
118
119
|
# File 'lib/super/action_inquirer.rb', line 107
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
52
53
54
|
# File 'lib/super/action_inquirer.rb', line 52
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
|
62
63
64
|
# File 'lib/super/action_inquirer.rb', line 62
def self.destroy!
new(default_for_resources, "destroy")
end
|
47
48
49
|
# File 'lib/super/action_inquirer.rb', line 47
def self.edit!
new(default_for_resources, "edit")
end
|
32
33
34
|
# File 'lib/super/action_inquirer.rb', line 32
def self.index!
new(default_for_resources, "index")
end
|
42
43
44
|
# File 'lib/super/action_inquirer.rb', line 42
def self.new!
new(default_for_resources, "new")
end
|
37
38
39
|
# File 'lib/super/action_inquirer.rb', line 37
def self.show!
new(default_for_resources, "show")
end
|
57
58
59
|
# File 'lib/super/action_inquirer.rb', line 57
def self.update!
new(default_for_resources, "update")
end
|
Instance Method Details
#respond_to_missing?(method_name) ⇒ Boolean
99
100
101
102
103
104
105
|
# File 'lib/super/action_inquirer.rb', line 99
def respond_to_missing?(method_name, *)
inquiry = parse_inquiry(method_name)
return super if !inquiry
@actions.include?(inquiry) || @categories.include?(inquiry) || super
end
|