grape-dsl 2.1.0 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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