toy-locomotive 0.0.11 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
@@ -2,14 +2,40 @@ module ToyLocomotive::Resources::Controller
|
|
2
2
|
|
3
3
|
module ClassMethods
|
4
4
|
def extract_resources args
|
5
|
-
actions =
|
6
|
-
|
7
|
-
|
8
|
-
|
5
|
+
actions = {}
|
6
|
+
crud = [:index, :new, :create, :show, :edit, :update, :destroy]
|
7
|
+
if args.first == :all
|
8
|
+
actions[:crud] << crud
|
9
|
+
hash = args.last
|
10
|
+
else
|
11
|
+
hash = args.first
|
12
|
+
end
|
13
|
+
actions[:crud] = hash[:only] if hash[:only]
|
14
|
+
actions[:crud] = crud - hash[:except] if hash[:except]
|
15
|
+
actions[:member] = hash[:member]
|
16
|
+
actions[:collection] = hash[:collection]
|
17
|
+
actions[:static] = hash[:static]
|
18
|
+
actions
|
19
|
+
end
|
20
|
+
|
21
|
+
def resources *args
|
22
|
+
res = extract_resources(args)
|
23
|
+
res[:crud].each{|action| send :"set_action_#{action}"} if res[:crud]
|
24
|
+
res[:member].each{|action| set_member_action(action)} if res[:member]
|
25
|
+
res[:collection].each{|action| set_collection_action(action)} if res[:collection]
|
26
|
+
res[:static].each{|action| set_static_action(action)} if res[:static]
|
27
|
+
end
|
28
|
+
|
29
|
+
def set_static_action action
|
30
|
+
get action.to_s do end
|
31
|
+
end
|
32
|
+
|
33
|
+
def set_member_action action
|
34
|
+
get action.to_s, on: 'member' do end
|
9
35
|
end
|
10
36
|
|
11
|
-
def
|
12
|
-
|
37
|
+
def set_collection_action action
|
38
|
+
get action.to_s, on: 'collection' do end
|
13
39
|
end
|
14
40
|
|
15
41
|
def set_action_new
|
@@ -17,6 +17,7 @@ module ToyLocomotive::Router::Controller
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def route_as
|
20
|
+
return "" unless extract_model
|
20
21
|
belongs_chain.map{|m| m.to_s.underscore }.join('_') << (belongs_chain.empty? ? extract_model.to_s.underscore : "_#{extract_model.to_s.underscore}")
|
21
22
|
end
|
22
23
|
|
@@ -47,7 +48,9 @@ module ToyLocomotive::Router::Controller
|
|
47
48
|
end
|
48
49
|
|
49
50
|
def extract_path path, opts={}
|
51
|
+
return '/' if path == 'root'
|
50
52
|
return path if path[0] == '/'
|
53
|
+
return "/#{path.to_s.gsub('_','-').parameterize}" unless extract_model
|
51
54
|
return "#{route_chain}#{extract_model.to_route}/#{path.parameterize}" if opts[:on] == 'member' || path == 'edit'
|
52
55
|
return "#{route_chain}#{extract_model.to_route}" if ['show','update','destroy'].include?(path)
|
53
56
|
return "#{route_chain}/#{extract_model.to_s.underscore.pluralize}" if ['create', 'index'].include?(path)
|
@@ -59,7 +62,9 @@ module ToyLocomotive::Router::Controller
|
|
59
62
|
return route_as if path == 'show'
|
60
63
|
return nil if method != 'get'
|
61
64
|
action = extract_action path, opts
|
62
|
-
path[0] == '/' ? action : "#{action}
|
65
|
+
as = path[0] == '/' ? action : "#{action}"
|
66
|
+
as << "_#{route_as}" if extract_model
|
67
|
+
as
|
63
68
|
end
|
64
69
|
|
65
70
|
def extract_action path, opts={}, method='get'
|
@@ -71,13 +76,13 @@ module ToyLocomotive::Router::Controller
|
|
71
76
|
end
|
72
77
|
|
73
78
|
def extract_model
|
74
|
-
extract_controller.singularize.camelize.constantize
|
79
|
+
extract_controller.singularize.camelize.constantize rescue nil
|
75
80
|
end
|
76
81
|
|
77
82
|
def extract_filter action, path, opts, method
|
78
83
|
return if path[0] == '/'
|
79
84
|
return if %w(index show new edit destroy update create).include? path
|
80
|
-
send :"add_#{opts[:on]}_filter", action
|
85
|
+
send :"add_#{opts[:on]}_filter", action if opts[:on]
|
81
86
|
end
|
82
87
|
|
83
88
|
def append_filters!
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: toy-locomotive
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-11-29 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|