qdoc 0.0.25 → 0.0.99

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/qdoc.rb +79 -26
  3. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0b2a3b0810bc5f07f4e658408dee9a017c389115
4
- data.tar.gz: 17436f66490ded735a52d6eb70474b403d10c97f
3
+ metadata.gz: 2871f3190e6d0d7ad6027ba85b3fa39c6a5f50fd
4
+ data.tar.gz: b119accf55edb08edac75fe2b990fe4ad33bdc54
5
5
  SHA512:
6
- metadata.gz: a43620e478f79112abc288a886048fd56583ff1095e7b3fd82de5adc39ae9b5726925b1c1b2c96c02415542bc881c938217e5fc29053ba9e1bfd2365c79e5bf1
7
- data.tar.gz: cede091c8d86c3715c16c4cd52a176f80918cb4b6a85e5d7ba8c865077ccabcce54be829055db26f46edd6800be6bebc8e560cb9aeb456513ff833af9cb5f74f
6
+ metadata.gz: b4fd64d2e838a4d8a13b6eba0d1c6b76928ac39366af2d1846b867c1c1d9892ae491a7bbd6f61f3785ac53c32dc8129aacd2864a38e142159e06acf4f629bb9d
7
+ data.tar.gz: cb6e241718e1c2604a35626074b14e7128c77f26df9c21e0d3061f413fb36bc171b10a9762db0ffd5ae1b2b48649acb5cb3f96fa2ab8b0b6e6058ea3a2265f29
@@ -2,10 +2,8 @@
2
2
  require 'redcarpet'
3
3
  require 'kramdown'
4
4
  require 'fileutils'
5
- require 'cgi'
6
5
  require 'nokogiri'
7
-
8
- #
6
+ #require 'pry'
9
7
 
10
8
  class QDoc
11
9
 
@@ -21,7 +19,7 @@ class QDoc
21
19
 
22
20
  @documents = Array.new
23
21
  @locations = Array.new
24
- @redcarpet = Redcarpet::Markdown.new(Redcarpet::Render::HTML, :autolink => true, :space_after_headers => true)
22
+ @redcarpet = Redcarpet::Markdown.new(Redcarpet::Render::HTML.new( :with_toc_data => true), :autolink => true, :space_after_headers => false, :no_intra_emphasis => true, :tables => true)
25
23
  end
26
24
 
27
25
  # Causes QDoc to search the current directory and tree, and parse found files
@@ -54,17 +52,6 @@ class QDoc
54
52
  locations
55
53
  end
56
54
 
57
- # def create_index
58
- # page = "<p>Choose from the list below to select a document</p>" + \
59
- # "<p>#{@documents.count-1} files parsed from the following locations:<p>" + \
60
- # "<table class='table table-striped'><tbody>"
61
- # @locations.each do |l|
62
- # l = "Current Dir" if l == ""
63
- # page += "<tr><td>#{l}</td></tr>"
64
- # end
65
- # page += "</tbody></table></div>"
66
- # end
67
-
68
55
  def stage_files( locations )
69
56
  documents = [ @index ]
70
57
  locations.each do |dir|
@@ -89,14 +76,13 @@ class QDoc
89
76
  contents = File.open( filename, "r" ) do |c|
90
77
  c.read
91
78
  end
92
- # contents = fix_hawaiian CGI::escapeHTML contents
93
79
  case doc[:extension]
94
80
  when "md"
95
- return fix_hawaiian Kramdown::Document.new( CGI::escapeHTML contents ).to_html
81
+ return highlight_firewalls fix_hawaiian Kramdown::Document.new( contents ).to_html
96
82
  when "rc"
97
- return @redcarpet.render( fix_hawaiian CGI::escapeHTML contents )
83
+ return highlight_firewalls @redcarpet.render( fix_hawaiian contents )
98
84
  when "txt"
99
- return @redcarpet.render( fix_hawaiian CGI::escapeHTML contents )
85
+ return highlight_firewalls @redcarpet.render( fix_hawaiian contents )
100
86
  when "html"
101
87
  return contents
102
88
  else
@@ -111,6 +97,10 @@ class QDoc
111
97
  def fix_hawaiian( text )
112
98
  text.gsub("ʻ", "&#8216;").gsub("ā", "&#257;").gsub("ē","&#275;").gsub("ī", "&#299;").gsub("ō","&#333;").gsub("ū", "&#363;").gsub("Ā", "&#256;").gsub("Ē","&#274;").gsub("Ī", "&#298;").gsub("Ō", "&#332;").gsub("Ū", "&#362;")
113
99
  end
100
+
101
+ def highlight_firewalls( text )
102
+ text.gsub(/object-group( network| service){0,1} (\S+)/, '<span style="color:green">object-group\1</span> <span style="color:red">\2</span>')
103
+ end
114
104
 
115
105
  def create_page( content, title )
116
106
  "<!DOCTYPE html>
@@ -118,6 +108,26 @@ class QDoc
118
108
  <head>
119
109
  <title>" + title + "</title>
120
110
  <link href='bootstrap.min.css' rel='stylesheet'>
111
+ <style>
112
+ .bs-sidebar .nav > li > a {
113
+ padding-top: 0px;
114
+ padding-bottom: 0px;
115
+ padding-left: 10px;
116
+ font-size: 90%;
117
+ }
118
+ .bs-sidebar .nav .nav > li > a {
119
+ padding-top: 0px;
120
+ padding-bottom: 0px;
121
+ padding-left: 20px;
122
+ font-size: 75%;
123
+ }
124
+ .bs-sidebar .nav .nav .nav > li > a {
125
+ padding-top: 0px;
126
+ padding-bottom: 0px;
127
+ padding-left: 60px;
128
+ font-size: 80%;
129
+ }
130
+ </style>
121
131
  </head>
122
132
  <body>
123
133
  <div class='row'>
@@ -149,16 +159,59 @@ class QDoc
149
159
  end
150
160
 
151
161
  def create_nav( content )
152
- value = '<div id="navbar-example" class="bs-sidebar affix" role="complementary" style=""> <ul class="nav bs-sidenav">' + "\n"
162
+ # nav = '<div id="navbar" class="bs-sidebar affix" role="complementary">' + "\n"
153
163
  # value = "<ul class='nav'>"
154
- headers = Hash.new
164
+ # headers = Hash.new
155
165
  doc = Nokogiri::HTML content
156
- headers[:level1] = doc.xpath('//h1') # Nokogiri::XML::NodeSet
157
- headers[:level1].each do |h|
158
- value += "<li><a href='#" + h.attributes['id'].value + "'>" + h.content + "</a></li>\n" if ! h.attributes.empty?
166
+ # headers[:level1] = doc.xpath('//h1') # Nokogiri::XML::NodeSet
167
+ #headers = doc.xpath('/html/body/*[self::h1 or self::h2 or self::h3]') # Nokogiri::XML::NodeSet
168
+ headers = doc.xpath('/html/body/*[self::h1 or self::h2]') # Nokogiri::XML::NodeSet
169
+ if !headers.empty?
170
+ nav = headers.map { |h|
171
+ if h.attributes["id"] # Markdown
172
+ " " * ((h.name[1].to_i) - 1) + "* " + "<a href='#" + h.attributes["id"].value + "'>" + h.content + "</a>" if h.attributes["id"]
173
+ else # Redcloth
174
+ " " * ((h.name[1].to_i) - 1) + "* " + "<a href='#" + h.children.to_s + "'>" + h.children.to_s + "</a>" if !h.attributes["id"]
175
+ end
176
+ }.join("\n")
177
+ else
178
+ nav = ""
159
179
  end
160
- value += "</ul></div>"
161
- value
180
+ '<div id="navbar" class="bs-sidebar affix" role="complementary">' + Kramdown::Document.new( nav ).to_html.gsub("<ul>","<ul class='nav'>") + '</div>'
181
+ #####
182
+ # Manual List
183
+ ####
184
+ # if !headers.empty?
185
+ # level = 0
186
+ # headers.map { |h|
187
+ # h_level = h.name[1].to_i
188
+ # "</ul>" if level > h_level
189
+ # "<ul class='nav'>" if level < h_level
190
+ # }
191
+ # end
192
+ # level = 0
193
+ # headers.each do |h|
194
+ # binding.pry
195
+ # current_level = h.name[1].to_i
196
+ # if level > current_level
197
+ # level = current_level
198
+ # value += " " * level + "</li></ul>\n"
199
+ # elsif level < current_level
200
+ # value += " " * level + "<ul class='nav bs-sidenav'>\n" if current_level == 1
201
+ # value += " " * level + "<ul class='nav bs'>\n" if current_level > 1
202
+ # level = current_level
203
+ # elsif level == current_level
204
+ # value += "</li>\n"
205
+ # end
206
+ # value += " " * level + "<li><a href='#" + h.attributes['id'].value + "'>" + h.content + "</a>\n" if ! h.attributes.empty?
207
+ # end
208
+ # value += "</li>\n"
209
+ # while level > 1
210
+ # value += " " * level + "</ul></li>\n"
211
+ # level -= 1
212
+ # end
213
+ # value += "</ul></div>"
214
+ # value
162
215
  end
163
216
 
164
217
  def write_file( filename, content )
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.25
4
+ version: 0.0.99
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-09-17 00:00:00.000000000 Z
11
+ date: 2013-10-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: redcarpet
@@ -53,7 +53,7 @@ dependencies:
53
53
  - !ruby/object:Gem::Version
54
54
  version: 1.6.0
55
55
  description: Allows you to create quick documents from textile or markdown into an
56
- html format.
56
+ html format. Rev 0.1 will be released when documentation is up to par.
57
57
  email: patrick@6orbits.com
58
58
  executables:
59
59
  - qdoc