grape-dsl 2.1.0 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: dd5210f2f3fc7cdfc0973a9f972e9e19807cff64
4
- data.tar.gz: c29cf6e0031d3f02f7b9c5db2cbca350affe0561
3
+ metadata.gz: 2abeb7871a3e81c5afdf0c7d2fc19fbd431be3f2
4
+ data.tar.gz: ca8b7280b2bc738d97261b1bbe5d8cd7ee8f7b41
5
5
  SHA512:
6
- metadata.gz: 8f02b572c822716d842b58a836be1bd76d051d695845635605c77cbe4d07e4f4605bd16fc0cf7799d8abecfab464da20f98aba0575e7ef9d4e2727689e2438df
7
- data.tar.gz: 7601cccfdad61d72c31c0fe2f8dca3ee4dc136f9a36956b5747972afecf0ba357f68d0ac42da1c1014ba531de6fc6b4575abade93605215ddfbb5dd94359ddb9
6
+ metadata.gz: 7f0ed9b649f6e167647e1520204b9934a98e9499fa17ee533161d6928ccc39f9b0562502432a7f04d707ebfd94fc694663480ec54a6a04c73914ef61bb7046d8
7
+ data.tar.gz: 0cda8d3626257d01525f2cd3f5c88a56a4f9ebd36586a3a080065a12c6827dfa90303c4306d25737bbb4d057b37f1e5575b5a698772fb9fff1f0dc8e6cdf1c65
data/README.md CHANGED
@@ -141,4 +141,126 @@ here is an example for the use
141
141
 
142
142
  end
143
143
 
144
- ```
144
+ ```
145
+
146
+ ### Documentation
147
+
148
+ a simple but useful documentation generation way
149
+
150
+ ```ruby
151
+
152
+
153
+ class HelloApi < Grape::API
154
+
155
+ #> api call description
156
+ description.desc= "simple api call"
157
+
158
+ #> return body for the documentation
159
+ description.body= {"String"=>"String"}
160
+
161
+ #> or type
162
+ description.content_type= 'JSON'
163
+ #> params for the call
164
+ params do
165
+ requires :something, type: String, desc: "Some string that required"
166
+ end
167
+ #> actual get route generation
168
+ get 'hello' do
169
+ {"hello"=>"world"}
170
+ end
171
+
172
+ end
173
+
174
+
175
+ if ARGV.include?('--generate_documentation)
176
+
177
+ Grape.create_wiki_doc path: (File.join(Dir.pwd,"README.md")),
178
+ desc_files: Dir.glob(File.join Dir.pwd,"doc","*").select{|p| !File.directory?(p) },
179
+ type: :github
180
+
181
+ end
182
+
183
+ ```
184
+
185
+ This will produce the following content in a README.md file
186
+ -----------------------------------------------------------
187
+
188
+
189
+ ## Request: /hello(.:format) call: get part
190
+
191
+ ### Request description
192
+ * simple api call
193
+
194
+ ### request
195
+
196
+ * *method:* GET
197
+ * *path:* /hello(.:format)
198
+ * *headers:*
199
+ * application/json
200
+ * application/text
201
+
202
+
203
+ * _*Parameters*_
204
+ * _something_
205
+ * required: true
206
+ * type: String
207
+ * desc: Some string that required
208
+
209
+
210
+
211
+ ### response
212
+
213
+ #### *body:*
214
+ ```JSON
215
+ {
216
+ "String":"String"
217
+ }
218
+ ```
219
+
220
+
221
+ ### response in case of failure
222
+
223
+ * *Internal Server Error:500*
224
+
225
+ ----
226
+
227
+
228
+ or in plain:
229
+
230
+ ## Request: /hello(.:format) call: get part
231
+
232
+ ### Request description
233
+ * simple api call
234
+
235
+ ### request
236
+
237
+ * *method:* GET
238
+ * *path:* /hello(.:format)
239
+ * *headers:*
240
+ * application/json
241
+ * application/text
242
+
243
+
244
+ * _*Parameters*_
245
+ * _something_
246
+ * required: true
247
+ * type: String
248
+ * desc: Some string that required
249
+
250
+
251
+
252
+ ### response
253
+
254
+ #### *body:*
255
+ ```JSON
256
+ {
257
+ "String":"String"
258
+ }
259
+ ```
260
+
261
+
262
+ ### response in case of failure
263
+
264
+ * *Internal Server Error:500*
265
+
266
+ ----
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2.1.0
1
+ 2.2.0
@@ -2,10 +2,6 @@ module GrapeDSL
2
2
  module Extend
3
3
  module Doc
4
4
 
5
- def syntax_highlight target,wrapper_begin,wrapper_end
6
- return "#{wrapper_begin}#{target}#{wrapper_end}"
7
- end
8
-
9
5
  # helpers for doc generation
10
6
  def wiki_body(route,wrapper_begin,wrapper_end,wrapper_close)
11
7
 
@@ -21,12 +17,12 @@ module GrapeDSL
21
17
  # debugger
22
18
  #end
23
19
 
24
- case route.route_description.class.to_s.downcase
20
+ case true
25
21
 
26
- when "string"
22
+ when route.route_description.class <= ::String
27
23
  params= route.route_params
28
24
 
29
- when "hash"
25
+ when route.route_description.class <= ::Hash
30
26
 
31
27
  if !route.route_description[:content_type].nil?
32
28
  content_type= route.route_description[:content_type]
@@ -40,7 +36,7 @@ module GrapeDSL
40
36
  evalue= "value"
41
37
  end
42
38
 
43
- when "nilclass"
39
+ when route.route_description.class <= ::NilClass
44
40
  params= route.route_params
45
41
  params ||= "no return"
46
42
  content_type= "TXT"
@@ -51,9 +47,9 @@ module GrapeDSL
51
47
 
52
48
  end
53
49
 
54
- case params.class.to_s.downcase
50
+ case true
55
51
 
56
- when "hash"
52
+ when params.class <= ::Hash
57
53
 
58
54
  if params == route.route_params
59
55
  tmp_hash= Hash.new
@@ -63,9 +59,9 @@ module GrapeDSL
63
59
  params= tmp_hash
64
60
  end
65
61
 
66
- params = params.convert_all_value_to_s
62
+ params = params.convert_all_value_to_grape_dsl_format
67
63
 
68
- when "class"
64
+ when params.class <= ::Class
69
65
  begin
70
66
  if params.to_s.include? '::'
71
67
  if params.to_s.downcase.include? 'boolean'
@@ -76,7 +72,7 @@ module GrapeDSL
76
72
  content_type= "TXT"
77
73
  end
78
74
 
79
- when "string"
75
+ when params.class <= ::String
80
76
  content_type= "TXT"
81
77
 
82
78
  else
@@ -93,9 +89,7 @@ module GrapeDSL
93
89
  when "json"
94
90
  begin
95
91
 
96
-
97
-
98
- tmp_array.push syntax_highlight(content_type.to_s,wrapper_begin,wrapper_end)
92
+ tmp_array.push [wrapper_begin,content_type.to_s,wrapper_end].join
99
93
 
100
94
  require "json"
101
95
 
@@ -327,22 +321,35 @@ module GrapeDSL
327
321
  # create request description
328
322
  begin
329
323
  write_out_array.push("\n"+(uni_tab*1)+"#{mheader}Request description")
330
- case route.route_description.class.to_s.downcase
324
+ case true
331
325
 
332
- when "string"
326
+ when route.route_description.class <= String
333
327
  route.route_description.each_line do |one_line|
334
328
  write_out_array.push((uni_tab*2)+htsym+one_line.chomp)
335
329
  end
336
330
 
337
- when "hash"
331
+ when route.route_description.class <= Hash
338
332
  begin
339
- sym_to_find= :desc
340
- if route.route_description[sym_to_find].nil?
341
- sym_to_find= :description
333
+
334
+ description_msg = nil
335
+
336
+ [:d,:desc,:description].each do |sym|
337
+ description_msg ||= route.route_description[sym]
342
338
  end
343
- route.route_description[sym_to_find].each_line do |one_line|
339
+
340
+ if description_msg.class <= String
341
+ description_msg= [*description_msg.split("\n")]
342
+ end
343
+
344
+ description_msg ||= "No description available for this path"
345
+ description_msg= [*description_msg]
346
+
347
+ puts description_msg.inspect
348
+
349
+ description_msg.each do |one_line|
344
350
  write_out_array.push((uni_tab*2)+htsym+one_line.chomp)
345
351
  end
352
+
346
353
  end
347
354
 
348
355
 
@@ -407,6 +414,7 @@ module GrapeDSL
407
414
  write_out_array.push("\n#{mheader}response\n")
408
415
  end
409
416
 
417
+ #> TODO make better implementation for others to use
410
418
  #create route content_type
411
419
  begin
412
420
  if !Grape::Endpoint.config_obj.nil?
@@ -420,7 +428,7 @@ module GrapeDSL
420
428
  write_out_array.push ""
421
429
 
422
430
  end
423
- end
431
+ end if Grape::Endpoint.respond_to?(:config_obj) && Grape::Endpoint.respond_to?(:header_config_obj)
424
432
 
425
433
  # create response bodies
426
434
  begin
@@ -3,17 +3,17 @@ module GrapeDSL
3
3
  module EXT
4
4
 
5
5
  module ArrayMP
6
- def convert_all_value_to_s
6
+ def convert_all_value_to_grape_dsl_format
7
7
 
8
8
  self.count.times do |index|
9
9
 
10
- case self[index].class.to_s.downcase
10
+ case true
11
11
 
12
- when "hash"
13
- self[index].convert_all_value_to_s
12
+ when self[index].class <= Hash
13
+ self[index].convert_all_value_to_grape_dsl_format
14
14
 
15
- when "array"
16
- self[index].convert_all_value_to_s
15
+ when self[index].class <= Array
16
+ self[index].convert_all_value_to_grape_dsl_format
17
17
 
18
18
  else
19
19
  self[index]= self[index].to_s
@@ -28,17 +28,17 @@ module GrapeDSL
28
28
  end
29
29
 
30
30
  module HashMP
31
- def convert_all_value_to_s
31
+ def convert_all_value_to_grape_dsl_format
32
32
 
33
33
  self.each do |key,value|
34
34
 
35
- case value.class.to_s.downcase
35
+ case true
36
36
 
37
- when "hash"
38
- value.convert_all_value_to_s
37
+ when value.class <= Hash
38
+ value.convert_all_value_to_grape_dsl_format
39
39
 
40
- when "array"
41
- value.convert_all_value_to_s
40
+ when value.class <= Array
41
+ value.convert_all_value_to_grape_dsl_format
42
42
 
43
43
  else
44
44
  self[key]= value.to_s
@@ -4,64 +4,22 @@ module GrapeDSL
4
4
 
5
5
  module APIMNT
6
6
 
7
- class Description
8
-
9
- def initialize opts={}
10
- raise unless opts.class <= ::Hash
11
- opts.each{|k,v| self.__send__("#{k}=",v) }
12
- end
13
-
14
- def [] sym
15
- self.__send__ sym.to_s
16
- end
17
-
18
- def []= sym,value
19
- self.__send__ "#{sym.to_s}=",value
20
- end
21
-
22
- attr_accessor :description,:body,:content_type
23
- alias desc= description=
24
- alias desc description
25
- alias type= content_type=
26
- alias type content_type
27
-
28
- def value
29
- {description: description,content_type: content_type,body: body}
30
- end
31
-
32
- end
33
-
34
7
  # defaults
35
8
  # desc -> description for path
36
9
  # body -> return body from the call
37
10
  # convent_type -> real content type
38
- def description(*args)
11
+ def description(opts={})
39
12
 
40
13
  @last_description ||= {}
41
- unless @last_description[:desc].class == ::GrapeDSL::Extend::APIMNT::Description
42
-
43
- var= ::GrapeDSL::Extend::APIMNT::Description.new(*args)
44
-
45
- unless self.content_types.keys.empty?
46
-
47
- content_type_name= nil
48
- [:json,:xml,:txt].each do |element|
49
- if self.content_types.keys.include? element
50
- content_type_name ||= element.to_s.upcase
51
- end
52
- end
53
-
54
- var.content_type= content_type_name if var.content_type.nil?
55
-
56
- end
57
-
58
- var.desc= desc.to_s
59
- @last_description[:desc]= var
60
-
14
+ unless @last_description[:description].class == Hashie::Mash
15
+ @last_description[:description]= Hashie::Mash.new(opts.merge(desc: @last_description[:desc]))
61
16
  end
17
+ return @last_description[:description]
62
18
 
63
- return @last_description[:desc]
19
+ end
64
20
 
21
+ def description= obj
22
+ self.description.desc= obj
65
23
  end
66
24
 
67
25
  # mount all the rest api classes that is subclass of the Grape::API
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: grape-dsl
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0
4
+ version: 2.2.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-06-03 00:00:00.000000000 Z
11
+ date: 2014-06-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mpatch