qdoc 0.0.22 → 0.0.23
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/lib/qdoc.rb +79 -73
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8d15f985461e6968951af4faa1cd89f97e176a6a
|
4
|
+
data.tar.gz: 800dbc887390648b3a60f7a403b41b5dd2c8f863
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fc7674660a98508ec3b4cc10cbe49a71e4702fac92774f9bac0cd0592c8f90e79b4a4dc7cb949938e74b97c9ec85b1b89f9ac1e311f2bd83b018f8ae4e29549f
|
7
|
+
data.tar.gz: 2f89b14f7ade0106202a65389b3a5c6a6d05fe2e1193f5e046f9490e2e5aca1c30f0e278019a7d4e1b3e04bd07cefb405cd87b536b6105c1617f9400d1cb3f9c
|
data/lib/qdoc.rb
CHANGED
@@ -2,100 +2,106 @@
|
|
2
2
|
require 'redcarpet'
|
3
3
|
require 'kramdown'
|
4
4
|
require 'fileutils'
|
5
|
+
require 'cgi'
|
5
6
|
|
6
7
|
class QDoc
|
7
|
-
|
8
|
-
def initialize
|
9
|
-
|
10
|
-
|
8
|
+
|
9
|
+
def initialize( options = {} )
|
10
|
+
defaults = { output_directory: "doc", index_content: "Choose from the left nav." }
|
11
|
+
options = defaults.merge options
|
12
|
+
@out_dir = options[:output_directory]
|
13
|
+
|
14
|
+
@index = { file: "index.html", title: "index", extension: "html", content: options[:index_content], directory: nil, output_file: "index.html", parse: false }
|
15
|
+
|
16
|
+
@documents = Array.new
|
11
17
|
@locations = Array.new
|
12
|
-
@out_dir = "doc"
|
13
18
|
@redcarpet = Redcarpet::Markdown.new(Redcarpet::Render::HTML, :autolink => true, :space_after_headers => true)
|
14
19
|
end
|
15
|
-
|
20
|
+
|
16
21
|
def run
|
17
|
-
|
18
|
-
stage_files( @locations )
|
22
|
+
@locations = identify_locations
|
23
|
+
@documents = stage_files( @locations )
|
19
24
|
nav = create_nav( @documents )
|
20
|
-
index = nil
|
25
|
+
# index = nil
|
21
26
|
make_doc_directory
|
22
27
|
@documents.each do |doc|
|
23
|
-
|
24
|
-
|
25
|
-
doc[:content] = parse_file( "#{doc[:directory]}/#{doc[:filename]}")
|
26
|
-
write_file( "#{@out_dir}/#{doc[:directory]}-#{doc[:file]}", create_page(nav, doc[:content]) )
|
27
|
-
# write_file( "#{@out_dir}/#{doc[:file]}", create_page(nav, doc[:content]) )
|
28
|
+
doc[:content] = parse_document( doc ) if doc[:parse] #"#{doc[:directory]}/#{doc[:filename]}")
|
29
|
+
write_file( "#{@out_dir}/#{doc[:output_file]}", create_page(nav, doc[:content]) )
|
28
30
|
end
|
29
|
-
write_file( "#{@out_dir}/#{index[:file]}", create_page(nav, create_index))
|
30
31
|
copy_bootstrap
|
31
|
-
# create_custom_css
|
32
32
|
end
|
33
|
-
|
33
|
+
|
34
34
|
private
|
35
|
-
|
35
|
+
|
36
36
|
def make_doc_directory
|
37
37
|
if !File.directory?(@out_dir)
|
38
38
|
FileUtils.mkdir_p(@out_dir)
|
39
39
|
end
|
40
40
|
end
|
41
|
-
|
42
|
-
def
|
43
|
-
|
44
|
-
Dir.foreach('./') do |
|
45
|
-
next if
|
46
|
-
|
41
|
+
|
42
|
+
def identify_locations
|
43
|
+
locations = [""] # Current directory
|
44
|
+
Dir.foreach('./') do |node|
|
45
|
+
next if node =~ /\A\./ || node == @out_dir # || leaf =~ /\.rb\z/
|
46
|
+
locations << node if File.directory?(node)
|
47
47
|
end
|
48
|
+
locations
|
48
49
|
end
|
49
|
-
|
50
|
+
|
50
51
|
def create_index
|
51
52
|
page = "<div class='col-md-8'><p>Choose from the left navigation to select a document</p>" + \
|
52
|
-
|
53
|
-
|
53
|
+
"<p>#{@documents.count-1} files parsed from the following locations:<p>" + \
|
54
|
+
"<table class='table table-striped'><tbody>"
|
54
55
|
@locations.each do |l|
|
55
56
|
l = "Current Dir" if l == ""
|
56
57
|
page += "<tr><td>#{l}</td></tr>"
|
57
58
|
end
|
58
59
|
page += "</tbody></table></div>"
|
59
60
|
end
|
60
|
-
|
61
|
+
|
61
62
|
def stage_files( locations )
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
63
|
+
documents = [ @index ]
|
64
|
+
locations.each do |dir|
|
65
|
+
Dir.foreach("./#{dir}") do |node|
|
66
|
+
node.match(/(?<name>.*)\.(?<ext>txt|md|rc)\z/) do |match|
|
67
|
+
filehead = match[:name]
|
68
|
+
file_ext = match[:ext]
|
69
|
+
filename = filehead + "." + file_ext
|
70
|
+
documents << { directory: dir, filename: filename, extension: file_ext, file: filehead + ".html", title: filename, content: nil, parse: true, output_file: "#{dir}-#{filename}.html" }
|
71
|
+
end
|
70
72
|
end
|
71
73
|
end
|
74
|
+
documents
|
72
75
|
end
|
73
|
-
|
74
|
-
def
|
76
|
+
|
77
|
+
def bootstrap_tables( html )
|
75
78
|
html.gsub('<table>', '<table class="table">')
|
76
79
|
end
|
77
80
|
|
78
|
-
def
|
81
|
+
def parse_document( doc )
|
82
|
+
filename = doc[:directory] == "" ? doc[:filename] : "#{doc[:directory]}/#{doc[:filename]}"
|
79
83
|
contents = File.open( filename, "r" ) do |c|
|
80
84
|
c.read
|
81
85
|
end
|
82
|
-
contents = fix_hawaiian
|
83
|
-
case
|
84
|
-
when "
|
85
|
-
return Kramdown::Document.new( contents ).to_html
|
86
|
-
when "
|
87
|
-
return @redcarpet.render( contents )
|
88
|
-
when "
|
89
|
-
return @redcarpet.render( contents )
|
86
|
+
# contents = fix_hawaiian CGI::escapeHTML contents
|
87
|
+
case doc[:extension]
|
88
|
+
when "md"
|
89
|
+
return fix_hawaiian Kramdown::Document.new( CGI::escapeHTML contents ).to_html
|
90
|
+
when "rc"
|
91
|
+
return @redcarpet.render( fix_hawaiian CGI::escapeHTML contents )
|
92
|
+
when "txt"
|
93
|
+
return @redcarpet.render( fix_hawaiian CGI::escapeHTML contents )
|
94
|
+
when "html"
|
95
|
+
return contents
|
90
96
|
else
|
91
97
|
nil
|
92
98
|
end
|
93
99
|
end
|
94
|
-
|
100
|
+
|
95
101
|
def copy_bootstrap
|
96
102
|
FileUtils.cp( File.dirname(__FILE__) + "/bootstrap.min.css", "#{@out_dir}/bootstrap.min.css" )
|
97
103
|
end
|
98
|
-
|
104
|
+
|
99
105
|
def fix_hawaiian( text )
|
100
106
|
text.gsub("ʻ", "‘").gsub("ā", "ā").gsub("ē","ē").gsub("ī", "ī").gsub("ō","ō").gsub("ū", "ū").gsub("Ā", "Ā").gsub("Ē","Ē").gsub("Ī", "Ī").gsub("Ō", "Ō").gsub("Ū", "Ū")
|
101
107
|
end
|
@@ -103,42 +109,42 @@ class QDoc
|
|
103
109
|
def create_page( nav, content )
|
104
110
|
"<!DOCTYPE html>
|
105
111
|
<html>
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
112
|
+
<head>
|
113
|
+
<title>My Documents</title>
|
114
|
+
<link href='bootstrap.min.css' rel='stylesheet'>
|
115
|
+
</head>
|
116
|
+
<body>
|
117
|
+
<div class='row'>
|
118
|
+
<div class='col-md-3'>" + \
|
119
|
+
nav + \
|
120
|
+
"</div>
|
121
|
+
<div class='col-md-9'>" + \
|
122
|
+
content + \
|
123
|
+
"</div>
|
124
|
+
</div>
|
125
|
+
</body>"
|
120
126
|
end
|
121
127
|
|
122
128
|
def create_nav( documents )
|
123
|
-
snippet = "<table class='table'>
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
129
|
+
snippet = "<table class='table table-striped'>
|
130
|
+
<thead>
|
131
|
+
<tr>
|
132
|
+
<th>Location</th><th>Document</th>
|
133
|
+
</tr>
|
134
|
+
</thead>
|
135
|
+
<tbody>"
|
130
136
|
documents.each do |doc|
|
131
137
|
snippet += "<tr>
|
132
|
-
|
138
|
+
<td>#{doc[:directory]}</td><td><a href='#{doc[:output_file]}'>#{doc[:title]}</a></td>
|
133
139
|
</tr>"
|
134
140
|
end
|
135
141
|
snippet += "</tbody></table>"
|
136
142
|
snippet
|
137
143
|
end
|
138
|
-
|
144
|
+
|
139
145
|
def write_file( filename, content )
|
140
146
|
File.open(filename, "w") do |o|
|
141
|
-
o.write(
|
147
|
+
o.write( bootstrap_tables(content) )
|
142
148
|
o.close
|
143
149
|
end
|
144
150
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: qdoc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.23
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Patrick Sereno
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-08-
|
11
|
+
date: 2013-08-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: redcarpet
|