md2man 5.0.1 → 5.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,8 +1,8 @@
1
- # MD2MAN 5 2016-02-13 5.0.1
1
+ # MD2MAN 5 2016-02-21 5.0.3
2
2
 
3
3
  ## NAME
4
4
 
5
- md2man - manual page flavoring for the markdown(7) file format
5
+ md2man - UNIX manual page flavoring for the markdown(7) file format
6
6
 
7
7
  ## DESCRIPTION
8
8
 
@@ -11,38 +11,26 @@ pages by extending its syntax, semantics, and assumed processing extensions.
11
11
 
12
12
  ### Syntax
13
13
 
14
- md2man extends markdown(7) syntax by defining three kinds of paragraphs.
15
-
16
- This is a
17
- normal
18
- paragraph.
19
-
20
- This is a
21
- tagged
22
- paragraph.
23
-
24
- This is an
25
- indented
26
- paragraph.
27
-
28
- This
29
- is another
30
- normal
31
- paragraph.
14
+ md2man extends markdown(7) syntax by distinguishing three kinds of paragraphs.
32
15
 
33
16
  #### Normal paragraphs
34
17
 
35
18
  Paragraphs whose lines are all indented by exactly zero or one additional
36
19
  spaces are considered to be "normal paragraphs". For example:
37
20
 
38
- This is a
39
- normal
21
+ This is a normal paragraph.
22
+
23
+ This is also
24
+ a normal
40
25
  paragraph.
41
26
 
42
- This
43
- is another
27
+ And
28
+ this
29
+ is
30
+ a
44
31
  normal
45
- paragraph.
32
+ paragraph
33
+ too.
46
34
 
47
35
  #### Tagged paragraphs
48
36
 
@@ -70,7 +58,7 @@ md2man extends markdown(7) semantics by treating top-level headings specially.
70
58
  #### Top-level headings
71
59
 
72
60
  The first top-level `<h1>` heading found in the input is considered to be the
73
- `.TH` directive in roff(7), as described under "Title line" in man-pages(7):
61
+ `.TH` directive in roff(7), described under "Title line" in man-pages(7) thus:
74
62
 
75
63
  > .TH title section date source manual
76
64
  >
@@ -101,6 +89,99 @@ md2man enables the following [Redcarpet] extensions while reading markdown(7):
101
89
  * strikethrough
102
90
  * fenced\_code\_blocks
103
91
 
92
+ ### Examples
93
+
94
+ Below is a complete example of an md2man(5) formatted manual page adapted from
95
+ the [Linux Man Page Howto](http://www.schweikhardt.net/man_page_howto.html)
96
+ guide by Jens Schweikhardt. [The result of processing](../man0/EXAMPLE.html)
97
+ this example with md2man-html(1) has been bundled along with this manual page.
98
+
99
+ ```markdown
100
+ FOO 1 "MARCH 1995" Linux "User Manuals"
101
+ =======================================
102
+
103
+ NAME
104
+ ----
105
+
106
+ foo - frobnicate the bar library
107
+
108
+ SYNOPSIS
109
+ --------
110
+
111
+ `foo` [`-bar`] [`-c` *config-file*] *file* ...
112
+
113
+ DESCRIPTION
114
+ -----------
115
+
116
+ `foo` frobnicates the bar library by tweaking internal symbol tables. By
117
+ default it parses all baz segments and rearranges them in reverse order by
118
+ time for the xyzzy(1) linker to find them. The symdef entry is then compressed
119
+ using the WBG (Whiz-Bang-Gizmo) algorithm. All files are processed in the
120
+ order specified.
121
+
122
+ OPTIONS
123
+ -------
124
+
125
+ `-b`
126
+ Do not write "busy" to stdout while processing.
127
+
128
+ `-c` *config-file*
129
+ Use the alternate system wide *config-file* instead of */etc/foo.conf*. This
130
+ overrides any `FOOCONF` environment variable.
131
+
132
+ `-a`
133
+ In addition to the baz segments, also parse the blurfl headers.
134
+
135
+ `-r`
136
+ Recursive mode. Operates as fast as lightning at the expense of a megabyte
137
+ of virtual memory.
138
+
139
+ FILES
140
+ -----
141
+
142
+ */etc/foo.conf*
143
+ The system wide configuration file. See foo(5) for further details.
144
+
145
+ *~/.foorc*
146
+ Per user configuration file. See foo(5) for further details.
147
+
148
+ ENVIRONMENT
149
+ -----------
150
+
151
+ `FOOCONF`
152
+ If non-null the full pathname for an alternate system wide */etc/foo.conf*.
153
+ Overridden by the `-c` option.
154
+
155
+ DIAGNOSTICS
156
+ -----------
157
+
158
+ The following diagnostics may be issued on stderr:
159
+
160
+ **Bad magic number.**
161
+ The input file does not look like an archive file.
162
+
163
+ **Old style baz segments.**
164
+ `foo` can only handle new style baz segments. COBOL object libraries are not
165
+ supported in this version.
166
+
167
+ BUGS
168
+ ----
169
+
170
+ The command name should have been chosen more carefully to reflect its
171
+ purpose.
172
+
173
+ AUTHOR
174
+ ------
175
+
176
+ Jens Schweikhardt <howto@schweikhardt.net>
177
+
178
+ SEE ALSO
179
+ --------
180
+
181
+ bar(1), foo(5), xyzzy(1), [Linux Man Page Howto](
182
+ http://www.schweikhardt.net/man_page_howto.html)
183
+ ```
184
+
104
185
  ## SEE ALSO
105
186
 
106
187
  markdown(7), man-pages(7), md2man-roff(1), md2man-html(1), md2man-rake(1)
@@ -29,9 +29,16 @@
29
29
  margin-top: -5em;
30
30
  font-weight: normal;
31
31
  font-size: smaller;
32
- text-align: right;
32
+ text-align: center;
33
33
  }
34
34
 
35
+ h1:first-child > span.md2man-source {
36
+ float: right;
37
+ }
38
+
39
+ h1:first-child > span.md2man-title,
40
+ h1:first-child > span.md2man-section,
41
+ h1:first-child > span.md2man-manual,
35
42
  h1:first-child > a.md2man-permalink {
36
43
  display: none;
37
44
  }
@@ -132,6 +132,57 @@ describe 'html engine' do
132
132
  OUTPUT
133
133
  end
134
134
 
135
+ it 'decorates top-level headings components in spans with CSS classes' do
136
+ @markdown.render(heredoc(<<-INPUT)).must_equal(heredoc(<<-OUTPUT))
137
+ |# title section date source manual
138
+ INPUT
139
+ <h1 id="title-section-date-source-manual"><span class="md2man-title">title</span> <span class="md2man-section">section</span> <span class="md2man-date">date</span> <span class="md2man-source">source</span> <span class="md2man-manual">manual</span><a name="title-section-date-source-manual" href="#title-section-date-source-manual" class="md2man-permalink" title="permalink"></a></h1>
140
+ OUTPUT
141
+
142
+ @markdown.render(heredoc(<<-INPUT)).must_equal(heredoc(<<-OUTPUT))
143
+ |# FOO 1 "MARCH 1995" Linux "User Manuals"
144
+ INPUT
145
+ <h1 id="foo-1-march-1995-linux-user-manuals"><span class="md2man-title">FOO</span> <span class="md2man-section">1</span> <span class="md2man-date">MARCH 1995</span> <span class="md2man-source">Linux</span> <span class="md2man-manual">User Manuals</span><a name="foo-1-march-1995-linux-user-manuals" href="#foo-1-march-1995-linux-user-manuals" class="md2man-permalink" title="permalink"></a></h1>
146
+ OUTPUT
147
+
148
+ @markdown.render(heredoc(<<-INPUT)).must_equal(heredoc(<<-OUTPUT))
149
+ |# title section date source
150
+ INPUT
151
+ <h1 id="title-section-date-source"><span class="md2man-title">title</span> <span class="md2man-section">section</span> <span class="md2man-date">date</span> <span class="md2man-source">source</span><a name="title-section-date-source" href="#title-section-date-source" class="md2man-permalink" title="permalink"></a></h1>
152
+ OUTPUT
153
+
154
+ @markdown.render(heredoc(<<-INPUT)).must_equal(heredoc(<<-OUTPUT))
155
+ |# title section date
156
+ INPUT
157
+ <h1 id="title-section-date"><span class="md2man-title">title</span> <span class="md2man-section">section</span> <span class="md2man-date">date</span><a name="title-section-date" href="#title-section-date" class="md2man-permalink" title="permalink"></a></h1>
158
+ OUTPUT
159
+
160
+ @markdown.render(heredoc(<<-INPUT)).must_equal(heredoc(<<-OUTPUT))
161
+ |# title section
162
+ INPUT
163
+ <h1 id="title-section"><span class="md2man-title">title</span> <span class="md2man-section">section</span><a name="title-section" href="#title-section" class="md2man-permalink" title="permalink"></a></h1>
164
+ OUTPUT
165
+
166
+ @markdown.render(heredoc(<<-INPUT)).must_equal(heredoc(<<-OUTPUT))
167
+ |# title
168
+ INPUT
169
+ <h1 id="title"><span class="md2man-title">title</span><a name="title" href="#title" class="md2man-permalink" title="permalink"></a></h1>
170
+ OUTPUT
171
+
172
+ @markdown.render(heredoc(<<-INPUT)).must_equal(heredoc(<<-OUTPUT))
173
+ |#
174
+ INPUT
175
+ OUTPUT
176
+ end
177
+
178
+ it 'preserves any extra components found in top-level headings' do
179
+ @markdown.render(heredoc(<<-INPUT)).must_equal(heredoc(<<-OUTPUT))
180
+ |# title section date source manual extra! extra! read all about it!
181
+ INPUT
182
+ <h1 id="title-section-date-source-manual-extra-extra-read-all-about-it"><span class="md2man-title">title</span> <span class="md2man-section">section</span> <span class="md2man-date">date</span> <span class="md2man-source">source</span> <span class="md2man-manual">manual</span> extra! extra! read all about it!<a name="title-section-date-source-manual-extra-extra-read-all-about-it" href="#title-section-date-source-manual-extra-extra-read-all-about-it" class="md2man-permalink" title="permalink"></a></h1>
183
+ OUTPUT
184
+ end
185
+
135
186
  it 'adds permalinks to headings' do
136
187
  @markdown.render(heredoc(<<-INPUT)).must_equal(heredoc(<<-OUTPUT))
137
188
  |# foo *BAR*
@@ -189,4 +240,24 @@ describe 'html engine' do
189
240
  |<h3 id="pipes_get_last-chain"><code>PIPES_GET_LAST(CHAIN)</code><a name="pipes_get_last-chain" href="#pipes_get_last-chain" class="md2man-permalink" title="permalink"></a></h3>
190
241
  OUTPUT
191
242
  end
243
+
244
+ it 'supports sole space or tab in codespans' do
245
+ @markdown.render(heredoc(<<-INPUT)).must_equal(heredoc(<<-OUTPUT))
246
+ |`\s`
247
+ INPUT
248
+ |<p><code>\s</code></p>
249
+ OUTPUT
250
+
251
+ @markdown.render(heredoc(<<-INPUT)).must_equal(heredoc(<<-OUTPUT))
252
+ |`\t`
253
+ INPUT
254
+ |<p><code>\s</code></p>
255
+ OUTPUT
256
+
257
+ @markdown.render(heredoc(<<-INPUT)).must_equal(heredoc(<<-OUTPUT))
258
+ |`\n`
259
+ INPUT
260
+ |<p><code>\n</code></p>
261
+ OUTPUT
262
+ end
192
263
  end
@@ -17,13 +17,35 @@ describe 'roff engine' do
17
17
  SPACE = 0x20.chr
18
18
 
19
19
  def heredoc document
20
- document.gsub(/^\s*\|/, '').chomp
20
+ document.gsub(/^\s*\|/, '')
21
21
  end
22
22
 
23
23
  it 'renders nothing as nothing' do
24
24
  @markdown.render('').must_be_empty
25
25
  end
26
26
 
27
+ it 'strips leading newlines' do
28
+ @markdown.render(heredoc(<<-INPUT)).must_equal(heredoc(<<-OUTPUT))
29
+ |
30
+ |
31
+ |two leading newlines
32
+ INPUT
33
+ |.PP
34
+ |two leading newlines
35
+ OUTPUT
36
+ end
37
+
38
+ it 'strips leading newlines but not leading spaces' do
39
+ @markdown.render(heredoc(<<-INPUT)).must_equal(heredoc(<<-OUTPUT))
40
+ |
41
+ |
42
+ | two leading newlines followed by one space
43
+ INPUT
44
+ |.PP
45
+ | two leading newlines followed by one space
46
+ OUTPUT
47
+ end
48
+
27
49
  it 'renders paragraphs' do
28
50
  @markdown.render(heredoc(<<-INPUT)).must_equal(heredoc(<<-OUTPUT))
29
51
  |just some paragraph
@@ -520,6 +542,39 @@ describe 'roff engine' do
520
542
  |.RE
521
543
  OUTPUT
522
544
 
545
+ @markdown.render(heredoc(<<-INPUT)).must_equal(heredoc(<<-OUTPUT))
546
+ | just some *paragraph*
547
+ |
548
+ | spanning
549
+ |
550
+ |
551
+ | **multiple**
552
+ |
553
+ | > lines
554
+ | with 4-space indent
555
+ |
556
+ |
557
+ | and blank lines within
558
+ INPUT
559
+ |.PP
560
+ |.RS
561
+ |.nf
562
+ |just some *paragraph*
563
+ |
564
+ | spanning
565
+ |
566
+ |
567
+ | **multiple**
568
+ |
569
+ |> lines
570
+ |with 4\\-space indent
571
+ |
572
+ |
573
+ |and blank lines within
574
+ |.fi
575
+ |.RE
576
+ OUTPUT
577
+
523
578
  @markdown.render(heredoc(<<-INPUT)).must_equal(heredoc(<<-OUTPUT))
524
579
  |normal paragraph line
525
580
  |
@@ -586,33 +641,47 @@ describe 'roff engine' do
586
641
  |Send [me](mailto:foo@bar.baz), e-mail.
587
642
  INPUT
588
643
  |.PP
589
- |Send me
590
- |\\[la]foo@bar.baz\\[ra], e\\-mail.
644
+ |Send me \\[la]foo@bar.baz\\[ra], e\\-mail.
591
645
  OUTPUT
592
646
 
593
647
  @markdown.render(heredoc(<<-INPUT)).must_equal(heredoc(<<-OUTPUT))
594
648
  |Take [me](http://myself), somewhere.
595
649
  INPUT
596
650
  |.PP
597
- |Take me
598
- |\\[la]http://myself\\[ra], somewhere.
651
+ |Take me \\[la]http://myself\\[ra], somewhere.
599
652
  OUTPUT
600
653
 
601
654
  @markdown.render(heredoc(<<-INPUT)).must_equal(heredoc(<<-OUTPUT))
602
655
  |Mail me foo@bar.baz now.
603
656
  INPUT
604
657
  |.PP
605
- |Mail me#{SPACE}
606
- |\\[la]foo@bar.baz\\[ra] now.
658
+ |Mail me \\[la]foo@bar.baz\\[ra] now.
607
659
  OUTPUT
608
660
 
609
661
  @markdown.render(heredoc(<<-INPUT)).must_equal(heredoc(<<-OUTPUT))
610
662
  |Take me http://www.somewhere now.
611
663
  INPUT
612
664
  |.PP
613
- |Take me#{SPACE}
665
+ |Take me \\[la]http://www.somewhere\\[ra] now.
666
+ OUTPUT
667
+
668
+ @markdown.render(heredoc(<<-INPUT)).must_equal(heredoc(<<-OUTPUT))
669
+ |Leave me
670
+ |http://www.somewhere now.
671
+ INPUT
672
+ |.PP
673
+ |Leave me
614
674
  |\\[la]http://www.somewhere\\[ra] now.
615
675
  OUTPUT
676
+
677
+ @markdown.render(heredoc(<<-INPUT)).must_equal(heredoc(<<-OUTPUT))
678
+ |Tagged
679
+ | paragraph http://www.should.work correctly.
680
+ INPUT
681
+ |.TP
682
+ |Tagged
683
+ |paragraph \\[la]http://www.should.work\\[ra] correctly.
684
+ OUTPUT
616
685
  end
617
686
 
618
687
  it 'renders unordered lists' do
@@ -961,4 +1030,26 @@ describe 'roff engine' do
961
1030
  OUTPUT
962
1031
  end
963
1032
 
1033
+ it 'supports sole space or tab in codespans' do
1034
+ @markdown.render(heredoc(<<-INPUT)).must_equal(heredoc(<<-OUTPUT))
1035
+ |`\s`
1036
+ INPUT
1037
+ |.PP
1038
+ |\\fB\\fC\s\\fR
1039
+ OUTPUT
1040
+
1041
+ @markdown.render(heredoc(<<-INPUT)).must_equal(heredoc(<<-OUTPUT))
1042
+ |`\t`
1043
+ INPUT
1044
+ |.PP
1045
+ |\\fB\\fC\s\\fR
1046
+ OUTPUT
1047
+
1048
+ @markdown.render(heredoc(<<-INPUT)).must_equal(heredoc(<<-OUTPUT))
1049
+ |`\n`
1050
+ INPUT
1051
+ |.PP
1052
+ |\\fB\\fC\n\\fR
1053
+ OUTPUT
1054
+ end
964
1055
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: md2man
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.0.1
4
+ version: 5.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Suraj N. Kurapati
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-02-13 00:00:00.000000000 Z
11
+ date: 2016-02-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: binman
@@ -97,6 +97,8 @@ files:
97
97
  - lib/md2man/roff/engine.rb
98
98
  - lib/md2man/version.rb
99
99
  - man/index.html
100
+ - man/man0/EXAMPLE.html
101
+ - man/man0/EXAMPLE.markdown
100
102
  - man/man0/EXAMPLE.png
101
103
  - man/man0/README.html
102
104
  - man/man0/README.markdown