docme 1.1.1 → 2.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/docme +3 -19
- data/lib/docme.rb +61 -11
- data/lib/docme/DocmeCLI.rb +76 -0
- data/lib/docme/block.rb +6 -1
- data/lib/docme/page.rb +7 -4
- data/lib/docme/rake_task.rb +66 -0
- data/lib/docme/utils.rb +29 -4
- data/lib/templates/index.erb +1 -7
- data/lib/templates/page.erb +1 -28
- data/lib/templates/style.erb +29 -0
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a1404bb774b46f9954b5f775667b7ceb30eec584
|
4
|
+
data.tar.gz: ed1fa0f5a8c31d2e3686477dc8b8fa0290feb652
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 069ab9e0ff1480b64c98f90190538fbfaceed1839c9a742414663b951f1113ac7d536bf39d20802e7705b35fcc00a1628195db08d6813027eb68d03956bfa78b
|
7
|
+
data.tar.gz: 7000581d1e03954e0d398964513f3ef758debb0d819baf91b1b4027c728394dabd7752d44426d50ad861e9447336ec8eef00da95b0b73221152ac10bbed370c2
|
data/bin/docme
CHANGED
@@ -1,23 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
# encoding: UTF-8
|
3
3
|
|
4
|
-
require 'docme'
|
5
|
-
require '
|
6
|
-
require 'fileutils'
|
4
|
+
require 'docme/DocmeCLI'
|
5
|
+
require 'thor'
|
7
6
|
|
8
|
-
|
9
|
-
path = Dir.pwd
|
10
|
-
puts path
|
11
|
-
else
|
12
|
-
path = ARGV[0]
|
13
|
-
end
|
14
|
-
|
15
|
-
puts "\n ***Begining docme magix***"
|
16
|
-
|
17
|
-
docmeer = Docme.new(path)
|
18
|
-
docmeer.scan_docs
|
19
|
-
docmeer.render_docs
|
20
|
-
docmeer.render_index
|
21
|
-
|
22
|
-
puts "\n ***Finished docme magic!***"
|
23
|
-
puts "\n You can find your docs inside the `docme_site` folder. \n Hint: look for index.html\n\n"
|
7
|
+
DocmeCLI.start(ARGV)
|
data/lib/docme.rb
CHANGED
@@ -7,45 +7,71 @@ require 'fileutils'
|
|
7
7
|
|
8
8
|
class Docme
|
9
9
|
|
10
|
-
def initialize(path)
|
10
|
+
def initialize(path, is_verbose = nil, style = nil, index = nil, page_erb = nil)
|
11
11
|
@path = path
|
12
12
|
@pages = []
|
13
|
+
@is_verbose = is_verbose
|
14
|
+
@style = style
|
15
|
+
@index = index
|
16
|
+
@page_erb = page_erb
|
13
17
|
|
18
|
+
puts '+ docme will parse: ' + @path if @is_verbose
|
19
|
+
|
20
|
+
make_home
|
21
|
+
end
|
22
|
+
|
23
|
+
def engage
|
14
24
|
make_home
|
25
|
+
scan_docs
|
26
|
+
render_docs
|
27
|
+
render_index
|
28
|
+
render_css
|
15
29
|
end
|
16
30
|
|
17
31
|
def make_home
|
18
32
|
# create the directory where the site will be stored
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
33
|
+
if Dir.exist?('docme_site')
|
34
|
+
clean_directory('docme_site', @is_verbose)
|
35
|
+
else
|
36
|
+
puts "+ Setting up docme's living arrangements." if @is_verbose
|
37
|
+
Dir.mkdir('docme_site')
|
38
|
+
puts ' - Woohoo! docme has a home!' if @is_verbose
|
39
|
+
end
|
23
40
|
end
|
24
41
|
|
25
42
|
def scan_docs
|
43
|
+
|
44
|
+
puts '+ docme scanning: ' + @path if @is_verbose
|
45
|
+
|
26
46
|
# if a directory was provided
|
27
47
|
if File.directory?(@path)
|
28
48
|
|
29
|
-
@pages.concat parse_directory(@path)
|
49
|
+
@pages.concat parse_directory(@path, @is_verbose)
|
30
50
|
|
31
51
|
else # if a single file was provided
|
32
52
|
|
33
|
-
@pages.push(parse_file(@path))
|
53
|
+
@pages.push(parse_file(@path, @is_verbose))
|
34
54
|
|
35
55
|
end
|
36
56
|
end
|
37
57
|
|
38
58
|
def render_docs
|
39
|
-
puts '+ docme generated the following pages: '
|
59
|
+
puts '+ docme generated the following pages: ' if @is_verbose
|
40
60
|
@pages.each do |page_object|
|
41
|
-
page_object.render_site(@pages)
|
42
|
-
puts ' - ' + page_object.name
|
61
|
+
page_object.render_site(@pages, @page_erb)
|
62
|
+
puts ' - ' + page_object.name if @is_verbose
|
43
63
|
end
|
44
64
|
end
|
45
65
|
|
46
66
|
def render_index
|
47
67
|
|
48
|
-
|
68
|
+
puts '+ docme is creating the index' if @is_verbose
|
69
|
+
|
70
|
+
if @index.nil?
|
71
|
+
template = File.read(File.join(File.dirname(__FILE__), 'templates/index.erb'))
|
72
|
+
else
|
73
|
+
template = File.read(File.join(Dir.pwd, @index))
|
74
|
+
end
|
49
75
|
|
50
76
|
renderer = ERB.new(template)
|
51
77
|
|
@@ -55,6 +81,30 @@ class Docme
|
|
55
81
|
|
56
82
|
# add page to docme dir
|
57
83
|
FileUtils.mv('index.html', 'docme_site/index.html')
|
84
|
+
|
85
|
+
puts '+ index created' if @is_verbose
|
86
|
+
end
|
87
|
+
|
88
|
+
def render_css
|
89
|
+
puts '+ docme is styling' if @is_verbose
|
90
|
+
|
91
|
+
if @style.nil?
|
92
|
+
template = File.read(File.join(File.dirname(__FILE__), 'templates/style.erb'))
|
93
|
+
else
|
94
|
+
template = File.read(File.join(Dir.pwd, @style))
|
95
|
+
end
|
96
|
+
|
97
|
+
renderer = ERB.new(template)
|
98
|
+
|
99
|
+
File.open('style.css', 'w+') do |f|
|
100
|
+
f.write(renderer.result(binding))
|
101
|
+
end
|
102
|
+
|
103
|
+
# add page to docme dir
|
104
|
+
FileUtils.mv('style.css', 'docme_site/style.css')
|
105
|
+
|
106
|
+
puts '+ styling completed' if @is_verbose
|
107
|
+
|
58
108
|
end
|
59
109
|
|
60
110
|
end
|
@@ -0,0 +1,76 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
# Class DocmeCLI
|
3
|
+
|
4
|
+
require 'docme'
|
5
|
+
require 'docme/utils'
|
6
|
+
require 'fileutils'
|
7
|
+
require 'thor'
|
8
|
+
|
9
|
+
class DocmeCLI < Thor
|
10
|
+
class_option :v, type: :boolean
|
11
|
+
|
12
|
+
desc 'default', '`docme` When no commands are provided docme will begin the current directory and parse through all eligible folders and files.'
|
13
|
+
option :style, type: :string
|
14
|
+
option :index, type: :string
|
15
|
+
option :page, type: :string
|
16
|
+
def default
|
17
|
+
path = Dir.pwd
|
18
|
+
puts "\n ***Begining docme magix***"
|
19
|
+
|
20
|
+
docmeer = Docme.new(path, options[:v], options[:style], options[:index], options[:page])
|
21
|
+
docmeer.engage
|
22
|
+
|
23
|
+
puts "\n ***Finished docme magic!***"
|
24
|
+
puts "\n You can find your docs inside the `docme_site` folder. \n Hint: look for index.html\n\n"
|
25
|
+
|
26
|
+
end
|
27
|
+
|
28
|
+
desc 'clean', '`docme clean <path>` Attemtps to empty and remove the docme_site directory. Path is optional and should point to a directory containing a `docme_site` folder. If an error is returned then you will have to delete the folder manually.'
|
29
|
+
def clean(path = nil)
|
30
|
+
path = Dir.pwd if path.nil?
|
31
|
+
|
32
|
+
fail 'Please provide a valid path to a directory that contains a `docme_site` folder.' unless Dir.exist?(path + '/docme_site')
|
33
|
+
|
34
|
+
puts '+ docme will clean ' + path if options[:v]
|
35
|
+
puts '+ docme cleaning' if options[:v]
|
36
|
+
|
37
|
+
clean_directory(path + '/docme_site', options[:v])
|
38
|
+
Dir.rmdir(path + '/docme_site') if Dir.exist?(path + '/docme_site')
|
39
|
+
|
40
|
+
puts '+ docme_site removed' if options[:v]
|
41
|
+
puts '+ docme is now homeless' if options[:v]
|
42
|
+
|
43
|
+
end
|
44
|
+
|
45
|
+
desc 'parse', '`docme parse <path>` -- Either provide a path to a file or a path to a directory and docme will parse all valid files found.'
|
46
|
+
long_desc <<-LONGDESC
|
47
|
+
`docme parse <path/to/file>` will parse a single file specified
|
48
|
+
|
49
|
+
`docme parse <path/to/folder>` will parse all eligible files in the specified directory
|
50
|
+
|
51
|
+
`docme parse <path/to/folder> --style <path/to/css.erb>` will use your own custom styling options. This file must contain valid css and be saved as `.erb` file.
|
52
|
+
|
53
|
+
`docme parse <path/to/folder> --index <path/to/index.erb>` will use your own custom html to build the index page of the site.
|
54
|
+
|
55
|
+
`docme parse <path/to/folder> --page <path/to/yourPage.erb>` will use your own custom html to build the pages of the site.
|
56
|
+
|
57
|
+
Use the `-v` flag on any command to recieve verbose output.
|
58
|
+
LONGDESC
|
59
|
+
option :style, type: :string
|
60
|
+
option :index, type: :string
|
61
|
+
option :page, type: :string
|
62
|
+
def parse(path)
|
63
|
+
|
64
|
+
puts "\n ***Begining docme magix***"
|
65
|
+
|
66
|
+
docmeer = Docme.new(path, options[:v], options[:style], options[:index], options[:page])
|
67
|
+
docmeer.engage
|
68
|
+
|
69
|
+
puts "\n ***Finished docme magic!***"
|
70
|
+
puts "\n You can find your docs inside the `docme_site` folder. \n Hint: look for index.html\n\n"
|
71
|
+
|
72
|
+
end
|
73
|
+
|
74
|
+
default_task :default
|
75
|
+
|
76
|
+
end
|
data/lib/docme/block.rb
CHANGED
@@ -31,7 +31,12 @@ class Block
|
|
31
31
|
if strip_line.rindex('+', 0) == 0
|
32
32
|
|
33
33
|
is_docme = 1
|
34
|
-
parts = strip_line.split(':')
|
34
|
+
parts = strip_line.split(':', 2)
|
35
|
+
|
36
|
+
if parts[0].nil? || parts[1].nil?
|
37
|
+
is_docme = 0
|
38
|
+
next
|
39
|
+
end
|
35
40
|
|
36
41
|
# parts[0] == the attribute name
|
37
42
|
attribute = clean_attribute(parts[0])
|
data/lib/docme/page.rb
CHANGED
@@ -18,6 +18,7 @@ class Page
|
|
18
18
|
def initialize(file)
|
19
19
|
@name = clean_filename(file)
|
20
20
|
@source_file = File.open(file).read
|
21
|
+
@page_erb = '../templates/page.erb'
|
21
22
|
@blocks = []
|
22
23
|
@is_empty = true
|
23
24
|
end
|
@@ -46,16 +47,18 @@ class Page
|
|
46
47
|
@is_empty = @blocks.empty?
|
47
48
|
end
|
48
49
|
|
49
|
-
def render_site(index)
|
50
|
+
def render_site(index, page_erb = nil)
|
50
51
|
@index = []
|
51
52
|
|
52
53
|
index.each do |page|
|
53
54
|
@index.push(page.name)
|
54
55
|
end
|
55
56
|
|
56
|
-
|
57
|
-
|
58
|
-
|
57
|
+
if page_erb.nil?
|
58
|
+
renderer = ERB.new(File.read(File.join(File.dirname(__FILE__), @page_erb)))
|
59
|
+
else
|
60
|
+
renderer = ERB.new(File.read(File.join(Dir.pwd, page_erb)))
|
61
|
+
end
|
59
62
|
|
60
63
|
page = @name + '.html'
|
61
64
|
|
@@ -0,0 +1,66 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'rake'
|
4
|
+
require 'rake/tasklib'
|
5
|
+
require 'docme/DocmeCLI'
|
6
|
+
|
7
|
+
module DocmeTask
|
8
|
+
# Provides a custom rake task.
|
9
|
+
#
|
10
|
+
# require 'docme/rake-task'
|
11
|
+
# Docme::RakeTask.new
|
12
|
+
class RakeTask < ::Rake::TaskLib
|
13
|
+
|
14
|
+
attr_accessor :name
|
15
|
+
attr_accessor :parse
|
16
|
+
attr_accessor :index
|
17
|
+
attr_accessor :page
|
18
|
+
attr_accessor :style
|
19
|
+
attr_accessor :verbose
|
20
|
+
|
21
|
+
def initialize(*args, &task_block)
|
22
|
+
@name = args.shift || :docme
|
23
|
+
@parse = nil
|
24
|
+
@index = nil
|
25
|
+
@page = nil
|
26
|
+
@style = nil
|
27
|
+
@verbose = nil
|
28
|
+
|
29
|
+
define(args, &task_block)
|
30
|
+
|
31
|
+
end
|
32
|
+
|
33
|
+
def engage_docme
|
34
|
+
|
35
|
+
input = build_input
|
36
|
+
|
37
|
+
DocmeCLI.start(input)
|
38
|
+
|
39
|
+
end
|
40
|
+
|
41
|
+
def build_input
|
42
|
+
temp = []
|
43
|
+
|
44
|
+
temp.push('parse', @parse) unless @parse.nil?
|
45
|
+
temp.push('--index', @index) unless @index.nil?
|
46
|
+
temp.push('--page', @page) unless @page.nil?
|
47
|
+
temp.push('--style', @style) unless @style.nil?
|
48
|
+
temp.push('-v') unless @verbose.nil?
|
49
|
+
|
50
|
+
temp
|
51
|
+
end
|
52
|
+
|
53
|
+
def define(args, &task_block)
|
54
|
+
desc 'Run docme' unless ::Rake.application.last_comment
|
55
|
+
|
56
|
+
task name, *args do |_, task_args|
|
57
|
+
RakeFileUtils.__send__(:verbose, verbose) do
|
58
|
+
task_block.call(*[self, task_args].slice(0, task_block.arity)) if task_block
|
59
|
+
engage_docme
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
data/lib/docme/utils.rb
CHANGED
@@ -36,7 +36,7 @@ end
|
|
36
36
|
def unsupported_extension(file)
|
37
37
|
parse = true
|
38
38
|
|
39
|
-
unsupported_extensions = ['.gem', '.jar', '.gemspec', '.zip', '.tar', '.gz', '.tar.gz', '.jpeg', '.jpg', '.png', '.exe']
|
39
|
+
unsupported_extensions = ['.gem', '.jar', '.gemspec', '.zip', '.tar', '.gz', '.tar.gz', '.jpeg', '.jpg', '.png', '.exe', '.md', '.lock']
|
40
40
|
|
41
41
|
parse = false unless unsupported_extensions.include?(File.extname(file)) || (File.executable?(file) && !Dir.exist?(file)) || (File.executable_real?(file) && !Dir.exist?(file))
|
42
42
|
|
@@ -51,7 +51,7 @@ def unsupported_encoding(file)
|
|
51
51
|
parse
|
52
52
|
end
|
53
53
|
|
54
|
-
def parse_directory(path)
|
54
|
+
def parse_directory(path, is_verbose = nil)
|
55
55
|
|
56
56
|
files_array = []
|
57
57
|
|
@@ -63,11 +63,13 @@ def parse_directory(path)
|
|
63
63
|
# if another directory then go inside
|
64
64
|
if File.directory?(path + '/' + f)
|
65
65
|
|
66
|
+
puts ' - docme parsing path: ' + f if is_verbose
|
67
|
+
|
66
68
|
files_array.concat parse_directory(path + '/' + f)
|
67
69
|
|
68
70
|
else # else parse normally
|
69
71
|
|
70
|
-
temp_page = parse_file(path + '/' + f)
|
72
|
+
temp_page = parse_file(path + '/' + f, is_verbose)
|
71
73
|
files_array.push(temp_page) unless temp_page.nil? || temp_page.is_empty == true
|
72
74
|
|
73
75
|
end
|
@@ -77,10 +79,12 @@ def parse_directory(path)
|
|
77
79
|
|
78
80
|
end
|
79
81
|
|
80
|
-
def parse_file(file)
|
82
|
+
def parse_file(file, is_verbose = nil)
|
81
83
|
|
82
84
|
if File.file?(file) && File.exist?(file) && !file.rindex('.', 0) && !unsupported_encoding(file) && !unsupported_extension(file)
|
83
85
|
|
86
|
+
puts ' - docme parsing page: ' + file if is_verbose
|
87
|
+
|
84
88
|
page = Page.new(file)
|
85
89
|
page.parse_blocks
|
86
90
|
|
@@ -91,3 +95,24 @@ def parse_file(file)
|
|
91
95
|
end
|
92
96
|
|
93
97
|
end
|
98
|
+
|
99
|
+
def clean_directory(path, is_verbose = nil)
|
100
|
+
# for each file in the directory
|
101
|
+
Dir.foreach(path) do |f|
|
102
|
+
|
103
|
+
next if f == '.' || f == '..'
|
104
|
+
|
105
|
+
# if another directory then go inside
|
106
|
+
if File.directory?(path + '/' + f)
|
107
|
+
|
108
|
+
clean_directory(path + '/' + f)
|
109
|
+
|
110
|
+
else # else delete file
|
111
|
+
|
112
|
+
puts ' - docme removing file: ' + f if is_verbose
|
113
|
+
|
114
|
+
File.delete(path + '/' + f)
|
115
|
+
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
data/lib/templates/index.erb
CHANGED
@@ -1,13 +1,7 @@
|
|
1
1
|
<!DOCTYPE html>
|
2
2
|
<html>
|
3
3
|
|
4
|
-
<
|
5
|
-
#wrapper{
|
6
|
-
width: 70%;
|
7
|
-
padding-left: 30%;
|
8
|
-
font-size:2em;
|
9
|
-
}
|
10
|
-
</style>
|
4
|
+
<link href="style.css" rel="stylesheet">
|
11
5
|
|
12
6
|
<link href="https://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet" media="screen">
|
13
7
|
|
data/lib/templates/page.erb
CHANGED
@@ -4,35 +4,8 @@
|
|
4
4
|
<head>
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
6
6
|
|
7
|
-
<
|
8
|
-
body{
|
9
|
-
}
|
10
|
-
#panels-wrapper{
|
11
|
-
width: 80%;
|
12
|
-
float: left;
|
13
|
-
padding-left: 10%;
|
14
|
-
}
|
15
|
-
#side-panel{
|
16
|
-
width: 15%;
|
17
|
-
float: left;
|
18
|
-
padding-left: 10px;
|
19
|
-
}
|
20
|
-
pre-scrollable{
|
21
|
-
overflow-x: scroll;
|
22
|
-
white-space: nowrap;
|
23
|
-
}
|
7
|
+
<link href="style.css" rel="stylesheet">
|
24
8
|
|
25
|
-
p.code{
|
26
|
-
border:1px solid #000000;
|
27
|
-
overflow-x:scroll;
|
28
|
-
white-space: pre;
|
29
|
-
font-family:monospace,monospace;
|
30
|
-
font-size:1em;
|
31
|
-
background-color:#f5f5f5;
|
32
|
-
padding:2em;
|
33
|
-
}
|
34
|
-
|
35
|
-
</style>
|
36
9
|
</head>
|
37
10
|
|
38
11
|
<link href="https://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet" media="screen">
|
@@ -0,0 +1,29 @@
|
|
1
|
+
#wrapper{
|
2
|
+
width: 70%;
|
3
|
+
padding-left: 30%;
|
4
|
+
font-size:2em;
|
5
|
+
}
|
6
|
+
#panels-wrapper{
|
7
|
+
width: 80%;
|
8
|
+
float: left;
|
9
|
+
padding-left: 10%;
|
10
|
+
}
|
11
|
+
#side-panel{
|
12
|
+
width: 15%;
|
13
|
+
float: left;
|
14
|
+
padding-left: 10px;
|
15
|
+
}
|
16
|
+
pre-scrollable{
|
17
|
+
overflow-x: scroll;
|
18
|
+
white-space: nowrap;
|
19
|
+
}
|
20
|
+
|
21
|
+
p.code{
|
22
|
+
border:1px solid #000000;
|
23
|
+
overflow-x:scroll;
|
24
|
+
white-space: pre;
|
25
|
+
font-family:monospace,monospace;
|
26
|
+
font-size:1em;
|
27
|
+
background-color:#f5f5f5;
|
28
|
+
padding:2em;
|
29
|
+
}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: docme
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bailey Belvis
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-06-
|
11
|
+
date: 2014-06-19 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: A gem to support easy documentation for any file that recognizes `/*
|
14
14
|
*/` as a code block. This gem lets you easily parse multiple files in a directory
|
@@ -22,11 +22,14 @@ extra_rdoc_files: []
|
|
22
22
|
files:
|
23
23
|
- bin/docme
|
24
24
|
- lib/docme.rb
|
25
|
+
- lib/docme/DocmeCLI.rb
|
25
26
|
- lib/docme/block.rb
|
26
27
|
- lib/docme/page.rb
|
28
|
+
- lib/docme/rake_task.rb
|
27
29
|
- lib/docme/utils.rb
|
28
30
|
- lib/templates/index.erb
|
29
31
|
- lib/templates/page.erb
|
32
|
+
- lib/templates/style.erb
|
30
33
|
homepage: https://github.com/philosowaffle/docme
|
31
34
|
licenses:
|
32
35
|
- Mozilla Public License
|