double_doc 2.0.0 → 2.0.1
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 +7 -0
- data/lib/double_doc.rb +1 -0
- data/lib/double_doc/client.rb +67 -0
- data/lib/double_doc/html_generator.rb +2 -1
- data/lib/double_doc/import_handler.rb +20 -17
- data/lib/double_doc/task.rb +15 -35
- data/lib/double_doc/version.rb +1 -1
- data/readme.md +12 -9
- data/test/client_test.rb +51 -0
- data/test/html_generator_test.rb +8 -3
- data/test/import_handler_test.rb +17 -6
- metadata +28 -45
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 0b493c229ee510da46837763b4a16a77430c1995
|
4
|
+
data.tar.gz: f2221645c30250b611de735808feaff8901a9439
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 2eb54cc44d17e555cad20baf5c19c329fbef31ed16af3e26a251e91030a7046042fcd72c7029bc132f5d45fcbb726ea93764b348134acd1736bda08bfcd0ba81
|
7
|
+
data.tar.gz: b49bd054fecd71297b57c01deea107f3375be701d411349fa6a106d90cb538c8b008770b4d5397f9c42f690413cd761afd6e5cd2ac7b30cf022e4187ddd4f836
|
data/lib/double_doc.rb
CHANGED
@@ -0,0 +1,67 @@
|
|
1
|
+
require 'double_doc/import_handler'
|
2
|
+
require 'double_doc/html_generator'
|
3
|
+
|
4
|
+
module DoubleDoc
|
5
|
+
class Client
|
6
|
+
attr_reader :md_sources, :options
|
7
|
+
|
8
|
+
def initialize(md_sources, options = {})
|
9
|
+
@md_sources = [md_sources].flatten
|
10
|
+
@options = options
|
11
|
+
end
|
12
|
+
|
13
|
+
def process
|
14
|
+
sources = md_sources.map do |source|
|
15
|
+
if source.to_s =~ /\*/
|
16
|
+
import_handler.load_paths.map do |path|
|
17
|
+
Dir.glob(File.join(path, source))
|
18
|
+
end
|
19
|
+
else
|
20
|
+
import_handler.find_file(source).path
|
21
|
+
end
|
22
|
+
end.flatten.uniq
|
23
|
+
|
24
|
+
generated_md_files = []
|
25
|
+
|
26
|
+
md_dst = Pathname.new(options[:md_destination])
|
27
|
+
system('mkdir', '-p', md_dst.to_s)
|
28
|
+
sources.each do |src|
|
29
|
+
next if File.directory?(src)
|
30
|
+
dst = md_dst + File.basename(src)
|
31
|
+
puts "#{src} -> #{dst}" unless options[:quiet]
|
32
|
+
|
33
|
+
if src.to_s =~ /\.md$/
|
34
|
+
body = import_handler.resolve_imports(File.new(src))
|
35
|
+
else
|
36
|
+
body = File.read(src)
|
37
|
+
end
|
38
|
+
|
39
|
+
File.open(dst, 'w') do |out|
|
40
|
+
out.write(body)
|
41
|
+
end
|
42
|
+
|
43
|
+
generated_md_files << dst
|
44
|
+
end
|
45
|
+
|
46
|
+
args = options[:args] || {}
|
47
|
+
html_dst = Pathname.new(options[:html_destination]) if options[:html_destination]
|
48
|
+
if html_dst || args[:html_destination]
|
49
|
+
html_generator = DoubleDoc::HtmlGenerator.new(generated_md_files, options.merge(args))
|
50
|
+
html_generator.generate
|
51
|
+
end
|
52
|
+
|
53
|
+
sources
|
54
|
+
end
|
55
|
+
|
56
|
+
private
|
57
|
+
|
58
|
+
def import_handler
|
59
|
+
return @import_handler if defined?(@import_handler)
|
60
|
+
|
61
|
+
roots = options[:roots] || [File.dirname(__FILE__)]
|
62
|
+
import_options = options.fetch(:import, {})
|
63
|
+
roots << { :quiet => options[:quiet] }.merge(import_options)
|
64
|
+
@import_handler = DoubleDoc::ImportHandler.new(*roots)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
@@ -14,6 +14,7 @@ module DoubleDoc
|
|
14
14
|
@html_renderer = options[:html_renderer] || HtmlRenderer
|
15
15
|
@stylesheet = options[:html_css] || DEFAULT_CSS
|
16
16
|
@title = options[:title] || 'Documentation'
|
17
|
+
@quiet = options[:quiet] == true
|
17
18
|
@exclude_from_navigation = options[:exclude_from_navigation] || []
|
18
19
|
end
|
19
20
|
|
@@ -32,7 +33,7 @@ module DoubleDoc
|
|
32
33
|
end
|
33
34
|
|
34
35
|
dst = @output_directory + path
|
35
|
-
puts "#{src} -> #{dst}"
|
36
|
+
puts "#{src} -> #{dst}" unless @quiet
|
36
37
|
FileUtils.mkdir_p(File.dirname(dst))
|
37
38
|
|
38
39
|
if from_markdown
|
@@ -4,11 +4,14 @@ require 'bundler'
|
|
4
4
|
|
5
5
|
module DoubleDoc
|
6
6
|
class ImportHandler
|
7
|
-
attr_reader :
|
7
|
+
attr_reader :load_paths
|
8
8
|
|
9
|
-
def initialize(
|
10
|
-
|
11
|
-
|
9
|
+
def initialize(*roots)
|
10
|
+
options = roots.pop if roots.last.is_a?(Hash)
|
11
|
+
options ||= {}
|
12
|
+
|
13
|
+
@load_paths = roots.map {|root| Pathname.new(root)}
|
14
|
+
@quiet = options[:quiet] == true
|
12
15
|
|
13
16
|
if options[:gemfile]
|
14
17
|
begin
|
@@ -35,6 +38,18 @@ module DoubleDoc
|
|
35
38
|
end
|
36
39
|
end
|
37
40
|
|
41
|
+
def find_file(path)
|
42
|
+
load_path = @load_paths.detect do |load_path|
|
43
|
+
(load_path + path).exist?
|
44
|
+
end
|
45
|
+
|
46
|
+
unless load_path
|
47
|
+
raise LoadError, "No such file or directory: #{path}"
|
48
|
+
end
|
49
|
+
|
50
|
+
File.new(load_path + path)
|
51
|
+
end
|
52
|
+
|
38
53
|
protected
|
39
54
|
|
40
55
|
def load_paths_from_gemfile(root)
|
@@ -45,7 +60,7 @@ module DoubleDoc
|
|
45
60
|
end
|
46
61
|
|
47
62
|
with_gemfile(gemfile) do
|
48
|
-
puts "Loading paths from #{gemfile}"
|
63
|
+
puts "Loading paths from #{gemfile}" unless @quiet
|
49
64
|
|
50
65
|
defn = Bundler::Definition.build(gemfile, root + "Gemfile.lock", nil)
|
51
66
|
defn.validate_ruby!
|
@@ -83,18 +98,6 @@ module DoubleDoc
|
|
83
98
|
end
|
84
99
|
end
|
85
100
|
|
86
|
-
def find_file(path)
|
87
|
-
load_path = @load_paths.detect do |load_path|
|
88
|
-
(load_path + path).exist?
|
89
|
-
end
|
90
|
-
|
91
|
-
unless load_path
|
92
|
-
raise LoadError, "No such file or directory: #{path}"
|
93
|
-
end
|
94
|
-
|
95
|
-
File.new(load_path + path)
|
96
|
-
end
|
97
|
-
|
98
101
|
def with_gemfile(gemfile)
|
99
102
|
ENV["BUNDLE_GEMFILE"], orig_gemfile = gemfile.to_s, ENV["BUNDLE_GEMFILE"]
|
100
103
|
yield
|
data/lib/double_doc/task.rb
CHANGED
@@ -1,19 +1,19 @@
|
|
1
1
|
require 'rake'
|
2
2
|
require 'pathname'
|
3
3
|
require 'tmpdir'
|
4
|
-
require 'double_doc/
|
5
|
-
require 'double_doc/html_generator'
|
4
|
+
require 'double_doc/client'
|
6
5
|
|
7
6
|
module DoubleDoc
|
8
7
|
|
9
8
|
## ### Rake Task
|
10
9
|
## It is very easy to set up a rake task for generating your documentation. All you have to do is
|
11
|
-
## tell DoubleDoc what the input files are, and where you want the output to go.
|
10
|
+
## tell DoubleDoc what the input files are, and where you want the output to go. In the example,
|
11
|
+
## `double_doc` is picked to avoid conflicts with the `doc` rake task in rails.
|
12
12
|
##
|
13
13
|
## ```ruby
|
14
14
|
## require 'double_doc'
|
15
15
|
##
|
16
|
-
## DoubleDoc::Task.new(:
|
16
|
+
## DoubleDoc::Task.new(:double_doc,
|
17
17
|
## :sources => 'doc/source/*.md',
|
18
18
|
## :md_destination => 'doc/generated',
|
19
19
|
## :html_destination => 'site'
|
@@ -32,14 +32,15 @@ module DoubleDoc
|
|
32
32
|
## | __html_css__ | You can use your own custom CSS document by specifying it's path here.
|
33
33
|
## | __title__ | The title you want in the generated HTML. Defaults to "Documentation".
|
34
34
|
##
|
35
|
-
## If you just want to use
|
35
|
+
## If you just want to use double_doc to generate your README.md for github, you should write your documentation in doc/README.md and put this in your Rakefile:
|
36
36
|
##
|
37
37
|
## ```ruby
|
38
38
|
## require 'double_doc'
|
39
39
|
##
|
40
|
-
## DoubleDoc::Task.new(:
|
40
|
+
## DoubleDoc::Task.new(:double_doc, :sources => 'doc/README.md', :md_destination => '.')
|
41
41
|
## ```
|
42
|
-
##
|
42
|
+
##
|
43
|
+
## Then all you have to do is to run `rake double_doc`, and you will have a `readme.md` in the root of your project.
|
43
44
|
##
|
44
45
|
## If you have a gh-pages branch set up in your repository, you can event run `rake doc:publish` to generate html documentation and push it to your github pages.
|
45
46
|
class Task
|
@@ -48,41 +49,20 @@ module DoubleDoc
|
|
48
49
|
def initialize(task_name, options)
|
49
50
|
md_dst = Pathname.new(options[:md_destination])
|
50
51
|
html_dst = Pathname.new(options[:html_destination]) if options[:html_destination]
|
51
|
-
sources = FileList[*options[:sources]].uniq
|
52
52
|
|
53
53
|
destinations = [md_dst, html_dst].compact
|
54
54
|
destinations.each do |dst|
|
55
55
|
directory(dst.to_s)
|
56
56
|
end
|
57
57
|
|
58
|
-
|
59
|
-
|
60
|
-
import_handler = DoubleDoc::ImportHandler.new(options[:root] || Rake.original_dir, options.fetch(:import, {}))
|
61
|
-
|
62
|
-
generated_md_files = []
|
63
|
-
|
64
|
-
sources.each do |src|
|
65
|
-
dst = md_dst + File.basename(src)
|
66
|
-
puts "#{src} -> #{dst}"
|
67
|
-
|
68
|
-
if src.to_s =~ /\.md$/
|
69
|
-
body = import_handler.resolve_imports(File.new(src))
|
70
|
-
else
|
71
|
-
body = File.new(src).read
|
72
|
-
end
|
73
|
-
|
74
|
-
File.open(dst, 'w') do |out|
|
75
|
-
out.write(body)
|
76
|
-
end
|
77
|
-
|
78
|
-
generated_md_files << dst
|
79
|
-
end
|
80
|
-
|
81
|
-
if html_dst || args[:html_destination]
|
82
|
-
html_generator = DoubleDoc::HtmlGenerator.new(generated_md_files, options.merge(args))
|
83
|
-
html_generator.generate
|
84
|
-
end
|
58
|
+
roots = Array(options[:root])
|
59
|
+
roots << Rake.original_dir if roots.empty?
|
85
60
|
|
61
|
+
desc "Generate markdown #{html_dst ? 'and HTML ' : ''}DoubleDoc documentation"
|
62
|
+
generated_task = task(task_name => destinations) do |t, args|
|
63
|
+
opts = args.merge(options.merge(:roots => roots))
|
64
|
+
client = DoubleDoc::Client.new(options[:sources], opts)
|
65
|
+
client.process
|
86
66
|
end
|
87
67
|
|
88
68
|
has_github_pages = !`git branch | grep 'gh-pages'`.empty? rescue false
|
data/lib/double_doc/version.rb
CHANGED
data/readme.md
CHANGED
@@ -1,4 +1,7 @@
|
|
1
|
-
## DoubleDoc
|
1
|
+
## DoubleDoc 2.0
|
2
|
+
|
3
|
+
[](https://travis-ci.org/zendesk/double_doc)
|
4
|
+
|
2
5
|
|
3
6
|
One of the challenges you face when writing public documention for code or APIs, is that you have to remember to update the documentation
|
4
7
|
when ever you change the API. The main reason why this is a problem is that very often the documentation lives very for from your code.
|
@@ -66,12 +69,13 @@ And DoubleDoc will generate this markdown document for you:
|
|
66
69
|
|
67
70
|
### Rake Task
|
68
71
|
It is very easy to set up a rake task for generating your documentation. All you have to do is
|
69
|
-
tell DoubleDoc what the input files are, and where you want the output to go.
|
72
|
+
tell DoubleDoc what the input files are, and where you want the output to go. In the example,
|
73
|
+
`double_doc` is picked to avoid conflicts with the `doc` rake task in rails.
|
70
74
|
|
71
75
|
```ruby
|
72
76
|
require 'double_doc'
|
73
77
|
|
74
|
-
DoubleDoc::Task.new(:
|
78
|
+
DoubleDoc::Task.new(:double_doc,
|
75
79
|
:sources => 'doc/source/*.md',
|
76
80
|
:md_destination => 'doc/generated',
|
77
81
|
:html_destination => 'site'
|
@@ -90,21 +94,20 @@ The available options are:
|
|
90
94
|
| __html_css__ | You can use your own custom CSS document by specifying it's path here.
|
91
95
|
| __title__ | The title you want in the generated HTML. Defaults to "Documentation".
|
92
96
|
|
93
|
-
If you just want to use
|
97
|
+
If you just want to use double_doc to generate your README.md for github, you should write your documentation in doc/README.md and put this in your Rakefile:
|
94
98
|
|
95
99
|
```ruby
|
96
100
|
require 'double_doc'
|
97
101
|
|
98
|
-
DoubleDoc::Task.new(:
|
102
|
+
DoubleDoc::Task.new(:double_doc, :sources => 'doc/README.md', :md_destination => '.')
|
99
103
|
```
|
100
|
-
|
104
|
+
|
105
|
+
Then all you have to do is to run `rake double_doc`, and you will have a `readme.md` in the root of your project.
|
101
106
|
|
102
107
|
If you have a gh-pages branch set up in your repository, you can event run `rake doc:publish` to generate html documentation and push it to your github pages.
|
103
108
|
|
104
109
|
### Notes
|
105
|
-
DoubleDoc is tested as working on both ruby 1.8.7 and 1.9.3, but does not work on jruby because
|
106
|
-
|
107
|
-
[](http://travis-ci.org/staugaard/double_doc)
|
110
|
+
DoubleDoc is tested as working on both ruby 1.8.7 and 1.9.3, but does not work on jruby because of its dependency on redcarpet.
|
108
111
|
|
109
112
|
### TODO
|
110
113
|
* Tests
|
data/test/client_test.rb
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
describe "import handler" do
|
4
|
+
subject do
|
5
|
+
DoubleDoc::Client.new(sources, options)
|
6
|
+
end
|
7
|
+
|
8
|
+
describe '#process' do
|
9
|
+
let(:destination) { Dir.mktmpdir }
|
10
|
+
let(:sources) { [Bundler.root + 'doc/readme.md'] }
|
11
|
+
let(:options) { { :md_destination => destination, :roots => [Bundler.root], :quiet => true } }
|
12
|
+
|
13
|
+
before do
|
14
|
+
subject.process
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'produces output at the md_destination' do
|
18
|
+
File.exists?(destination + '/readme.md').must_equal true
|
19
|
+
end
|
20
|
+
|
21
|
+
describe 'with a missing directory' do
|
22
|
+
let(:destination) { Dir.mktmpdir + '/tmp' }
|
23
|
+
|
24
|
+
it 'creates the directory' do
|
25
|
+
File.exists?(destination + '/readme.md').must_equal true
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
describe 'with multiple sources' do
|
30
|
+
let(:sources) { %w(readme todo).map{|f| Bundler.root + "doc/#{f}.md" } }
|
31
|
+
|
32
|
+
it 'processes all sources' do
|
33
|
+
File.exists?(destination + '/readme.md').must_equal true
|
34
|
+
File.exists?(destination + '/todo.md').must_equal true
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
describe 'producing html' do
|
39
|
+
let(:options) { {
|
40
|
+
:md_destination => destination,
|
41
|
+
:html_destination => destination + '/html',
|
42
|
+
:roots => [Bundler.root],
|
43
|
+
:quiet => true
|
44
|
+
} }
|
45
|
+
|
46
|
+
it 'creates html files' do
|
47
|
+
File.exists?(destination + '/html/readme.html').must_equal true
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
data/test/html_generator_test.rb
CHANGED
@@ -10,7 +10,10 @@ describe "the html generator" do
|
|
10
10
|
@output_file_name = @destination + 'input.html'
|
11
11
|
Dir.mkdir(@root + 'source')
|
12
12
|
Dir.mkdir(@destination)
|
13
|
-
@generator = DoubleDoc::HtmlGenerator.new([@input_file_name], {
|
13
|
+
@generator = DoubleDoc::HtmlGenerator.new([@input_file_name], {
|
14
|
+
:html_destination => @destination,
|
15
|
+
:quiet => true
|
16
|
+
})
|
14
17
|
end
|
15
18
|
|
16
19
|
after do
|
@@ -63,7 +66,8 @@ describe "the html generator" do
|
|
63
66
|
|
64
67
|
it "should generate links for each page in the navigation area" do
|
65
68
|
generator = DoubleDoc::HtmlGenerator.new(@input_files, {
|
66
|
-
:html_destination => @destination
|
69
|
+
:html_destination => @destination,
|
70
|
+
:quiet => true
|
67
71
|
})
|
68
72
|
generator.generate
|
69
73
|
|
@@ -76,7 +80,8 @@ describe "the html generator" do
|
|
76
80
|
it "should skip specified filed" do
|
77
81
|
generator = DoubleDoc::HtmlGenerator.new(@input_files, {
|
78
82
|
:html_destination => @destination,
|
79
|
-
:exclude_from_navigation => ['file_two.html']
|
83
|
+
:exclude_from_navigation => ['file_two.html'],
|
84
|
+
:quiet => true
|
80
85
|
})
|
81
86
|
generator.generate
|
82
87
|
|
data/test/import_handler_test.rb
CHANGED
@@ -2,13 +2,24 @@ require 'test_helper'
|
|
2
2
|
|
3
3
|
describe "import handler" do
|
4
4
|
subject do
|
5
|
-
|
5
|
+
roots = Array(root).push(options.merge( :quiet => true ))
|
6
|
+
DoubleDoc::ImportHandler.new(*roots)
|
6
7
|
end
|
7
8
|
|
8
9
|
after do
|
9
10
|
ENV["BUNDLE_GEMFILE"] = Bundler.root.join("Gemfile").to_s
|
10
11
|
end
|
11
12
|
|
13
|
+
describe "multiple roots" do
|
14
|
+
let(:root) { [Bundler.root + 'lib', Bundler.root + 'doc'] }
|
15
|
+
let(:options) {{}}
|
16
|
+
|
17
|
+
it "finds files from either root" do
|
18
|
+
subject.find_file("double_doc.rb").must_be_instance_of File
|
19
|
+
subject.find_file("readme.md").must_be_instance_of File
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
12
23
|
describe "with gemfile" do
|
13
24
|
let(:root) { Bundler.root }
|
14
25
|
let(:options) {{ :gemfile => true }}
|
@@ -16,19 +27,19 @@ describe "import handler" do
|
|
16
27
|
describe "rubygems" do
|
17
28
|
describe "load_paths" do
|
18
29
|
it "should add Gemfile load paths" do
|
19
|
-
subject.load_paths.must_include
|
30
|
+
subject.load_paths.must_include root
|
20
31
|
subject.load_paths.size.must_be :>, 1
|
21
32
|
end
|
22
33
|
end
|
23
34
|
|
24
35
|
describe "find_file" do
|
25
36
|
it "should resolve files" do
|
26
|
-
subject.
|
37
|
+
subject.find_file("bundler.rb").must_be_instance_of File
|
27
38
|
end
|
28
39
|
|
29
40
|
it "should raise if unable to find file" do
|
30
41
|
lambda do
|
31
|
-
subject.
|
42
|
+
subject.find_file("nope.rb")
|
32
43
|
end.must_raise LoadError
|
33
44
|
end
|
34
45
|
end
|
@@ -36,11 +47,11 @@ describe "import handler" do
|
|
36
47
|
|
37
48
|
describe "find_file" do
|
38
49
|
it "should resolve files from path" do
|
39
|
-
subject.
|
50
|
+
subject.find_file("double_doc.rb").must_be_instance_of File
|
40
51
|
end
|
41
52
|
|
42
53
|
it "should resolve file from git" do
|
43
|
-
subject.
|
54
|
+
subject.find_file("mime-types.rb").must_be_instance_of File
|
44
55
|
end
|
45
56
|
end
|
46
57
|
end
|
metadata
CHANGED
@@ -1,110 +1,97 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: double_doc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
5
|
-
prerelease:
|
4
|
+
version: 2.0.1
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Mick Staugaard
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2015-11-09 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: guard
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - "~>"
|
20
18
|
- !ruby/object:Gem::Version
|
21
|
-
version: '
|
19
|
+
version: '1.6'
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - "~>"
|
28
25
|
- !ruby/object:Gem::Version
|
29
|
-
version: '
|
26
|
+
version: '1.6'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: minitest
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - ">="
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '0'
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - ">="
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: '0'
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: rake
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - ">="
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '0'
|
54
48
|
type: :runtime
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - ">="
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: '0'
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: erubis
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
|
-
- -
|
59
|
+
- - ">="
|
68
60
|
- !ruby/object:Gem::Version
|
69
61
|
version: '0'
|
70
62
|
type: :runtime
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
|
-
- -
|
66
|
+
- - ">="
|
76
67
|
- !ruby/object:Gem::Version
|
77
68
|
version: '0'
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
70
|
name: redcarpet
|
80
71
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
72
|
requirements:
|
83
|
-
- -
|
73
|
+
- - "<"
|
84
74
|
- !ruby/object:Gem::Version
|
85
|
-
version: '
|
75
|
+
version: '4'
|
86
76
|
type: :runtime
|
87
77
|
prerelease: false
|
88
78
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
79
|
requirements:
|
91
|
-
- -
|
80
|
+
- - "<"
|
92
81
|
- !ruby/object:Gem::Version
|
93
|
-
version: '
|
82
|
+
version: '4'
|
94
83
|
- !ruby/object:Gem::Dependency
|
95
84
|
name: pygments.rb
|
96
85
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
86
|
requirements:
|
99
|
-
- - ~>
|
87
|
+
- - "~>"
|
100
88
|
- !ruby/object:Gem::Version
|
101
89
|
version: '0.2'
|
102
90
|
type: :runtime
|
103
91
|
prerelease: false
|
104
92
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
93
|
requirements:
|
107
|
-
- - ~>
|
94
|
+
- - "~>"
|
108
95
|
- !ruby/object:Gem::Version
|
109
96
|
version: '0.2'
|
110
97
|
description: A simple framework for writing and generating beautiful documentation
|
@@ -115,53 +102,49 @@ executables: []
|
|
115
102
|
extensions: []
|
116
103
|
extra_rdoc_files: []
|
117
104
|
files:
|
105
|
+
- lib/double_doc.rb
|
106
|
+
- lib/double_doc/client.rb
|
118
107
|
- lib/double_doc/doc_extractor.rb
|
119
108
|
- lib/double_doc/html_generator.rb
|
120
109
|
- lib/double_doc/html_renderer.rb
|
121
110
|
- lib/double_doc/import_handler.rb
|
122
111
|
- lib/double_doc/task.rb
|
123
112
|
- lib/double_doc/version.rb
|
124
|
-
- lib/double_doc.rb
|
125
113
|
- lib/guard/double_doc.rb
|
126
114
|
- lib/guard/doubledoc.rb
|
115
|
+
- readme.md
|
127
116
|
- templates/default.html.erb
|
128
117
|
- templates/screen.css
|
129
|
-
-
|
118
|
+
- test/client_test.rb
|
130
119
|
- test/doc_extractor_test.rb
|
131
120
|
- test/html_generator_test.rb
|
132
121
|
- test/import_handler_test.rb
|
133
122
|
- test/test_helper.rb
|
134
123
|
homepage: http://staugaard.github.com/double_doc
|
135
124
|
licenses: []
|
125
|
+
metadata: {}
|
136
126
|
post_install_message:
|
137
127
|
rdoc_options: []
|
138
128
|
require_paths:
|
139
129
|
- lib
|
140
130
|
required_ruby_version: !ruby/object:Gem::Requirement
|
141
|
-
none: false
|
142
131
|
requirements:
|
143
|
-
- -
|
132
|
+
- - ">="
|
144
133
|
- !ruby/object:Gem::Version
|
145
134
|
version: '0'
|
146
|
-
segments:
|
147
|
-
- 0
|
148
|
-
hash: -1964755725115919551
|
149
135
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
150
|
-
none: false
|
151
136
|
requirements:
|
152
|
-
- -
|
137
|
+
- - ">="
|
153
138
|
- !ruby/object:Gem::Version
|
154
139
|
version: '0'
|
155
|
-
segments:
|
156
|
-
- 0
|
157
|
-
hash: -1964755725115919551
|
158
140
|
requirements: []
|
159
141
|
rubyforge_project:
|
160
|
-
rubygems_version:
|
142
|
+
rubygems_version: 2.4.5
|
161
143
|
signing_key:
|
162
|
-
specification_version:
|
144
|
+
specification_version: 4
|
163
145
|
summary: Documentation right where you want it
|
164
146
|
test_files:
|
147
|
+
- test/client_test.rb
|
165
148
|
- test/doc_extractor_test.rb
|
166
149
|
- test/html_generator_test.rb
|
167
150
|
- test/import_handler_test.rb
|