sinatra-docdsl 0.8.3 → 0.8.4

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.
Files changed (3) hide show
  1. checksums.yaml +4 -12
  2. data/lib/docdsl.rb +76 -76
  3. metadata +7 -7
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: !binary |-
4
- MzkxOTc5MTA5MjQ3MjA3ZDU2YjYxNzU3MTcwZTMxOGVjZWE3NGM0ZQ==
5
- data.tar.gz: !binary |-
6
- OGIzYTJiNDE4ZmRiYTMxNDgxYmMxNDJmMWUzOGVhZGRkOTk0NjBmOQ==
3
+ metadata.gz: 50ed51e11b947de2d96212b08c9a577f5d182525
4
+ data.tar.gz: f48deba4353e341b1adf8f38aecf8ffb6db81180
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- YmFjNTk3MWE3MWRiZWY3ZTU1ODUyNDMyYTUwNjIwMDA2MzJjNmFlZGNjN2Ji
10
- NzA2ODc1ZWJmY2EyZDI3Yjg0ZWQ0MWZkYTdhNzYwMjliZDY4NWQzZjIyOWFk
11
- OWUzOGM4MjdkMjE0NjQ0ODA2NGY4YTU0YTE1ODhhZjk3ZGU1OWY=
12
- data.tar.gz: !binary |-
13
- NGZmYjc0NTJlZDEyNjJiNzQxYjlmZmMyY2M3MDlmNjI4ZTljMTdlYmRiZTIz
14
- NGJhZWEyOWM4MGVjNzFiNjgyMWIzZTIyMTM3OWM0Mzc1ZmJjNDA4NGUxZmZk
15
- MmVkNDJiM2U1NWNhMThkNWZjNGM5ODI4ODk1MzEzMDhmMjI0Zjg=
6
+ metadata.gz: ff01d25759bd3d99288f1e6a5b1f44d6b81465b5eeeba6f3f42f8bf40d2f3681d541a91553d61bbdbb215b2a14cbb33c4d97ebf60a842f0970ebaa33ee8e1d8b
7
+ data.tar.gz: ef6cf62bfa46d797e64a6c92f90445e1e6b6ae0eddd086a625c1e6b4a0987453c9d9bb748e1292a1986810c23701841cda0c02a14b4838732852b2dadd6e3a81
data/lib/docdsl.rb CHANGED
@@ -5,7 +5,7 @@ module Sinatra
5
5
  module DocDsl
6
6
  class PageDoc
7
7
  attr_accessor :the_title,:the_header,:the_footer,:the_introduction,:entries,:the_url_prefix
8
-
8
+
9
9
  def initialize(&block)
10
10
  @the_title='DocDSL Documentation'
11
11
  @the_header="API"
@@ -24,35 +24,35 @@ module Sinatra
24
24
  end
25
25
  end
26
26
  end
27
-
27
+
28
28
  def title(t)
29
29
  @the_title=t
30
30
  end
31
-
31
+
32
32
  def header(h)
33
33
  @the_header=h
34
34
  end
35
-
35
+
36
36
  def footer(f)
37
37
  @the_footer=f
38
38
  end
39
-
39
+
40
40
  def introduction(i)
41
41
  @the_introduction=i
42
42
  end
43
-
43
+
44
44
  def configure_renderer(&block)
45
45
  @render_function=block
46
- end
47
-
46
+ end
47
+
48
48
  def render
49
49
  @render_function.call
50
50
  end
51
-
51
+
52
52
  def url_prefix(prefix)
53
53
  @the_url_prefix=prefix
54
54
  end
55
-
55
+
56
56
  def json
57
57
  entries=[]
58
58
  @entries.each do |entry|
@@ -62,11 +62,11 @@ module Sinatra
62
62
  :title=> @the_title,:header=>@the_header,:footer=>@the_footer,:introduction=>@the_introduction,
63
63
  :endPoints=>entries
64
64
  }
65
-
65
+
66
66
  [200,{'content-type' => 'application/json;charset=UTF8'},object.to_json]
67
67
  end
68
-
69
- def definition_list(title, definitions)
68
+
69
+ def definition_list(title, definitions)
70
70
  if definitions.length > 0
71
71
  definitions.inject("### #{title}\n\n") do | dl, (k,v) |
72
72
  dl << "
@@ -78,7 +78,7 @@ module Sinatra
78
78
  ''
79
79
  end
80
80
  end
81
-
81
+
82
82
  def render_md
83
83
  begin
84
84
  html=Kramdown::Document.new(to_markdown).to_html
@@ -104,15 +104,15 @@ HTML
104
104
  [500,"oops, #{e.to_s}\n#{e.backtrace}"]
105
105
  end
106
106
  end
107
-
107
+
108
108
  def md
109
109
  [200,{'content-type' => 'text/plain;charset=UTF8'},to_markdown]
110
110
  end
111
-
111
+
112
112
  def to_markdown
113
113
  markdown="
114
114
  #{@the_header}
115
-
115
+
116
116
  # #{@the_title}
117
117
 
118
118
  #{@the_introduction}
@@ -123,36 +123,36 @@ HTML
123
123
  params = definition_list("Url Parameters", entry.params)
124
124
  query_params = definition_list("Query Parameters", entry.query_params)
125
125
  header_params = definition_list("Header Parameters", entry.headers)
126
-
126
+
127
127
  if entry.the_payload
128
128
  payload="
129
129
  ### Request body
130
130
 
131
- #{entry.the_payload}
132
-
131
+ #{entry.the_payload}
132
+
133
133
  "
134
134
  if(entry.sample_request)
135
135
  payload << "
136
136
  ~~~ javascript
137
- #{JSON.pretty_generate(entry.sample_request)}
137
+ #{::JSON.pretty_generate(entry.sample_request)}
138
138
  ~~~
139
139
 
140
140
  "
141
141
  end
142
142
  end
143
143
  payload ||=''
144
-
145
-
146
- if entry.the_response
144
+
145
+
146
+ if entry.the_response
147
147
  response="
148
148
  ### Response
149
149
  #{entry.the_response}
150
150
 
151
- "
151
+ "
152
152
  if(entry.sample_response)
153
153
  response << "
154
154
  ~~~ javascript
155
- #{JSON.pretty_generate(entry.sample_response)}
155
+ #{::JSON.pretty_generate(entry.sample_response)}
156
156
  ~~~
157
157
 
158
158
  "
@@ -180,13 +180,13 @@ HTML
180
180
  #{status_codes}
181
181
  "
182
182
  end
183
-
183
+
184
184
  markdown << "
185
185
  #{@the_footer}
186
186
  "
187
187
  markdown
188
188
  end
189
-
189
+
190
190
  def html
191
191
  begin
192
192
  body= <<-HTML
@@ -203,7 +203,7 @@ HTML
203
203
  <div id="container">
204
204
  <h1 id="title">#{@the_header}</h1>
205
205
  <p>#{@the_introduction}</p>
206
-
206
+
207
207
  #{render_html_entries}
208
208
  <br/>
209
209
  <hr>
@@ -215,10 +215,10 @@ HTML
215
215
  [200,{'content-type' => 'text/html;charset=UTF8'},body]
216
216
  rescue => e
217
217
  [500,"oops, #{e.to_s}\n#{e.backtrace}"]
218
- end
219
- end
220
-
221
- def render_html_entries
218
+ end
219
+ end
220
+
221
+ def render_html_entries
222
222
  @entries.inject('') { | markup, entry|
223
223
  path = entry.paths.join(', ')
224
224
  if entry.params.length >0
@@ -228,16 +228,16 @@ HTML
228
228
  params << "</dl>\n"
229
229
  end
230
230
  params ||= ''
231
-
231
+
232
232
  if entry.query_params.length >0
233
233
  query_params = entry.query_params.inject("<h3>Query Parameters</h3>\n<dl>") { |li,(k,v)|
234
234
  li << "<dt>:%s</dt><dd>%s</dd>" % [k,v]
235
235
  }
236
236
  query_params << "</dl>\n"
237
- end
237
+ end
238
238
  query_params ||=''
239
-
240
-
239
+
240
+
241
241
  if entry.headers.length >0
242
242
  headers = entry.headers.inject("<h3>Header Parameters</h3>\n<dl>") { |li,(k,v)|
243
243
  li << "<dt>%s</dt><dd>%s</dd>" % [k,v]
@@ -245,11 +245,11 @@ HTML
245
245
  headers << "</dl>\n"
246
246
  end
247
247
  headers ||= ''
248
-
248
+
249
249
  if entry.the_payload
250
250
  payload="<dt>Payload</dt><dd>#{entry.the_payload}\n"
251
251
  if(entry.sample_request)
252
- payload << "<pre>#{JSON.pretty_generate(entry.sample_request)}</pre>"
252
+ payload << "<pre>#{::JSON.pretty_generate(entry.sample_request)}</pre>"
253
253
  end
254
254
  payload << "</dd>"
255
255
  end
@@ -263,10 +263,10 @@ HTML
263
263
  end
264
264
  status_codes << "</dl>\n"
265
265
  end
266
-
267
- response="<dt>Response</dt><dd>#{entry.the_response}\n#{statuscodes}\n"
266
+
267
+ response="<dt>Response</dt><dd>#{entry.the_response}\n#{statuscodes}\n"
268
268
  if(entry.sample_response)
269
- response << "<pre>#{JSON.pretty_generate(entry.sample_response)}</pre>"
269
+ response << "<pre>#{::JSON.pretty_generate(entry.sample_response)}</pre>"
270
270
  end
271
271
  response << "</dd>"
272
272
  end
@@ -276,19 +276,19 @@ HTML
276
276
  } << ""
277
277
  end
278
278
  end
279
-
279
+
280
280
  class DocEntry
281
281
  attr_accessor :desc,:params,:paths,:query_params,:headers,:the_payload,:the_response,:sample_request,:sample_response,:status_codes
282
-
282
+
283
283
  def initialize(description, &block)
284
284
  @paths=[]
285
285
  @desc=description
286
286
  @params={}
287
287
  @query_params={}
288
- @headers={}
288
+ @headers={}
289
289
  @the_payload=nil
290
290
  @sample_request=nil
291
- @the_response=nil
291
+ @the_response=nil
292
292
  @sample_response=nil
293
293
  @status_codes={}
294
294
  if(block)
@@ -299,41 +299,41 @@ HTML
299
299
  end
300
300
  end
301
301
  end
302
-
302
+
303
303
  def <<(path)
304
304
  self.paths << path
305
305
  end
306
-
306
+
307
307
  def to_s
308
308
  self.inspect
309
309
  end
310
-
310
+
311
311
  def describe(desc)
312
312
  @desc=desc
313
313
  end
314
-
314
+
315
315
  def payload(desc, example=nil)
316
316
  @the_payload=desc
317
317
  @sample_request=example
318
318
  end
319
-
319
+
320
320
  def response(desc,example=nil)
321
- @the_response=desc
322
- @sample_response=example
321
+ @the_response=desc
322
+ @sample_response=example
323
323
  end
324
-
324
+
325
325
  def param(name,desc)
326
- @params[name]=desc
326
+ @params[name]=desc
327
327
  end
328
-
328
+
329
329
  def header(name,desc)
330
- @headers[name]=desc
330
+ @headers[name]=desc
331
331
  end
332
-
332
+
333
333
  def query_param(name,desc)
334
- @query_params[name]=desc
334
+ @query_params[name]=desc
335
335
  end
336
-
336
+
337
337
  def status(code,meaning=nil)
338
338
  official_meaning=status_codes_map[code]
339
339
  if meaning
@@ -342,7 +342,7 @@ HTML
342
342
  @status_codes[code]=official_meaning
343
343
  end
344
344
  end
345
-
345
+
346
346
  def status_codes_map
347
347
  {
348
348
  100=> 'Continue',
@@ -385,44 +385,44 @@ HTML
385
385
  503=> 'Temporarily Unavailable'
386
386
  }
387
387
  end
388
-
388
+
389
389
  def json
390
390
  {
391
- :description=>@desc,
392
- :url_parameters=>@params,
393
- :paths=>@paths,
394
- :query_parameters=>@query_params,
395
- :headers=>@headers,
396
- :payload=>@the_payload,
391
+ :description=>@desc,
392
+ :url_parameters=>@params,
393
+ :paths=>@paths,
394
+ :query_parameters=>@query_params,
395
+ :headers=>@headers,
396
+ :payload=>@the_payload,
397
397
  :sample_request=>@sample_request,
398
398
  :response=>@the_response,
399
399
  :status_codes=>@status_codes,
400
400
  :sample_response=>@sample_response
401
401
  }
402
402
  end
403
- end
404
-
405
- def doc_endpoint(path)
403
+ end
404
+
405
+ def doc_endpoint(path)
406
406
  page_doc=@page_doc
407
- get path do
407
+ get path do
408
408
  begin
409
409
  page_doc.render
410
410
  rescue Exception=>e
411
411
  [500,"#{e.message} #{e.backtrace.inspect}"]
412
412
  end
413
- end
413
+ end
414
414
  end
415
-
415
+
416
416
  def page(&block)
417
417
  @page_doc ||= PageDoc.new(&block)
418
418
  end
419
-
419
+
420
420
  def documentation(description,&block)
421
421
  @page_doc ||= PageDoc.new
422
422
  @last_doc=DocEntry.new(description,&block)
423
423
  (@page_doc.entries ||= []) << @last_doc
424
424
  end
425
-
425
+
426
426
  def method_added(method)
427
427
  # gets called everytime a method is added to the app.
428
428
  # only triggers if the previous method was a documentation ... call
metadata CHANGED
@@ -1,25 +1,25 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sinatra-docdsl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.3
4
+ version: 0.8.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jilles van Gurp
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-09-30 00:00:00.000000000 Z
11
+ date: 2014-02-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: kramdown
15
15
  version_requirements: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - '>='
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
20
  requirement: !ruby/object:Gem::Requirement
21
21
  requirements:
22
- - - ">="
22
+ - - '>='
23
23
  - !ruby/object:Gem::Version
24
24
  version: '0'
25
25
  prerelease: false
@@ -41,17 +41,17 @@ require_paths:
41
41
  - lib
42
42
  required_ruby_version: !ruby/object:Gem::Requirement
43
43
  requirements:
44
- - - ">="
44
+ - - '>='
45
45
  - !ruby/object:Gem::Version
46
46
  version: '0'
47
47
  required_rubygems_version: !ruby/object:Gem::Requirement
48
48
  requirements:
49
- - - ">="
49
+ - - '>='
50
50
  - !ruby/object:Gem::Version
51
51
  version: '0'
52
52
  requirements: []
53
53
  rubyforge_project:
54
- rubygems_version: 2.0.3
54
+ rubygems_version: 2.1.11
55
55
  signing_key:
56
56
  specification_version: 4
57
57
  summary: Documentation DSL for Sinatra