documentary 0.1.0 → 0.1.1

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: 3ead34348f2423c01e41ed552a763454622c704a
4
- data.tar.gz: 30fe4374be10722e56c6d9f24f1ed532fb51752d
3
+ metadata.gz: 0cd2c7bca305075774d21b7fe6aaa73a5c8adc4c
4
+ data.tar.gz: 7de58c814f31b1c2c0ae0d17ad21b2656143b0a8
5
5
  SHA512:
6
- metadata.gz: 405f93a4c0352eefbc7c9f98cfaecd597a813c5413bff0803abf7f6d7b04e4d5a5a7e17ad0a57d6d564bf2c845d72a8301cc3d6b2cefee60f566e7cf4bc1c186
7
- data.tar.gz: 649f53fa435e6aae7e299057340545d2488e89302ac0b233a70709414c06f347d2982d71e34cdb3620c4e53cde41c0b6ea3ea26dfacb84a9acbf0c6ea1ced143
6
+ metadata.gz: a0153f941656a662f53108687263880f8774aa9aa4a5df018b44a11776525482912cc8110c608f8dd70f5a4503ddb8dde30b851e1046002924023898bff99c75
7
+ data.tar.gz: afb5123c1d0b2c7e1bb4fb40ae5234df835401a5ca256a742ee00cde3717aa935377cbdc36ed80c6513840bb723a2711a91c50bfaf26694e31fb5efdc770190d
data/Gemfile.lock CHANGED
@@ -1,13 +1,13 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- documentary (0.1.0)
4
+ documentary (0.1.1)
5
5
  activesupport
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
- activesupport (4.2.0)
10
+ activesupport (4.2.6)
11
11
  i18n (~> 0.7)
12
12
  json (~> 1.7, >= 1.7.7)
13
13
  minitest (~> 5.1)
@@ -15,10 +15,10 @@ GEM
15
15
  tzinfo (~> 1.1)
16
16
  byebug (9.0.5)
17
17
  i18n (0.7.0)
18
- json (1.8.2)
18
+ json (1.8.3)
19
19
  minitest (5.4.3)
20
20
  rake (10.3.2)
21
- thread_safe (0.3.4)
21
+ thread_safe (0.3.5)
22
22
  tzinfo (1.2.2)
23
23
  thread_safe (~> 0.1)
24
24
 
data/README.md CHANGED
@@ -6,20 +6,19 @@ A simple tool that will allow you to generate API runnable documentation quickly
6
6
  >
7
7
  > -- <cite>Kathy Sierra</cite>
8
8
 
9
- ## Todos
10
-
11
- * [X] Build the parser
12
- * [X] Integration Test
13
- * [X] Title Blocks
14
- * [X] Ordering
15
- * [X] Resource Blocks
16
- * [X] Endpoint Blocks
17
- * [X] Introduce Generation config
18
- * [X] Introduce view helpers
19
- * [ ] CLI design
20
- * [ ] TOC for documentation
21
- * [ ] Start being more strict on specification for MD generation?
22
- * [ ] Create testing suite
9
+ [Example of the documentation generated](https://gist.github.com/bangline/edeb0201b13b2721be3764f5fa0c76d5)
10
+
11
+ ## Installation
12
+
13
+ ```
14
+ gem install documentary
15
+ ```
16
+
17
+ Or in your Gemfile:
18
+
19
+ ```
20
+ gem 'documentary'
21
+ ```
23
22
 
24
23
  ## Specification
25
24
 
data/documentary.gemspec CHANGED
@@ -5,7 +5,8 @@ Gem::Specification.new do |s|
5
5
  s.name = 'documentary'
6
6
  s.version = Documentary::VERSION
7
7
  s.summary = 'Documentary'
8
- s.description = 'Simple, useable, runnable API documentation'
8
+ s.homepage = 'https://github.com/bangline/documentary'
9
+ s.description = 'Simple, useable, maintainable API documentation'
9
10
  s.authors = ['Dave Kennedy']
10
11
  s.email = 'david@bangline.co.uk'
11
12
  s.files = `git ls-files`.split("\n")
@@ -1,5 +1,9 @@
1
1
  # <%= project_name %>
2
2
 
3
+ ## Contents
4
+
5
+ <%= toc %>
6
+
3
7
  <%= title_blocks %>
4
8
  <%= resource_blocks %>
5
9
  <%= endpoint_blocks %>
@@ -1,3 +1,3 @@
1
1
  module Documentary
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
@@ -2,6 +2,21 @@ module Documentary
2
2
  module View
3
3
  require 'stringio'
4
4
 
5
+ def toc
6
+ io = StringIO.new
7
+ io.puts "### [Resources](#resources)"
8
+ io.puts new_line
9
+ docblocks.resources.each do |resource|
10
+ io.puts "* #{link_to(resource.title)}"
11
+ end
12
+ io.puts new_line
13
+ io.puts "### [Endpoints](#endpoints)"
14
+ docblocks.endpoints.each do |endpoint|
15
+ io.puts "* #{link_to(endpoint.title)}"
16
+ end
17
+ io.string
18
+ end
19
+
5
20
  def title_blocks
6
21
  io = StringIO.new
7
22
  docblocks.title_blocks.each do |title_block|
@@ -15,10 +30,10 @@ module Documentary
15
30
 
16
31
  def resource_blocks
17
32
  io = StringIO.new
18
- io.puts '## Resources'
33
+ io.puts "## #{link_to('Resources')}"
19
34
  io.puts new_line
20
35
  docblocks.resources.each do |resource|
21
- io.puts "### #{resource.title}"
36
+ io.puts "### #{link_to(resource.title)}"
22
37
  io.puts new_line
23
38
  io.puts resource.description
24
39
  io.puts new_line
@@ -30,10 +45,10 @@ module Documentary
30
45
 
31
46
  def endpoint_blocks
32
47
  io = StringIO.new
33
- io.puts '## Endpoints'
48
+ io.puts "## #{link_to('Endpoints')}"
34
49
  io.puts new_line
35
50
  docblocks.endpoints.each do |endpoint|
36
- io.puts "### #{endpoint.title}"
51
+ io.puts "### #{link_to(endpoint.title)}"
37
52
  io.puts new_line
38
53
  io.puts endpoint.notes if endpoint.notes
39
54
  io.puts new_line
@@ -85,6 +100,10 @@ module Documentary
85
100
 
86
101
  private
87
102
 
103
+ def link_to(title)
104
+ "[#{title}](##{title.downcase.gsub(' ', '-')})"
105
+ end
106
+
88
107
  def resource_attributes(resource, io)
89
108
  io.puts '#### Attributes'
90
109
  io.puts new_line
@@ -16,11 +16,11 @@ class Minitest::Test
16
16
  end
17
17
 
18
18
  def assert_has_resource_title
19
- assert_includes generated_docs, "## Resources"
19
+ assert_includes generated_docs, "## [Resources](#resources)"
20
20
  end
21
21
 
22
22
  def assert_has_enpoints_title
23
- assert_includes generated_docs, "## Endpoints"
23
+ assert_includes generated_docs, "## [Endpoints](#endpoints)"
24
24
  end
25
25
 
26
26
  def assert_has_third_level_heading(heading)
@@ -28,10 +28,10 @@ class Minitest::Test
28
28
  end
29
29
 
30
30
  def assert_content_for_resource(resource, content)
31
- assert_match /### #{resource}\n\n#{content}/, generated_docs
31
+ assert_match /### \[#{resource}\]\(##{resource.downcase.gsub(' ', '-')}\)\n\n#{content}/, generated_docs
32
32
  end
33
33
 
34
34
  def assert_table_entry_for_resource(resource, row_content)
35
35
  assert_match /### #{resource}[.+]#{row_content[:name]} | #{row_content[:required]} | #{row_content[:type]}/, generated_docs
36
36
  end
37
- end
37
+ end
@@ -35,7 +35,7 @@ class Documentary::IntegrationTest < MiniTest::Test
35
35
  end
36
36
 
37
37
  test 'named resources are correctly generated' do
38
- assert_has_third_level_heading 'A Resource'
38
+ assert_includes generated_docs, '### [A Resource](#a-resource)'
39
39
  end
40
40
 
41
41
  test 'named resources descriptions are correctly generated' do
@@ -51,7 +51,7 @@ class Documentary::IntegrationTest < MiniTest::Test
51
51
  end
52
52
 
53
53
  test 'named enpoints are correctly generated' do
54
- assert_includes generated_docs, '### List endpoint'
54
+ assert_includes generated_docs, '### [List endpoint](#list-endpoint)'
55
55
  end
56
56
 
57
57
  test 'enpoint url is generated' do
@@ -77,4 +77,12 @@ class Documentary::IntegrationTest < MiniTest::Test
77
77
  assert_includes generated_docs, "#### Example Response\n\n```\n"
78
78
  assert_includes generated_docs, "\"page\": 1,\n"
79
79
  end
80
+
81
+ test 'TOC is generated' do
82
+ assert_includes generated_docs, "## Contents\n"
83
+ assert_includes generated_docs, "### [Resources](#resources)\n"
84
+ assert_includes generated_docs, "* [A Resource](#a-resource)\n"
85
+ assert_includes generated_docs, "### [Endpoints](#endpoints)\n"
86
+ assert_includes generated_docs, "* [List endpoint](#list-endpoint)\n"
87
+ end
80
88
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: documentary
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dave Kennedy
@@ -52,7 +52,7 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: 10.3.2
55
- description: Simple, useable, runnable API documentation
55
+ description: Simple, useable, maintainable API documentation
56
56
  email: david@bangline.co.uk
57
57
  executables:
58
58
  - documentary