rails-dsl 0.6.0 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/lib/rails-dsl/routes_ext.rb +95 -128
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 04e1b3b946f8f2897ff8bc2be1fedc2b709bcfd7
|
4
|
+
data.tar.gz: 44fd71741007bc871a55801efd256d7239853d7b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 026b66fb2b258b32855e9a88efd3039cecc73ccfb6a01d2ef96075bbdeb7f5ea76638c2b9b18e68df4515e23c63543c751cb4724b4562b00941e476ea8fe52e3
|
7
|
+
data.tar.gz: 678ac5e394393c751bf3a2349c39b0342ddebcef5c3cd69523555f81527eb2afb9bb9183ad0d4adc071413cf68a49afc4a9dd1ded3b20eafe54840a4c89dc4af
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.7.0
|
data/lib/rails-dsl/routes_ext.rb
CHANGED
@@ -5,105 +5,83 @@ module Rails
|
|
5
5
|
module Helpers
|
6
6
|
class << self
|
7
7
|
|
8
|
-
def
|
9
|
-
|
10
|
-
return "" unless array.class <= ::Array
|
11
|
-
|
12
|
-
var=nil
|
13
|
-
array.each do |ary|
|
8
|
+
def process_opts opts={}
|
14
9
|
|
15
|
-
|
16
|
-
var = ary[1]
|
17
|
-
break
|
18
|
-
end
|
19
|
-
|
20
|
-
end
|
21
|
-
|
22
|
-
if !var.nil?
|
23
|
-
return "/:#{var.join('/:')}"
|
24
|
-
else
|
25
|
-
return ""
|
26
|
-
end
|
27
|
-
|
28
|
-
end
|
29
|
-
|
30
|
-
def process_args *args
|
31
|
-
|
32
|
-
opts= args.select{|e|(e.class <= ::Hash)}.reduce( {}, :merge! )
|
10
|
+
opts = {class: opts} unless opts.class <= ::Hash
|
33
11
|
|
34
12
|
# search for alt keys
|
35
13
|
{
|
36
14
|
|
37
|
-
urls: [:
|
38
|
-
|
39
|
-
|
40
|
-
defaults: [:d,:default],
|
41
|
-
params: [:url_params],
|
42
|
-
ne: [:exception,:exceptions,:ex],
|
15
|
+
urls: [:url,:path,{}],
|
16
|
+
defaults: [:default,{}],
|
17
|
+
ne: [:exception,:exceptions,:ex,[]],
|
43
18
|
|
44
19
|
get: [:read],
|
45
20
|
post: [:create],
|
46
21
|
put: [:update],
|
47
|
-
delete: [:delete]
|
22
|
+
delete: [:delete],
|
23
|
+
|
24
|
+
class: [:klass,:resource,:resources,:controller]
|
48
25
|
|
49
26
|
}.each do |opts_sym,aliases|
|
50
27
|
aliases.each do |alias_sym|
|
51
|
-
opts[opts_sym] ||= opts.delete(alias_sym) || opts.delete(alias_sym.to_s)
|
28
|
+
opts[opts_sym] ||= alias_sym.class == ::Symbol ? opts.delete(alias_sym) || opts.delete(alias_sym.to_s) : alias_sym
|
29
|
+
end
|
30
|
+
if aliases.last.class != ::Symbol
|
31
|
+
raise(ArgumentError,"Invalid object given for #{opts_sym}, should be: #{aliases.last.class}") unless opts[opts_sym].class <= aliases.last.class
|
52
32
|
end
|
53
33
|
end
|
54
34
|
|
55
35
|
# set defaults
|
56
|
-
opts[:defaults] ||= {}
|
57
|
-
opts[:resource] ||= args.select{|e|([::Class,::String,::Symbol].include?(e.class))}[0]
|
58
|
-
|
59
|
-
opts[:params] ||= args.select{|e|(e.class <= ::Array)}
|
60
|
-
opts[:params] ||= []
|
61
|
-
|
62
|
-
opts[:urls] ||= {}
|
63
|
-
opts[:ne] ||= []
|
64
|
-
|
65
36
|
opts[:ne].map!{|method_name_to_sym| method_name_to_sym.to_s.to_sym }
|
66
|
-
|
67
37
|
[:get,:post,:put,:delete,:options].each{|sym| opts[sym] ||= [] ; opts[sym]= [opts[sym]] unless opts[sym].class <= ::Array }
|
68
38
|
|
69
|
-
|
70
|
-
|
71
|
-
|
39
|
+
opts[:short_class_name]= opts[:class].to_s.underscore.split('_')[0]
|
40
|
+
opts[:class] = if opts[:class].class == Class
|
41
|
+
opts[:class]
|
72
42
|
|
73
|
-
|
74
|
-
raise(ArgumentError,"invalid argument for urls group: #{opts[:urls]}.\nmust be something like {method_name: '/path'}")
|
75
|
-
end
|
43
|
+
else
|
76
44
|
|
77
|
-
|
45
|
+
if opts[:class].to_s.include?('_controller')
|
46
|
+
opts[:class].to_s.classify.constantize
|
78
47
|
|
79
|
-
|
80
|
-
|
48
|
+
elsif opts[:class].to_s.include?('Controller')
|
49
|
+
opts[:class].to_s.constantize
|
81
50
|
|
82
|
-
|
51
|
+
else
|
52
|
+
begin
|
53
|
+
opts[:class].to_s.concat('_controller').classify.constantize
|
54
|
+
rescue NameError
|
55
|
+
if opts[:class].to_s == opts[:class].to_s.downcase
|
56
|
+
opts[:class].to_s.classify.constantize
|
57
|
+
|
58
|
+
else
|
59
|
+
opts[:class].to_s.constantize
|
60
|
+
|
61
|
+
end
|
62
|
+
end
|
83
63
|
|
84
|
-
|
85
|
-
|
64
|
+
end
|
65
|
+
end
|
86
66
|
|
87
|
-
opts[:
|
88
|
-
opts[:class] = ( opts[:resource].class == Class ? opts[:resource] : opts[:resource].to_s.concat('_controller').classify.constantize )
|
89
|
-
opts[:pim] = opts[:class].public_instance_methods(false).select{|e|(e.to_s.last != '?')} - opts[:ne]
|
67
|
+
opts[:pim] = opts[:class].public_instance_methods(false).select{|e| !(%W[ ? ! _ ].include?(e.to_s.last)) } - opts[:ne]
|
90
68
|
|
91
69
|
# make setup able method configs
|
92
70
|
opts[:pim].each do |sym|
|
93
71
|
|
94
72
|
sym_str= sym.to_s
|
95
73
|
{
|
96
|
-
get: /_get
|
97
|
-
post: /_post
|
98
|
-
put: /_put
|
99
|
-
delete: /_delete
|
100
|
-
}.each do |type,
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
74
|
+
get: [/_get$/,/^get_/],
|
75
|
+
post: [/_post$/,/^post_/],
|
76
|
+
put: [/_put$/,/^put_/],
|
77
|
+
delete: [/_delete$/,/^delete_/]
|
78
|
+
}.each do |type,regular_expressions|
|
79
|
+
regular_expressions.each do |regex|
|
80
|
+
if sym_str =~ regex
|
81
|
+
opts[type].push(sym)
|
82
|
+
opts[:urls][sym] ||= "/#{sym_str.gsub(regex,"")}"
|
83
|
+
end
|
105
84
|
end
|
106
|
-
|
107
85
|
end
|
108
86
|
|
109
87
|
end
|
@@ -112,50 +90,69 @@ module Rails
|
|
112
90
|
|
113
91
|
end
|
114
92
|
|
115
|
-
|
116
|
-
end
|
117
|
-
|
118
|
-
def mount_controller *args
|
93
|
+
def array_to_url_params array,method_name
|
119
94
|
|
120
|
-
|
121
|
-
if args.size == 1 && args[0].class <= ::Hash
|
122
|
-
opts= args[0]
|
123
|
-
else
|
124
|
-
opts= Rails::DSL::ActionDispatchRouteEXT::Helpers.process_args(*args)
|
125
|
-
end
|
95
|
+
return "" unless array.class <= ::Array
|
126
96
|
|
127
|
-
|
97
|
+
var=nil
|
98
|
+
array.each do |ary|
|
128
99
|
|
129
|
-
|
100
|
+
if ary[0].to_s == method_name.to_s
|
101
|
+
var = ary[1]
|
102
|
+
break
|
103
|
+
end
|
130
104
|
|
131
|
-
|
105
|
+
end
|
132
106
|
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
end
|
107
|
+
if !var.nil?
|
108
|
+
return "/:#{var.join('/:')}"
|
109
|
+
else
|
110
|
+
return ""
|
138
111
|
end
|
139
112
|
|
140
|
-
|
113
|
+
end
|
141
114
|
|
142
|
-
|
115
|
+
end
|
116
|
+
end
|
143
117
|
|
144
|
-
|
145
|
-
|
146
|
-
{to: "#{opts[:short_class_name]}##{method_name}", defaults: opts[:defaults].dup }
|
147
|
-
|
148
|
-
end
|
118
|
+
def mount_by(opts={})
|
119
|
+
opts = Helpers.process_opts(opts)
|
149
120
|
|
121
|
+
if opts[:class]
|
122
|
+
mount_controller opts
|
150
123
|
end
|
151
124
|
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
125
|
+
end
|
126
|
+
|
127
|
+
def mount_controller(opts={})
|
128
|
+
|
129
|
+
opts[:pim].each do |method_name|
|
130
|
+
|
131
|
+
# #> override methods if instance method variable detected, and will passed as input from params
|
132
|
+
# begin
|
133
|
+
# var= opts[:class].constantize.instance_method(method_name)
|
134
|
+
# unless var.parameters.select{|ary|(ary[0] ==:req)}.empty?
|
135
|
+
# define_method(method_name) do
|
136
|
+
# var.bind(self).call(*var.parameters.select{|ary|(ary[0] == :req)}.map{|ary| ary[1] }.map{ |param_key| params[param_key] })
|
137
|
+
# end
|
138
|
+
# end
|
139
|
+
# end
|
140
|
+
|
141
|
+
#> build path by method name
|
142
|
+
method_to_use= nil
|
143
|
+
[:get,:post,:put,:delete,:options].each do |pre_spec_method_call_type|
|
144
|
+
if opts[pre_spec_method_call_type].include?(method_name)
|
145
|
+
method_to_use ||= pre_spec_method_call_type
|
146
|
+
end
|
156
147
|
end
|
157
|
-
|
158
|
-
|
148
|
+
method_to_use ||= :match
|
149
|
+
|
150
|
+
url_path = opts[:urls][method_name].nil? ? "/#{method_name}" : opts[:urls][method_name].to_s
|
151
|
+
|
152
|
+
self.__send__ method_to_use,
|
153
|
+
"#{url_path}#{Helpers.array_to_url_params(opts[:params],method_name)}",
|
154
|
+
{to: "#{opts[:short_class_name]}##{method_name}", defaults: opts[:defaults].dup }
|
155
|
+
|
159
156
|
end
|
160
157
|
|
161
158
|
return nil
|
@@ -172,25 +169,7 @@ module Rails
|
|
172
169
|
|
173
170
|
opts[:pim].each do |sym|
|
174
171
|
|
175
|
-
var= self.instance_method(sym)
|
176
|
-
parameters= []
|
177
|
-
|
178
|
-
unless var.parameters.select{|ary|(ary[0] ==:req)}.empty?
|
179
|
-
parameters += var.parameters.select{|ary|(ary[0] ==:req)}.map{|ary| ary[1] }
|
180
|
-
conv_params.push [ sym, parameters ]
|
181
|
-
end
|
182
|
-
|
183
|
-
define_method(sym) do
|
184
|
-
|
185
|
-
value= var.bind(self).call(*parameters.map{ |param_key| params[param_key] })
|
186
172
|
|
187
|
-
respond_to do |format|
|
188
|
-
format.html
|
189
|
-
format.json { render json: value }
|
190
|
-
format.xml { render xml: value }
|
191
|
-
end
|
192
|
-
|
193
|
-
end
|
194
173
|
|
195
174
|
end
|
196
175
|
|
@@ -204,19 +183,7 @@ module Rails
|
|
204
183
|
end
|
205
184
|
alias mount_rendered_controller mount_controller_with_render
|
206
185
|
|
207
|
-
def get_controller_names *path
|
208
|
-
path += ['app','controllers','*_controller.{ru,rb}'] if path.empty?
|
209
|
-
return Dir.glob(::Rails.root.join(*path)).map{|p| p.split(File::Separator).last.split('_controller')[0].to_sym }
|
210
|
-
end
|
211
|
-
|
212
|
-
def mount_controllers
|
213
|
-
get_controller_names.each { |cn| mount_controller(cn) }
|
214
|
-
end
|
215
186
|
|
216
|
-
def mount_controllers_with_render
|
217
|
-
get_controller_names.each{ |cn| mount_controller_with_render(cn) }
|
218
|
-
end
|
219
|
-
alias mount_rendered_controllers mount_controllers_with_render
|
220
187
|
|
221
188
|
end
|
222
189
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails-dsl
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Adam Luzsi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-07-
|
11
|
+
date: 2014-07-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|