docme 1.0.3 → 1.1.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 +4 -4
- data/bin/docme +11 -59
- data/lib/docme.rb +43 -108
- data/lib/docme/block.rb +98 -0
- data/lib/docme/page.rb +68 -0
- data/lib/docme/utils.rb +61 -168
- data/lib/templates/index.erb +25 -0
- data/lib/templates/page.erb +110 -0
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 83eee48aa7acdbaf189f9df3b5c78df89a543d88
|
4
|
+
data.tar.gz: cd2c845d5fb70b9f6c28600764bfdea5c106053f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 98f6b0d9b6048296ef03bc810c8d015b37ef24fe5ae9703129ac97be2c8fc53480287d6a80b330200fcd027be6ee281046b8be00ae95dd4f70f668072e2ea046
|
7
|
+
data.tar.gz: 76fad443ec0745288ba63843d573f3e1932e087fa7a9cd94d1209a7ba7c32070e54c9c69a59cc058cbf34663ef5424afb1eca1e45305317eeb4807bd0f3730e1
|
data/bin/docme
CHANGED
@@ -1,71 +1,23 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
+
# encoding: UTF-8
|
2
3
|
|
3
4
|
require 'docme'
|
4
5
|
require 'docme/utils'
|
5
6
|
require 'fileutils'
|
6
7
|
|
7
|
-
|
8
|
-
path =
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
#create the directory where the site will be stored
|
14
|
-
if !File::directory?("docme_site")
|
15
|
-
puts "+Setting up docme's living arrangements."
|
16
|
-
Dir.mkdir("docme_site")
|
17
|
-
puts "Woohoo! docme has a home!"
|
18
|
-
end
|
19
|
-
|
20
|
-
#if a directory was provided
|
21
|
-
if File.directory?(path)
|
22
|
-
#foreach file in the path specified
|
23
|
-
Dir.foreach(path) do |file|
|
24
|
-
next if file == '.' || file == '..'
|
25
|
-
|
26
|
-
next if file.rindex('.', 0)
|
27
|
-
|
28
|
-
#if there is a sub directory
|
29
|
-
if File.directory?(path+"/"+file)
|
30
|
-
#for each file in the sub directory
|
31
|
-
Dir.foreach(path + "/"+ file) do |f|
|
32
|
-
next if f == '.' || f == '..'
|
33
|
-
|
34
|
-
next if f.rindex('.', 0)
|
35
|
-
|
36
|
-
next if File.directory?(path+"/"+file+"/"+f)
|
37
|
-
|
38
|
-
page = Docme.jsParse(path+"/"+file+"/"+f)
|
39
|
-
|
40
|
-
#add page to docme dir
|
41
|
-
if page != nil
|
42
|
-
FileUtils.mv(page, "docme_site/"+page)
|
43
|
-
files.push(page)
|
44
|
-
end
|
45
|
-
|
46
|
-
end
|
47
|
-
else
|
48
|
-
page = Docme.jsParse(path+"/"+file)
|
49
|
-
|
50
|
-
if page != nil
|
51
|
-
FileUtils.mv(page, "docme_site/"+page)
|
52
|
-
files.push(page)
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
end
|
57
|
-
else #if a single file was provided
|
58
|
-
page = Docme.jsParse(path)
|
59
|
-
FileUtils.mv(page, "docme_site/"+page)
|
60
|
-
files.push(page)
|
8
|
+
if ARGV[0].nil?
|
9
|
+
path = Dir.pwd
|
10
|
+
puts path
|
11
|
+
else
|
12
|
+
path = ARGV[0]
|
61
13
|
end
|
62
14
|
|
63
|
-
|
15
|
+
puts "\n ***Begining docme magix***"
|
64
16
|
|
65
|
-
|
66
|
-
|
17
|
+
docmeer = Docme.new(path)
|
18
|
+
docmeer.scan_docs
|
19
|
+
docmeer.render_docs
|
20
|
+
docmeer.render_index
|
67
21
|
|
68
|
-
puts "\nFiles generated by docme:"
|
69
|
-
puts files
|
70
22
|
puts "\n ***Finished docme magic!***"
|
71
23
|
puts "\n You can find your docs inside the `docme_site` folder. \n Hint: look for index.html\n\n"
|
data/lib/docme.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
|
-
#
|
1
|
+
# encoding: UTF-8
|
2
|
+
# class Docme
|
2
3
|
|
3
4
|
require 'docme/utils'
|
4
5
|
require 'erb'
|
@@ -6,120 +7,54 @@ require 'fileutils'
|
|
6
7
|
|
7
8
|
class Docme
|
8
9
|
|
9
|
-
def
|
10
|
+
def initialize(path)
|
11
|
+
@path = path
|
12
|
+
@pages = []
|
10
13
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
14
|
+
make_home
|
15
|
+
end
|
16
|
+
|
17
|
+
def make_home
|
18
|
+
# create the directory where the site will be stored
|
19
|
+
return true if File.directory?('docme_site')
|
20
|
+
puts "+ Setting up docme's living arrangements."
|
21
|
+
Dir.mkdir('docme_site')
|
22
|
+
puts ' - Woohoo! docme has a home!'
|
23
|
+
end
|
24
|
+
|
25
|
+
def scan_docs
|
26
|
+
# if a directory was provided
|
27
|
+
if File.directory?(@path)
|
28
|
+
|
29
|
+
@pages.concat parse_directory(@path)
|
30
|
+
|
31
|
+
else # if a single file was provided
|
16
32
|
|
17
|
-
|
18
|
-
sourceFile = File.open(file).read
|
19
|
-
file = cleanFilename(file)
|
20
|
-
items = Hash.new
|
21
|
-
collective = Array.new
|
22
|
-
block_content = Hash.new
|
23
|
-
block_attr = nil
|
24
|
-
block_flag = 0
|
25
|
-
multi_line = ""
|
26
|
-
isDocme = 0
|
27
|
-
|
28
|
-
|
29
|
-
#PARSING
|
30
|
-
sourceFile.each_line do |line|
|
31
|
-
|
32
|
-
stripLine = line.lstrip
|
33
|
-
|
34
|
-
|
35
|
-
#if this is the begining of a comment block then start a new function doc
|
36
|
-
if stripLine.rindex("/*", 1) == 0
|
37
|
-
next
|
38
|
-
end
|
39
|
-
|
40
|
-
#if this is the end of a comment block then there is nothing to do
|
41
|
-
if stripLine.rindex("*/", 1) == 0 && isDocme == 1
|
42
|
-
#end the function section of the erb file
|
43
|
-
collective.push(items)
|
44
|
-
isDocme = 0
|
45
|
-
items = Hash.new
|
46
|
-
next
|
47
|
-
end
|
48
|
-
|
49
|
-
#if line begins with '+' then we are defining an attribute
|
50
|
-
if stripLine.rindex("+",0) == 0
|
51
|
-
|
52
|
-
isDocme = 1
|
53
|
-
parts = stripLine.split(":")
|
54
|
-
|
55
|
-
#parts[0] == the attribute name
|
56
|
-
attribute = cleanAttribute(parts[0])
|
57
|
-
attribute = attribute.upcase
|
58
|
-
|
59
|
-
content = cleanContent(parts[1])
|
60
|
-
|
61
|
-
#if the content begins with '{' then we have a regular block
|
62
|
-
if content.rindex("{{",0) == 0
|
63
|
-
#go to the next line and look for '-', set block flag
|
64
|
-
#add the attribute to the doc
|
65
|
-
block_flag = 1
|
66
|
-
block_attr = attribute
|
67
|
-
next
|
68
|
-
end
|
69
|
-
|
70
|
-
#add content to the doc
|
71
|
-
items.store(attribute, content)
|
72
|
-
next
|
73
|
-
end
|
74
|
-
|
75
|
-
#if line begins with a '-' then we are in a block, if we are in a block but there are no sub attributes then do a multi-line
|
76
|
-
if stripLine.rindex("-",0) == 0 && isDocme == 1
|
77
|
-
parts = stripLine.split(":")
|
78
|
-
|
79
|
-
#parts[0] == the attribute name
|
80
|
-
attribute = cleanAttribute(parts[0])
|
81
|
-
attribute = attribute.upcase
|
82
|
-
|
83
|
-
content = cleanContent(parts[1])
|
84
|
-
|
85
|
-
#if !var and !code, then process as regular attributes
|
86
|
-
#put the attribute name
|
87
|
-
#put the content
|
88
|
-
block_content.store(attribute, content)
|
89
|
-
next
|
90
|
-
end
|
91
|
-
|
92
|
-
if block_flag == 1 && stripLine.rindex("}}",0) != 0 && isDocme == 1
|
93
|
-
line = cleanCode(line)
|
94
|
-
multi_line.concat(line)
|
95
|
-
next
|
96
|
-
end
|
97
|
-
|
98
|
-
#if the block flag is set and we reach the end of a block, then we reached the end of a regular block, unset flag
|
99
|
-
if block_flag == 1 && stripLine.rindex("}}",0) == 0 && isDocme ==1
|
100
|
-
block_flag = 0
|
101
|
-
|
102
|
-
if multi_line.length > 0
|
103
|
-
items.store(block_attr, multi_line)
|
104
|
-
else
|
105
|
-
items.store(block_attr, block_content)
|
106
|
-
end
|
107
|
-
|
108
|
-
multi_line = ""
|
109
|
-
block_attr = nil
|
110
|
-
block_content = Hash.new
|
111
|
-
next
|
112
|
-
end
|
33
|
+
@pages.push(parse_file(@path))
|
113
34
|
|
114
35
|
end
|
36
|
+
end
|
115
37
|
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
38
|
+
def render_docs
|
39
|
+
puts '+ docme generated the following pages: '
|
40
|
+
@pages.each do |page_object|
|
41
|
+
page_object.render_site(@pages)
|
42
|
+
puts ' - ' + page_object.name
|
120
43
|
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def render_index
|
47
|
+
|
48
|
+
template = File.read(File.join(File.dirname(__FILE__), 'templates/index.erb'))
|
121
49
|
|
122
|
-
|
50
|
+
renderer = ERB.new(template)
|
123
51
|
|
52
|
+
File.open('index.html', 'w+') do |f|
|
53
|
+
f.write(renderer.result(binding))
|
54
|
+
end
|
55
|
+
|
56
|
+
# add page to docme dir
|
57
|
+
FileUtils.mv('index.html', 'docme_site/index.html')
|
124
58
|
end
|
59
|
+
|
125
60
|
end
|
data/lib/docme/block.rb
ADDED
@@ -0,0 +1,98 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
# class Block
|
3
|
+
|
4
|
+
require 'docme/utils'
|
5
|
+
|
6
|
+
class Block
|
7
|
+
|
8
|
+
attr_reader :attributes
|
9
|
+
attr_reader :is_empty
|
10
|
+
|
11
|
+
def initialize(block)
|
12
|
+
@attributes = {}
|
13
|
+
@is_empty = true
|
14
|
+
|
15
|
+
parse_block(block)
|
16
|
+
end
|
17
|
+
|
18
|
+
def parse_block(block)
|
19
|
+
|
20
|
+
is_docme = 0
|
21
|
+
block_flag = 0
|
22
|
+
block_attr = ''
|
23
|
+
multi_line = ''
|
24
|
+
block_content = {}
|
25
|
+
|
26
|
+
# each element in the block represents a line
|
27
|
+
block.each do |line|
|
28
|
+
strip_line = line.lstrip
|
29
|
+
|
30
|
+
# if line begins with '+' then we are defining an attribute
|
31
|
+
if strip_line.rindex('+', 0) == 0
|
32
|
+
|
33
|
+
is_docme = 1
|
34
|
+
parts = strip_line.split(':')
|
35
|
+
|
36
|
+
# parts[0] == the attribute name
|
37
|
+
attribute = clean_attribute(parts[0])
|
38
|
+
|
39
|
+
content = clean_content(parts[1])
|
40
|
+
|
41
|
+
# if the content begins with '{' then we have a regular block
|
42
|
+
if content.rindex('{{', 0) == 0
|
43
|
+
# go to the next line and look for '-', set block flag
|
44
|
+
# add the attribute to the doc
|
45
|
+
block_flag = 1
|
46
|
+
block_attr = attribute
|
47
|
+
next
|
48
|
+
end
|
49
|
+
|
50
|
+
# add content to the doc
|
51
|
+
@attributes.store(attribute, content)
|
52
|
+
next
|
53
|
+
end
|
54
|
+
|
55
|
+
# if line begins with a '-' then we are in a block, if we are in a block but there are no sub attributes then do a multi-line
|
56
|
+
if strip_line.rindex('-', 0) == 0 && is_docme == 1
|
57
|
+
parts = strip_line.split(':')
|
58
|
+
|
59
|
+
# parts[0] == the attribute name
|
60
|
+
attribute = clean_attribute(parts[0])
|
61
|
+
|
62
|
+
content = clean_content(parts[1])
|
63
|
+
|
64
|
+
# if !var and !code, then process as regular attributes
|
65
|
+
# put the attribute name
|
66
|
+
# put the content
|
67
|
+
block_content.store(attribute, content)
|
68
|
+
next
|
69
|
+
end
|
70
|
+
|
71
|
+
if block_flag == 1 && strip_line.rindex('}}', 0) != 0 && is_docme == 1
|
72
|
+
line = clean_code(line)
|
73
|
+
multi_line.concat(line)
|
74
|
+
next
|
75
|
+
end
|
76
|
+
|
77
|
+
# if the block flag is set and we reach the end of a block, then we reached the end of a regular block, unset flag
|
78
|
+
if block_flag == 1 && strip_line.rindex('}}', 0) == 0 && is_docme == 1
|
79
|
+
block_flag = 0
|
80
|
+
|
81
|
+
if multi_line.length > 0
|
82
|
+
@attributes.store(block_attr, multi_line)
|
83
|
+
else
|
84
|
+
@attributes.store(block_attr, block_content)
|
85
|
+
end
|
86
|
+
|
87
|
+
multi_line = ''
|
88
|
+
block_attr = nil
|
89
|
+
block_content = {}
|
90
|
+
next
|
91
|
+
end
|
92
|
+
|
93
|
+
end
|
94
|
+
|
95
|
+
@is_empty = @attributes.empty?
|
96
|
+
end
|
97
|
+
|
98
|
+
end
|
data/lib/docme/page.rb
ADDED
@@ -0,0 +1,68 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
# class Page
|
3
|
+
|
4
|
+
require 'docme/utils'
|
5
|
+
require 'erb'
|
6
|
+
require 'fileutils'
|
7
|
+
|
8
|
+
require_relative 'block.rb'
|
9
|
+
|
10
|
+
class Page
|
11
|
+
|
12
|
+
attr_reader :name
|
13
|
+
attr_reader :blocks
|
14
|
+
attr_reader :is_empty
|
15
|
+
|
16
|
+
@source_file = ''
|
17
|
+
|
18
|
+
def initialize(file)
|
19
|
+
@name = clean_filename(file)
|
20
|
+
@source_file = File.open(file).read
|
21
|
+
@blocks = []
|
22
|
+
@is_empty = true
|
23
|
+
end
|
24
|
+
|
25
|
+
def parse_blocks
|
26
|
+
block = []
|
27
|
+
|
28
|
+
@source_file.each_line do |line|
|
29
|
+
strip_line = line.lstrip
|
30
|
+
|
31
|
+
# if this is the begining of a comment block then start a new function doc
|
32
|
+
next if strip_line.rindex('/*', 1) == 0
|
33
|
+
|
34
|
+
# if this is the end of a comment block then there is nothing to do
|
35
|
+
if strip_line.rindex('*/', 1) == 0
|
36
|
+
# pass the block off to be processed, the returned object will be stored in the blocks array
|
37
|
+
temp_block = Block.new(block)
|
38
|
+
@blocks.push(temp_block) unless temp_block.is_empty == true
|
39
|
+
block = []
|
40
|
+
next
|
41
|
+
end
|
42
|
+
|
43
|
+
block.push(line)
|
44
|
+
end
|
45
|
+
|
46
|
+
@is_empty = @blocks.empty?
|
47
|
+
end
|
48
|
+
|
49
|
+
def render_site(index)
|
50
|
+
@index = []
|
51
|
+
|
52
|
+
index.each do |page|
|
53
|
+
@index.push(page.name)
|
54
|
+
end
|
55
|
+
|
56
|
+
# puts content
|
57
|
+
renderer = ERB.new(File.read(File.join(File.dirname(__FILE__), '../templates/page.erb'))
|
58
|
+
)
|
59
|
+
|
60
|
+
page = @name + '.html'
|
61
|
+
|
62
|
+
File.open(page, 'w+') do |f|
|
63
|
+
f.write(renderer.result(binding))
|
64
|
+
end
|
65
|
+
|
66
|
+
FileUtils.mv(page, 'docme_site/' + page)
|
67
|
+
end
|
68
|
+
end
|
data/lib/docme/utils.rb
CHANGED
@@ -1,200 +1,93 @@
|
|
1
|
-
#
|
1
|
+
# encoding: UTF-8
|
2
|
+
# docme utils
|
2
3
|
|
4
|
+
require 'docme/page'
|
3
5
|
|
4
|
-
|
5
|
-
|
6
|
-
attr = attr.delete(
|
7
|
-
attr = attr.delete(
|
8
|
-
attr = attr.
|
9
|
-
|
6
|
+
def clean_attribute(attr)
|
7
|
+
attr = attr.delete('+[')
|
8
|
+
attr = attr.delete(']')
|
9
|
+
attr = attr.delete('-')
|
10
|
+
attr = attr.upcase
|
11
|
+
attr
|
10
12
|
end
|
11
13
|
|
12
|
-
def
|
13
|
-
line.gsub!(
|
14
|
-
line.gsub!(
|
14
|
+
def clean_code(line)
|
15
|
+
line.gsub!('<', '<')
|
16
|
+
line.gsub!('>', '>')
|
15
17
|
|
16
|
-
|
18
|
+
line
|
17
19
|
end
|
18
20
|
|
19
|
-
def
|
21
|
+
def clean_content(line)
|
20
22
|
line = line.lstrip
|
21
|
-
line.
|
22
|
-
|
23
|
+
line = line.rstrip
|
24
|
+
|
25
|
+
line
|
23
26
|
end
|
24
27
|
|
25
|
-
def
|
28
|
+
def clean_filename(file)
|
26
29
|
file = File.basename(file)
|
27
|
-
file = file.split(
|
30
|
+
file = file.split('.')
|
28
31
|
file = file[0]
|
29
|
-
|
32
|
+
|
33
|
+
file
|
30
34
|
end
|
31
35
|
|
32
|
-
def
|
33
|
-
|
36
|
+
def unsupported_extension(file)
|
37
|
+
parse = true
|
38
|
+
|
39
|
+
unsupported_extensions = ['.gem', '.jar', '.gemspec', '.zip', '.tar', '.gz', '.tar.gz', '.jpeg', '.jpg', '.png', '.exe']
|
34
40
|
|
35
|
-
|
41
|
+
parse = false unless unsupported_extensions.include?(File.extname(file)) || (File.executable?(file) && !Dir.exist?(file)) || (File.executable_real?(file) && !Dir.exist?(file))
|
36
42
|
|
37
|
-
|
38
|
-
|
43
|
+
parse
|
44
|
+
end
|
39
45
|
|
40
|
-
|
41
|
-
|
42
|
-
width: 70%;
|
43
|
-
padding-left: 30%;
|
44
|
-
font-size:2em;
|
45
|
-
}
|
46
|
-
</style>
|
46
|
+
def unsupported_encoding(file)
|
47
|
+
parse = true
|
47
48
|
|
48
|
-
|
49
|
+
parse = false unless file.encoding.name != 'UTF-8'
|
49
50
|
|
50
|
-
|
51
|
-
|
52
|
-
<div class="list-group">
|
53
|
-
<% for @page in @pages %>
|
51
|
+
parse
|
52
|
+
end
|
54
53
|
|
55
|
-
|
56
|
-
<a href="<%= @page %>" class="list-group-item list-group-item-info"><%= @name %></a>
|
54
|
+
def parse_directory(path)
|
57
55
|
|
58
|
-
|
59
|
-
</div>
|
60
|
-
</div>
|
61
|
-
</body>
|
56
|
+
files_array = []
|
62
57
|
|
63
|
-
|
58
|
+
# for each file in the sub directory
|
59
|
+
Dir.foreach(path) do |f|
|
64
60
|
|
65
|
-
|
61
|
+
next if f == '.' || f == '..' || f.rindex('.', 0) || unsupported_encoding(f) || unsupported_extension(f)
|
66
62
|
|
67
|
-
|
68
|
-
|
69
|
-
end
|
63
|
+
# if another directory then go inside
|
64
|
+
if File.directory?(path + '/' + f)
|
70
65
|
|
71
|
-
|
66
|
+
files_array.concat parse_directory(path + '/' + f)
|
72
67
|
|
73
|
-
|
68
|
+
else # else parse normally
|
74
69
|
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
#puts content
|
81
|
-
|
82
|
-
template = '<!DOCTYPE html>
|
83
|
-
<html>
|
84
|
-
|
85
|
-
<head>
|
86
|
-
<meta name="viewport" content="width=device-width, initial-scale=1">
|
87
|
-
|
88
|
-
<style type="text/css">
|
89
|
-
body{
|
90
|
-
}
|
91
|
-
#panels-wrapper{
|
92
|
-
width: 80%;
|
93
|
-
float: left;
|
94
|
-
padding-left: 10%;
|
95
|
-
}
|
96
|
-
#side-panel{
|
97
|
-
width: 10%;
|
98
|
-
float: left;
|
99
|
-
padding-left: 10px;
|
100
|
-
}
|
101
|
-
pre-scrollable{
|
102
|
-
overflow-x: scroll;
|
103
|
-
white-space: nowrap;
|
104
|
-
}
|
105
|
-
|
106
|
-
p.code{
|
107
|
-
border:1px solid #000000;
|
108
|
-
overflow-x:scroll;
|
109
|
-
white-space: pre;
|
110
|
-
font-family:monospace,monospace;
|
111
|
-
font-size:1em;
|
112
|
-
background-color:#f5f5f5;
|
113
|
-
padding:2em;
|
114
|
-
}
|
115
|
-
|
116
|
-
</style>
|
117
|
-
</head>
|
118
|
-
|
119
|
-
<link href="https://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet" media="screen">
|
120
|
-
|
121
|
-
|
122
|
-
<body>
|
123
|
-
<nav class="navbar navbar-default navbar-static-top" role="navigation">
|
124
|
-
<div class="container">
|
125
|
-
<div class="collapse navbar-collapse">
|
126
|
-
<ul class="nav navbar-nav">
|
127
|
-
<li><a class="navbar-brand" href="#"><%= @filename%></a></li>
|
128
|
-
</ul>
|
129
|
-
</div>
|
130
|
-
</div>
|
131
|
-
</nav>
|
132
|
-
<div id="side-panel" class="panel panel-default">
|
133
|
-
<a href="index.html" class="list-group-item list-group-item-info">INDEX</a>
|
134
|
-
</div>
|
135
|
-
<div id="panels-wrapper">
|
136
|
-
<% for @borg in @collective %>
|
137
|
-
<div class="panel panel-primary">
|
138
|
-
<% for @attribute in @borg %>
|
139
|
-
<% if @attribute[0] == "TITLE" %>
|
140
|
-
<div class="panel-heading" id="<%= @attribute[1]%>">
|
141
|
-
<h2 class="panel-title"><%= @attribute[1] %></h2>
|
142
|
-
</div>
|
143
|
-
<div class="panel-body">
|
144
|
-
<% end %>
|
145
|
-
<% if @attribute[0] == "CODE" %>
|
146
|
-
<h4>CODE</h4>
|
147
|
-
<p class="code"><%= @attribute[1] %></p>
|
148
|
-
<% end %>
|
149
|
-
<% if @attribute[0] != "TITLE" && @attribute[0] != "CODE" %>
|
150
|
-
<% if @attribute[1].class == Hash %>
|
151
|
-
<% if @attribute[0] == "ANCHOR" %>
|
152
|
-
<h4><%= @attribute[0] %></h4>
|
153
|
-
<table class="table">
|
154
|
-
<% for @item in @attribute[1]%>
|
155
|
-
<tr>
|
156
|
-
<th><%= @item[0] %></th>
|
157
|
-
<td><a href="<%= @item[1] %>"><%= @item[1] %></a></td>
|
158
|
-
</tr>
|
159
|
-
<% end %>
|
160
|
-
</table>
|
161
|
-
<% else %>
|
162
|
-
<h4><%= @attribute[0] %></h4>
|
163
|
-
<table class="table">
|
164
|
-
<% for @item in @attribute[1]%>
|
165
|
-
<tr>
|
166
|
-
<th><%= @item[0] %></th>
|
167
|
-
<td><%= @item[1] %></td>
|
168
|
-
</tr>
|
169
|
-
<% end %>
|
170
|
-
</table>
|
171
|
-
<% end %>
|
172
|
-
<% end %>
|
173
|
-
<% if @attribute[0] != "CODE" && @attribute[0] != "TITLE" && @attribute[1].class != Hash%>
|
174
|
-
<h4><%= @attribute[0]%></h4>
|
175
|
-
<p><%= @attribute[1] %></p>
|
176
|
-
<% end %>
|
177
|
-
<% end %>
|
178
|
-
<% end %>
|
179
|
-
</div>
|
180
|
-
</div>
|
181
|
-
<% end %>
|
182
|
-
</div>
|
183
|
-
|
184
|
-
<script src="https://netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script>
|
185
|
-
</body>
|
186
|
-
|
187
|
-
</html>'
|
188
|
-
|
189
|
-
renderer = ERB.new(template)
|
190
|
-
|
191
|
-
page = @filename + ".html"
|
192
|
-
|
193
|
-
File.open(page, "w+") do |f|
|
194
|
-
f.write(renderer.result(binding))
|
70
|
+
temp_page = parse_file(path + '/' + f)
|
71
|
+
files_array.push(temp_page) unless temp_page.nil? || temp_page.is_empty == true
|
72
|
+
|
73
|
+
end
|
195
74
|
end
|
196
75
|
|
197
|
-
|
76
|
+
files_array
|
198
77
|
|
199
78
|
end
|
200
79
|
|
80
|
+
def parse_file(file)
|
81
|
+
|
82
|
+
if File.file?(file) && File.exist?(file) && !file.rindex('.', 0) && !unsupported_encoding(file) && !unsupported_extension(file)
|
83
|
+
|
84
|
+
page = Page.new(file)
|
85
|
+
page.parse_blocks
|
86
|
+
|
87
|
+
page
|
88
|
+
|
89
|
+
else
|
90
|
+
nil
|
91
|
+
end
|
92
|
+
|
93
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
|
4
|
+
<style type="text/css">
|
5
|
+
#wrapper{
|
6
|
+
width: 70%;
|
7
|
+
padding-left: 30%;
|
8
|
+
font-size:2em;
|
9
|
+
}
|
10
|
+
</style>
|
11
|
+
|
12
|
+
<link href="https://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet" media="screen">
|
13
|
+
|
14
|
+
<body>
|
15
|
+
<div id="wrapper">
|
16
|
+
<div class="list-group">
|
17
|
+
<% for @page in @pages %>
|
18
|
+
<a href="<%= @page.name %>.html" class="list-group-item list-group-item-info"><%= @page.name %></a>
|
19
|
+
|
20
|
+
<% end %>
|
21
|
+
</div>
|
22
|
+
</div>
|
23
|
+
</body>
|
24
|
+
|
25
|
+
</html>
|
@@ -0,0 +1,110 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
|
4
|
+
<head>
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
6
|
+
|
7
|
+
<style type="text/css">
|
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
|
+
}
|
24
|
+
|
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
|
+
</head>
|
37
|
+
|
38
|
+
<link href="https://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet" media="screen">
|
39
|
+
|
40
|
+
|
41
|
+
<body>
|
42
|
+
<nav class="navbar navbar-default navbar-static-top" role="navigation">
|
43
|
+
<div class="container">
|
44
|
+
<div class="collapse navbar-collapse">
|
45
|
+
<ul class="nav navbar-nav">
|
46
|
+
<li><a class="navbar-brand" href="#"><%= @name%></a></li>
|
47
|
+
</ul>
|
48
|
+
</div>
|
49
|
+
</div>
|
50
|
+
</nav>
|
51
|
+
<div id="side-panel" class="panel panel-default">
|
52
|
+
<a href="index.html" class="list-group-item list-group-item-info">INDEX</a>
|
53
|
+
<% for @page in @index %>
|
54
|
+
<a class="list-group-item list-group-item-info" href="<%= @page %>.html"><%= @page %></a>
|
55
|
+
<% end %>
|
56
|
+
</div>
|
57
|
+
<div id="panels-wrapper">
|
58
|
+
<% for @block in @blocks %>
|
59
|
+
<div class="panel panel-primary">
|
60
|
+
<% @attributes = @block.attributes %>
|
61
|
+
<% for @attribute in @attributes %>
|
62
|
+
<% if @attribute[0] == "TITLE" %>
|
63
|
+
<div class="panel-heading" id="<%= @attribute[1]%>">
|
64
|
+
<h2 class="panel-title"><%= @attribute[1] %></h2>
|
65
|
+
</div>
|
66
|
+
<div class="panel-body">
|
67
|
+
<% end %>
|
68
|
+
<% if @attribute[0] == "CODE" %>
|
69
|
+
<h4>CODE</h4>
|
70
|
+
<p class="code"><%= @attribute[1] %></p>
|
71
|
+
<% end %>
|
72
|
+
<% if @attribute[0] != "TITLE" && @attribute[0] != "CODE" %>
|
73
|
+
<% if @attribute[1].class == Hash %>
|
74
|
+
<% if @attribute[0] == "ANCHOR" %>
|
75
|
+
<h4><%= @attribute[0] %></h4>
|
76
|
+
<table class="table">
|
77
|
+
<% for @item in @attribute[1]%>
|
78
|
+
<tr>
|
79
|
+
<th><%= @item[0] %></th>
|
80
|
+
<td><a href="<%= @item[1] %>"><%= @item[1] %></a></td>
|
81
|
+
</tr>
|
82
|
+
<% end %>
|
83
|
+
</table>
|
84
|
+
<% else %>
|
85
|
+
<h4><%= @attribute[0] %></h4>
|
86
|
+
<table class="table">
|
87
|
+
<% for @item in @attribute[1]%>
|
88
|
+
<tr>
|
89
|
+
<th><%= @item[0] %></th>
|
90
|
+
<td><%= @item[1] %></td>
|
91
|
+
</tr>
|
92
|
+
<% end %>
|
93
|
+
</table>
|
94
|
+
<% end %>
|
95
|
+
<% end %>
|
96
|
+
<% if @attribute[0] != "CODE" && @attribute[0] != "TITLE" && @attribute[1].class != Hash%>
|
97
|
+
<h4><%= @attribute[0]%></h4>
|
98
|
+
<p><%= @attribute[1] %></p>
|
99
|
+
<% end %>
|
100
|
+
<% end %>
|
101
|
+
<% end %>
|
102
|
+
</div>
|
103
|
+
</div>
|
104
|
+
<% end %>
|
105
|
+
</div>
|
106
|
+
|
107
|
+
<script src="https://netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script>
|
108
|
+
</body>
|
109
|
+
|
110
|
+
</html>
|
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: 1.
|
4
|
+
version: 1.1.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-
|
11
|
+
date: 2014-06-06 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,7 +22,11 @@ extra_rdoc_files: []
|
|
22
22
|
files:
|
23
23
|
- bin/docme
|
24
24
|
- lib/docme.rb
|
25
|
+
- lib/docme/block.rb
|
26
|
+
- lib/docme/page.rb
|
25
27
|
- lib/docme/utils.rb
|
28
|
+
- lib/templates/index.erb
|
29
|
+
- lib/templates/page.erb
|
26
30
|
homepage: https://github.com/philosowaffle/docme
|
27
31
|
licenses:
|
28
32
|
- Mozilla Public License
|