ronn-ng 0.7.4
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/AUTHORS +8 -0
- data/CHANGES +184 -0
- data/INSTALLING +20 -0
- data/LICENSE.txt +11 -0
- data/README.md +113 -0
- data/Rakefile +163 -0
- data/bin/ronn +223 -0
- data/config.ru +15 -0
- data/lib/ronn.rb +50 -0
- data/lib/ronn/document.rb +495 -0
- data/lib/ronn/index.rb +183 -0
- data/lib/ronn/roff.rb +302 -0
- data/lib/ronn/server.rb +70 -0
- data/lib/ronn/template.rb +171 -0
- data/lib/ronn/template/80c.css +6 -0
- data/lib/ronn/template/dark.css +18 -0
- data/lib/ronn/template/darktoc.css +17 -0
- data/lib/ronn/template/default.html +41 -0
- data/lib/ronn/template/man.css +100 -0
- data/lib/ronn/template/print.css +5 -0
- data/lib/ronn/template/screen.css +105 -0
- data/lib/ronn/template/toc.css +27 -0
- data/lib/ronn/utils.rb +55 -0
- data/man/index.html +78 -0
- data/man/index.txt +15 -0
- data/man/ronn-format.7 +201 -0
- data/man/ronn-format.7.ronn +157 -0
- data/man/ronn.1 +325 -0
- data/man/ronn.1.ronn +306 -0
- data/ronn-ng.gemspec +97 -0
- data/test/angle_bracket_syntax.html +18 -0
- data/test/angle_bracket_syntax.ronn +12 -0
- data/test/basic_document.html +9 -0
- data/test/basic_document.ronn +4 -0
- data/test/contest.rb +68 -0
- data/test/custom_title_document.html +6 -0
- data/test/custom_title_document.ronn +5 -0
- data/test/definition_list_syntax.html +21 -0
- data/test/definition_list_syntax.roff +26 -0
- data/test/definition_list_syntax.ronn +18 -0
- data/test/dots_at_line_start_test.roff +10 -0
- data/test/dots_at_line_start_test.ronn +4 -0
- data/test/entity_encoding_test.html +35 -0
- data/test/entity_encoding_test.roff +61 -0
- data/test/entity_encoding_test.ronn +25 -0
- data/test/index.txt +8 -0
- data/test/markdown_syntax.html +957 -0
- data/test/markdown_syntax.roff +1467 -0
- data/test/markdown_syntax.ronn +881 -0
- data/test/middle_paragraph.html +15 -0
- data/test/middle_paragraph.roff +13 -0
- data/test/middle_paragraph.ronn +10 -0
- data/test/missing_spaces.roff +9 -0
- data/test/missing_spaces.ronn +2 -0
- data/test/pre_block_with_quotes.roff +13 -0
- data/test/pre_block_with_quotes.ronn +6 -0
- data/test/section_reference_links.html +17 -0
- data/test/section_reference_links.roff +10 -0
- data/test/section_reference_links.ronn +12 -0
- data/test/test_ronn.rb +110 -0
- data/test/test_ronn_document.rb +186 -0
- data/test/test_ronn_index.rb +73 -0
- data/test/titleless_document.html +10 -0
- data/test/titleless_document.ronn +3 -0
- data/test/underline_spacing_test.roff +21 -0
- data/test/underline_spacing_test.ronn +11 -0
- metadata +176 -0
data/ronn-ng.gemspec
ADDED
@@ -0,0 +1,97 @@
|
|
1
|
+
Gem::Specification.new do |s|
|
2
|
+
s.name = 'ronn-ng'
|
3
|
+
s.version = '0.7.4'
|
4
|
+
s.date = '2018-12-22'
|
5
|
+
|
6
|
+
s.summary = "Builds manuals"
|
7
|
+
s.description = "Ronn-NG builds manuals in HTML and Unix man page format from Markdown."
|
8
|
+
s.homepage = "https://github.com/apjanke/ronn-ng"
|
9
|
+
s.license = "MIT"
|
10
|
+
|
11
|
+
s.authors = ["Andrew Janke"]
|
12
|
+
s.email = "floss@apjanke.net"
|
13
|
+
|
14
|
+
# = MANIFEST =
|
15
|
+
s.files = %w[
|
16
|
+
AUTHORS
|
17
|
+
CHANGES
|
18
|
+
LICENSE.txt
|
19
|
+
INSTALLING
|
20
|
+
README.md
|
21
|
+
Rakefile
|
22
|
+
bin/ronn
|
23
|
+
config.ru
|
24
|
+
lib/ronn.rb
|
25
|
+
lib/ronn/document.rb
|
26
|
+
lib/ronn/index.rb
|
27
|
+
lib/ronn/roff.rb
|
28
|
+
lib/ronn/server.rb
|
29
|
+
lib/ronn/template.rb
|
30
|
+
lib/ronn/template/80c.css
|
31
|
+
lib/ronn/template/dark.css
|
32
|
+
lib/ronn/template/darktoc.css
|
33
|
+
lib/ronn/template/default.html
|
34
|
+
lib/ronn/template/man.css
|
35
|
+
lib/ronn/template/print.css
|
36
|
+
lib/ronn/template/screen.css
|
37
|
+
lib/ronn/template/toc.css
|
38
|
+
lib/ronn/utils.rb
|
39
|
+
man/index.html
|
40
|
+
man/index.txt
|
41
|
+
man/ronn-format.7
|
42
|
+
man/ronn-format.7.ronn
|
43
|
+
man/ronn.1
|
44
|
+
man/ronn.1.ronn
|
45
|
+
ronn-ng.gemspec
|
46
|
+
test/angle_bracket_syntax.html
|
47
|
+
test/angle_bracket_syntax.ronn
|
48
|
+
test/basic_document.html
|
49
|
+
test/basic_document.ronn
|
50
|
+
test/contest.rb
|
51
|
+
test/custom_title_document.html
|
52
|
+
test/custom_title_document.ronn
|
53
|
+
test/definition_list_syntax.html
|
54
|
+
test/definition_list_syntax.roff
|
55
|
+
test/definition_list_syntax.ronn
|
56
|
+
test/dots_at_line_start_test.roff
|
57
|
+
test/dots_at_line_start_test.ronn
|
58
|
+
test/entity_encoding_test.html
|
59
|
+
test/entity_encoding_test.roff
|
60
|
+
test/entity_encoding_test.ronn
|
61
|
+
test/index.txt
|
62
|
+
test/markdown_syntax.html
|
63
|
+
test/markdown_syntax.roff
|
64
|
+
test/markdown_syntax.ronn
|
65
|
+
test/middle_paragraph.html
|
66
|
+
test/middle_paragraph.roff
|
67
|
+
test/middle_paragraph.ronn
|
68
|
+
test/missing_spaces.roff
|
69
|
+
test/missing_spaces.ronn
|
70
|
+
test/pre_block_with_quotes.roff
|
71
|
+
test/pre_block_with_quotes.ronn
|
72
|
+
test/section_reference_links.html
|
73
|
+
test/section_reference_links.roff
|
74
|
+
test/section_reference_links.ronn
|
75
|
+
test/test_ronn.rb
|
76
|
+
test/test_ronn_document.rb
|
77
|
+
test/test_ronn_index.rb
|
78
|
+
test/titleless_document.html
|
79
|
+
test/titleless_document.ronn
|
80
|
+
test/underline_spacing_test.roff
|
81
|
+
test/underline_spacing_test.ronn
|
82
|
+
]
|
83
|
+
# = MANIFEST =
|
84
|
+
|
85
|
+
s.executables = ['ronn']
|
86
|
+
s.test_files = s.files.select { |path| path =~ /^test\/.*_test.rb/ }
|
87
|
+
|
88
|
+
s.extra_rdoc_files = %w[LICENSE.txt AUTHORS]
|
89
|
+
s.add_dependency 'hpricot', '~> 0.8', '>= 0.8.2'
|
90
|
+
s.add_dependency 'rdiscount', '~> 1.5', '>= 1.5.8'
|
91
|
+
s.add_dependency 'mustache', '~> 0.7', '>= 0.7.0'
|
92
|
+
|
93
|
+
s.has_rdoc = true
|
94
|
+
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Ronn"]
|
95
|
+
s.require_paths = %w[lib]
|
96
|
+
s.rubygems_version = '1.1.1'
|
97
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<div class='mp'>
|
2
|
+
<h2 id="NAME">NAME</h2>
|
3
|
+
<p class="man-name">
|
4
|
+
<code>angle_bracket_syntax</code> - <span class="man-whatis">angle bracket syntax test</span>
|
5
|
+
</p>
|
6
|
+
|
7
|
+
<p>A <var>WORD</var> in angle brackets is converted to <var>WORD</var>,</p>
|
8
|
+
|
9
|
+
<pre><code>except when <WORD> is
|
10
|
+
part of a preformatted
|
11
|
+
code block,
|
12
|
+
</code></pre>
|
13
|
+
|
14
|
+
<p>or when <code><WORD></code> is enclosed in backticks.</p>
|
15
|
+
|
16
|
+
<p>or when <var>WORD</var> has a <dot.> or <foo:colon>.</p>
|
17
|
+
|
18
|
+
</div>
|
@@ -0,0 +1,12 @@
|
|
1
|
+
angle_bracket_syntax(5) -- angle bracket syntax test
|
2
|
+
====================================================
|
3
|
+
|
4
|
+
A <WORD> in angle brackets is converted to <var>WORD</var>,
|
5
|
+
|
6
|
+
except when <WORD> is
|
7
|
+
part of a preformatted
|
8
|
+
code block,
|
9
|
+
|
10
|
+
or when `<WORD>` is enclosed in backticks.
|
11
|
+
|
12
|
+
or when <WORD> has a <dot.> or <foo:colon>.
|
data/test/contest.rb
ADDED
@@ -0,0 +1,68 @@
|
|
1
|
+
require "test/unit"
|
2
|
+
|
3
|
+
# Test::Unit loads a default test if the suite is empty, whose purpose is to
|
4
|
+
# fail. Since having empty contexts is a common practice, we decided to
|
5
|
+
# overwrite TestSuite#empty? in order to allow them. Having a failure when no
|
6
|
+
# tests have been defined seems counter-intuitive.
|
7
|
+
class Test::Unit::TestSuite
|
8
|
+
def empty?
|
9
|
+
false
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
# Contest adds +teardown+, +test+ and +context+ as class methods, and the
|
14
|
+
# instance methods +setup+ and +teardown+ now iterate on the corresponding
|
15
|
+
# blocks. Note that all setup and teardown blocks must be defined with the
|
16
|
+
# block syntax. Adding setup or teardown instance methods defeats the purpose
|
17
|
+
# of this library.
|
18
|
+
class Test::Unit::TestCase
|
19
|
+
def self.setup(&block)
|
20
|
+
define_method :setup do
|
21
|
+
super(&block)
|
22
|
+
instance_eval(&block)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.teardown(&block)
|
27
|
+
define_method :teardown do
|
28
|
+
instance_eval(&block)
|
29
|
+
super(&block)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def self.context(name, &block)
|
34
|
+
subclass = Class.new(self)
|
35
|
+
remove_tests(subclass)
|
36
|
+
subclass.class_eval(&block) if block_given?
|
37
|
+
const_set(context_name(name), subclass)
|
38
|
+
end
|
39
|
+
|
40
|
+
def self.test(name, &block)
|
41
|
+
define_method(test_name(name), &block)
|
42
|
+
end
|
43
|
+
|
44
|
+
class << self
|
45
|
+
alias_method :should, :test
|
46
|
+
alias_method :describe, :context
|
47
|
+
end
|
48
|
+
|
49
|
+
private
|
50
|
+
|
51
|
+
def self.context_name(name)
|
52
|
+
"Test#{sanitize_name(name).gsub(/(^| )(\w)/) { $2.upcase }}".to_sym
|
53
|
+
end
|
54
|
+
|
55
|
+
def self.test_name(name)
|
56
|
+
"test_#{sanitize_name(name).gsub(/\s+/,'_')}".to_sym
|
57
|
+
end
|
58
|
+
|
59
|
+
def self.sanitize_name(name)
|
60
|
+
name.gsub(/\W+/, ' ').strip
|
61
|
+
end
|
62
|
+
|
63
|
+
def self.remove_tests(subclass)
|
64
|
+
subclass.public_instance_methods.grep(/^test_/).each do |meth|
|
65
|
+
subclass.send(:undef_method, meth.to_sym)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
<div class='mp'>
|
2
|
+
<h2 id="NAME">NAME</h2>
|
3
|
+
<p class="man-name">
|
4
|
+
<code>defition_list_syntax</code> - <span class="man-whatis">hiya</span>
|
5
|
+
</p>
|
6
|
+
|
7
|
+
<p>Definition lists look like unordered lists:</p>
|
8
|
+
|
9
|
+
<dl>
|
10
|
+
<dt class="flush">term</dt><dd><p>definition</p></dd>
|
11
|
+
<dt>another one</dt><dd><p>The definition may span
|
12
|
+
multiple lines and even</p>
|
13
|
+
|
14
|
+
<p>start</p>
|
15
|
+
|
16
|
+
<p>new paragraphs</p></dd>
|
17
|
+
<dt><code>--somearg</code>=<var>VALUE</var></dt><dd><p>We can do that too.</p></dd>
|
18
|
+
</dl>
|
19
|
+
|
20
|
+
|
21
|
+
</div>
|
@@ -0,0 +1,26 @@
|
|
1
|
+
.TH "DEFITION_LIST_SYNTAX" "5" "January 1979" "" ""
|
2
|
+
.
|
3
|
+
.SH "NAME"
|
4
|
+
\fBdefition_list_syntax\fR \- hiya
|
5
|
+
.
|
6
|
+
.P
|
7
|
+
Definition lists look like unordered lists:
|
8
|
+
.
|
9
|
+
.TP
|
10
|
+
term
|
11
|
+
definition
|
12
|
+
.
|
13
|
+
.TP
|
14
|
+
another one
|
15
|
+
The definition may span multiple lines and even
|
16
|
+
.
|
17
|
+
.IP
|
18
|
+
start
|
19
|
+
.
|
20
|
+
.IP
|
21
|
+
new paragraphs
|
22
|
+
.
|
23
|
+
.TP
|
24
|
+
\fB\-\-somearg\fR=\fIVALUE\fR
|
25
|
+
We can do that too\.
|
26
|
+
|
@@ -0,0 +1,18 @@
|
|
1
|
+
defition_list_syntax(5) -- hiya
|
2
|
+
===============================
|
3
|
+
|
4
|
+
Definition lists look like unordered lists:
|
5
|
+
|
6
|
+
* term:
|
7
|
+
definition
|
8
|
+
|
9
|
+
* another one:
|
10
|
+
The definition may span
|
11
|
+
multiple lines and even
|
12
|
+
|
13
|
+
start
|
14
|
+
|
15
|
+
new paragraphs
|
16
|
+
|
17
|
+
* `--somearg`=<VALUE>:
|
18
|
+
We can do that too.
|
@@ -0,0 +1,10 @@
|
|
1
|
+
.TH "DOTS_AT_LINE_START_TEST" "" "January 1979" "" ""
|
2
|
+
.
|
3
|
+
.SH "NAME"
|
4
|
+
\fBdots_at_line_start_test\fR
|
5
|
+
.
|
6
|
+
.P
|
7
|
+
There\'s a weird issue where dots at the beginning of a line generate troff warnings due to escaping\.
|
8
|
+
.
|
9
|
+
.P
|
10
|
+
\&\.\. let\'s see what happens\.
|
@@ -0,0 +1,35 @@
|
|
1
|
+
<div class='mp'>
|
2
|
+
<h2 id="NAME">NAME</h2>
|
3
|
+
<p class="man-name">
|
4
|
+
<code>hello</code> - <span class="man-whatis">hello world</span>
|
5
|
+
</p>
|
6
|
+
|
7
|
+
<p>Your output <i>might</i> look like this:</p>
|
8
|
+
|
9
|
+
<pre><code>* Chris
|
10
|
+
*
|
11
|
+
* &lt;b&gt;GitHub&lt;/b&gt;
|
12
|
+
* <b>GitHub</b>
|
13
|
+
</code></pre>
|
14
|
+
|
15
|
+
<p>Here's some special entities:</p>
|
16
|
+
|
17
|
+
<ul>
|
18
|
+
<li>&bull; •</li>
|
19
|
+
<li>&nbsp; </li>
|
20
|
+
<li>&copy; ©</li>
|
21
|
+
<li>&rdquo; ”</li>
|
22
|
+
<li>&mdash; —</li>
|
23
|
+
<li>&reg; ®</li>
|
24
|
+
<li>&sec; &sec;</li>
|
25
|
+
<li>&ge; ≥</li>
|
26
|
+
<li>&le; ≤</li>
|
27
|
+
<li>&ne; ≠</li>
|
28
|
+
<li>&equiv; ≡</li>
|
29
|
+
</ul>
|
30
|
+
|
31
|
+
|
32
|
+
<p>Here's a line that uses non-breaking spaces to force the
|
33
|
+
last few words to wrap together.</p>
|
34
|
+
|
35
|
+
</div>
|
@@ -0,0 +1,61 @@
|
|
1
|
+
.TH "HELLO" "1" "January 1979" "" ""
|
2
|
+
.
|
3
|
+
.SH "NAME"
|
4
|
+
\fBhello\fR \- hello world
|
5
|
+
.
|
6
|
+
.P
|
7
|
+
Your output <i>might</i> look like this:
|
8
|
+
.
|
9
|
+
.IP "" 4
|
10
|
+
.
|
11
|
+
.nf
|
12
|
+
|
13
|
+
* Chris
|
14
|
+
*
|
15
|
+
* <b>GitHub</b>
|
16
|
+
* <b>GitHub</b>
|
17
|
+
.
|
18
|
+
.fi
|
19
|
+
.
|
20
|
+
.IP "" 0
|
21
|
+
.
|
22
|
+
.P
|
23
|
+
Here\'s some special entities:
|
24
|
+
.
|
25
|
+
.IP "\[ci]" 4
|
26
|
+
• \[ci]
|
27
|
+
.
|
28
|
+
.IP "\[ci]" 4
|
29
|
+
\~
|
30
|
+
.
|
31
|
+
.IP "\[ci]" 4
|
32
|
+
© \(co
|
33
|
+
.
|
34
|
+
.IP "\[ci]" 4
|
35
|
+
” \(rs
|
36
|
+
.
|
37
|
+
.IP "\[ci]" 4
|
38
|
+
— \(em
|
39
|
+
.
|
40
|
+
.IP "\[ci]" 4
|
41
|
+
® \(rg
|
42
|
+
.
|
43
|
+
.IP "\[ci]" 4
|
44
|
+
&sec; \(sc
|
45
|
+
.
|
46
|
+
.IP "\[ci]" 4
|
47
|
+
≥ \(>=
|
48
|
+
.
|
49
|
+
.IP "\[ci]" 4
|
50
|
+
≤ \(<=
|
51
|
+
.
|
52
|
+
.IP "\[ci]" 4
|
53
|
+
≠ \(!=
|
54
|
+
.
|
55
|
+
.IP "\[ci]" 4
|
56
|
+
≡ \(==
|
57
|
+
.
|
58
|
+
.IP "" 0
|
59
|
+
.
|
60
|
+
.P
|
61
|
+
Here\'s a line that uses non\-breaking spaces to force the last\~few\~words\~to\~wrap\~together\.
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# hello(1) -- hello world
|
2
|
+
|
3
|
+
Your output <i>might</i> look like this:
|
4
|
+
|
5
|
+
* Chris
|
6
|
+
*
|
7
|
+
* <b>GitHub</b>
|
8
|
+
* <b>GitHub</b>
|
9
|
+
|
10
|
+
Here's some special entities:
|
11
|
+
|
12
|
+
* &bull; •
|
13
|
+
* &nbsp;
|
14
|
+
* &copy; ©
|
15
|
+
* &rdquo; ”
|
16
|
+
* &mdash; —
|
17
|
+
* &reg; ®
|
18
|
+
* &sec; &sec;
|
19
|
+
* &ge; ≥
|
20
|
+
* &le; ≤
|
21
|
+
* &ne; ≠
|
22
|
+
* &equiv; ≡
|
23
|
+
|
24
|
+
Here's a line that uses non-breaking spaces to force the
|
25
|
+
last few words to wrap together.
|