kramdown-man 1.0.0 → 1.0.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/ChangeLog.md +11 -0
- data/README.md +29 -13
- data/gemspec.yml +5 -2
- data/lib/kramdown/man/converter.rb +16 -1
- data/lib/kramdown/man/version.rb +1 -1
- data/man/kramdown-man.1 +30 -19
- data/man/kramdown-man.1.md +14 -4
- data/spec/cli_spec.rb +7 -2
- data/spec/converter_spec.rb +27 -3
- metadata +6 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 30fd9e9769c09ef4d6220ce37ee0a810624e996983ab83151f75c35aa573f420
|
4
|
+
data.tar.gz: ab547ca91944b0d38ef7c826a61c69d99a727541793691a2e936595a3c75f039
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b2056c28f02cd6ce02a06e21872fa95c22963420ef7e5583f99af92d46767c5d57d23afa187c6587aa1077ee0f6871a54ed6e02e295bba1c7244333c4bbbf451
|
7
|
+
data.tar.gz: 64cb91e4c0c77aed3fca7dedf6d925cd81e35a6ad6b3acd721363b9391a18c8e0460655e88b094bf58b9ed7b85f04eb6f180eb96f89f2d5ca328f515dd2f3c51
|
data/ChangeLog.md
CHANGED
@@ -1,3 +1,14 @@
|
|
1
|
+
### 1.0.1 / 2023-12-05
|
2
|
+
|
3
|
+
* Treat markdown code-fence `kd:codespan`s the same as `kd:codeblock`s.
|
4
|
+
|
5
|
+
```
|
6
|
+
puts "hello world"
|
7
|
+
```
|
8
|
+
```
|
9
|
+
puts "hello world"
|
10
|
+
```
|
11
|
+
|
1
12
|
### 1.0.0 / 2023-12-03
|
2
13
|
|
3
14
|
* Ignore `kd:blank` elements to reduce size of generated man pages.
|
data/README.md
CHANGED
@@ -6,11 +6,12 @@
|
|
6
6
|
|
7
7
|
* [Homepage](https://github.com/postmodern/kramdown-man#readme)
|
8
8
|
* [Issues](https://github.com/postmodern/kramdown-man/issues)
|
9
|
-
* [Documentation](
|
9
|
+
* [Documentation](https://rubydoc.info/gems/kramdown-man)
|
10
10
|
|
11
11
|
## Description
|
12
12
|
|
13
|
-
|
13
|
+
Allows you to write man pages for commands in pure Markdown and convert them to
|
14
|
+
roff using [Kramdown][kramdown].
|
14
15
|
|
15
16
|
## Features
|
16
17
|
|
@@ -22,7 +23,9 @@ A [Kramdown][kramdown] convert for converting Markdown files into man pages.
|
|
22
23
|
* Supports multi-paragraph list items and blockquotes.
|
23
24
|
* Supports converting `[foo-bar](foo-bar.1.md)` and `[bash](man:bash(1))`
|
24
25
|
links into `SEE ALSO` man page references.
|
25
|
-
* Provides
|
26
|
+
* Provides a handy `kramdown-man` command for converting or previewing
|
27
|
+
markdown man pages.
|
28
|
+
* Provides a rake task for converting `man/*.md` into man pages.
|
26
29
|
* Uses the pure-Ruby [Kramdown][kramdown] markdown parser.
|
27
30
|
* Supports [Ruby] 3.x, [JRuby], and [TruffleRuby].
|
28
31
|
|
@@ -65,6 +68,8 @@ File.write('man/kramdown-man.1',doc.to_man)
|
|
65
68
|
system 'man', 'man/kramdown-man.1'
|
66
69
|
```
|
67
70
|
|
71
|
+
### Rake Task
|
72
|
+
|
68
73
|
Define a `man` and file tasks which render all `*.md` files within the
|
69
74
|
`man/` directory:
|
70
75
|
|
@@ -73,6 +78,12 @@ require 'kramdown/man/task'
|
|
73
78
|
Kramdown::Man::Task.new
|
74
79
|
```
|
75
80
|
|
81
|
+
Then you can generate man pages for all `*.md` in the `man/` directory:
|
82
|
+
|
83
|
+
```shell
|
84
|
+
$ rake man
|
85
|
+
```
|
86
|
+
|
76
87
|
## Syntax
|
77
88
|
|
78
89
|
### Code
|
@@ -226,8 +237,6 @@ ex·am·ple
|
|
226
237
|
### Code Blocks
|
227
238
|
|
228
239
|
```markdown
|
229
|
-
Source code:
|
230
|
-
|
231
240
|
#include <stdio.h>
|
232
241
|
|
233
242
|
int main()
|
@@ -235,11 +244,8 @@ Source code:
|
|
235
244
|
printf("hello world\n");
|
236
245
|
return 0;
|
237
246
|
}
|
238
|
-
|
239
247
|
```
|
240
248
|
|
241
|
-
Source code:
|
242
|
-
|
243
249
|
#include <stdio.h>
|
244
250
|
|
245
251
|
int main()
|
@@ -248,6 +254,16 @@ Source code:
|
|
248
254
|
return 0;
|
249
255
|
}
|
250
256
|
|
257
|
+
#### Code Fences
|
258
|
+
|
259
|
+
```
|
260
|
+
puts "hello world"
|
261
|
+
```
|
262
|
+
|
263
|
+
```
|
264
|
+
puts "hello world"
|
265
|
+
```
|
266
|
+
|
251
267
|
## Requirements
|
252
268
|
|
253
269
|
* [kramdown] ~> 2.0
|
@@ -260,7 +276,7 @@ gem install kramdown-man
|
|
260
276
|
|
261
277
|
## Alternatives
|
262
278
|
|
263
|
-
* [Redcarpet::Render::ManPage](
|
279
|
+
* [Redcarpet::Render::ManPage](https://rubydoc.info/gems/redcarpet/Redcarpet/Render/ManPage)
|
264
280
|
* [ronn](https://github.com/rtomayko/ronn#readme)
|
265
281
|
* [md2man](https://github.com/sunaku/md2man#readme)
|
266
282
|
|
@@ -270,9 +286,9 @@ Copyright (c) 2013-2023 Hal Brodigan
|
|
270
286
|
|
271
287
|
See {file:LICENSE.txt} for details.
|
272
288
|
|
273
|
-
[kramdown]:
|
274
|
-
[roff]:
|
289
|
+
[kramdown]: https://kramdown.gettalong.org/
|
290
|
+
[roff]: https://en.wikipedia.org/wiki/Roff_(software)
|
275
291
|
|
276
|
-
[Ruby]:
|
277
|
-
[JRuby]:
|
292
|
+
[Ruby]: https://www.ruby-lang.org/
|
293
|
+
[JRuby]: https://jruby.org/
|
278
294
|
[TruffleRuby]: https://github.com/oracle/truffleruby#readme
|
data/gemspec.yml
CHANGED
@@ -1,6 +1,9 @@
|
|
1
1
|
name: kramdown-man
|
2
|
-
summary:
|
3
|
-
description:
|
2
|
+
summary: Allows you to write man pages in pure markdown.
|
3
|
+
description: |
|
4
|
+
Allows you to write man pages for commands in pure Markdown and convert them
|
5
|
+
to roff using Kramdown.
|
6
|
+
|
4
7
|
license: MIT
|
5
8
|
authors: Postmodern
|
6
9
|
email: postmodern.mod3@gmail.com
|
@@ -901,7 +901,22 @@ module Kramdown
|
|
901
901
|
# The roff output.
|
902
902
|
#
|
903
903
|
def convert_codespan(codespan)
|
904
|
-
|
904
|
+
# ``` code fence blocks are parsed as kd:codespans
|
905
|
+
if codespan.options[:codespan_delimiter] == '```'
|
906
|
+
# ignore the first and last newlines
|
907
|
+
contents = escape(codespan.value[1..-2])
|
908
|
+
|
909
|
+
<<~ROFF
|
910
|
+
.PP
|
911
|
+
.RS 4
|
912
|
+
.EX
|
913
|
+
#{contents}
|
914
|
+
.EE
|
915
|
+
.RE
|
916
|
+
ROFF
|
917
|
+
else
|
918
|
+
"\\fB#{escape(codespan.value)}\\fR"
|
919
|
+
end
|
905
920
|
end
|
906
921
|
|
907
922
|
#
|
data/lib/kramdown/man/version.rb
CHANGED
data/man/kramdown-man.1
CHANGED
@@ -1,9 +1,12 @@
|
|
1
1
|
.\" Generated by kramdown-man 1.0.0
|
2
2
|
.\" https://github.com/postmodern/kramdown-man#readme
|
3
3
|
.TH kramdown-man 1 "April 2013" kramdown-man "User Manuals"
|
4
|
+
.SH NAME
|
5
|
+
.PP
|
6
|
+
kramdown\-man \- generates man pages from markdown files
|
4
7
|
.SH SYNOPSIS
|
5
8
|
.PP
|
6
|
-
\fBkramdown
|
9
|
+
\fBkramdown\-man\fR \[lB]\fIoptions\fP\[rB] \fIMARKDOWN\[ru]FILE\fP
|
7
10
|
.SH DESCRIPTION
|
8
11
|
.PP
|
9
12
|
A Kramdown
|
@@ -16,14 +19,14 @@ plugin for converting Markdown files into man pages\.
|
|
16
19
|
The input markdown file to convert\.
|
17
20
|
.SH OPTIONS
|
18
21
|
.TP
|
19
|
-
\fB
|
22
|
+
\fB\-o\fR, \fB\-\-output\fR \fIOUTPUT\fP
|
20
23
|
The file to write the man page output to\.
|
21
24
|
.TP
|
22
|
-
\fB
|
23
|
-
Prints the \fBkramdown
|
25
|
+
\fB\-V\fR, \fB\-\-version\fR
|
26
|
+
Prints the \fBkramdown\-man\fR version\.
|
24
27
|
.TP
|
25
|
-
\fB
|
26
|
-
Prints the usage for \fBkramdown
|
28
|
+
\fB\-h\fR, \fB\-\-help\fR
|
29
|
+
Prints the usage for \fBkramdown\-man\fR\.
|
27
30
|
.SH EXAMPLE
|
28
31
|
.PP
|
29
32
|
Render a man page from markdown:
|
@@ -55,8 +58,8 @@ system \(aqman\(aq, \(aqman\[sl]kramdown\-man\.1\(aq
|
|
55
58
|
.RE
|
56
59
|
.SS RAKE TASK
|
57
60
|
.PP
|
58
|
-
Define a \fBman\fR and files tasks which render all \fB
|
59
|
-
\fBman
|
61
|
+
Define a \fBman\fR and files tasks which render all \fB*\.md\fR files within the
|
62
|
+
\fBman\[sl]\fR directory:
|
60
63
|
.PP
|
61
64
|
.RS 4
|
62
65
|
.EX
|
@@ -109,7 +112,7 @@ Normal paragraph\.
|
|
109
112
|
.EE
|
110
113
|
.RE
|
111
114
|
.PP
|
112
|
-
\fBcommand\fR \[lB]\fB
|
115
|
+
\fBcommand\fR \[lB]\fB\-\-foo\fR\[rB] \fBFILE\fP
|
113
116
|
.SS Argument Definitions
|
114
117
|
.PP
|
115
118
|
.RS 4
|
@@ -130,7 +133,7 @@ Description here\.
|
|
130
133
|
.EE
|
131
134
|
.RE
|
132
135
|
.TP
|
133
|
-
\fB
|
136
|
+
\fB\-o\fR, \fB\-\-option\fR \fIVALUE\fP
|
134
137
|
Description here\.
|
135
138
|
.SS Links
|
136
139
|
.PP
|
@@ -253,8 +256,6 @@ Perfection is achieved, not when there is nothing more to add, but when there is
|
|
253
256
|
.PP
|
254
257
|
.RS 4
|
255
258
|
.EX
|
256
|
-
Source code:
|
257
|
-
|
258
259
|
\[sh]include <stdio\.h>
|
259
260
|
|
260
261
|
int main()
|
@@ -262,13 +263,7 @@ Source code:
|
|
262
263
|
printf(\[dq]hello world\en\[dq]);
|
263
264
|
return 0;
|
264
265
|
\[rC]
|
265
|
-
|
266
|
-
.RE
|
267
|
-
.PP
|
268
|
-
Source code:
|
269
|
-
.PP
|
270
|
-
.RS 4
|
271
|
-
.EX
|
266
|
+
|
272
267
|
\[sh]include <stdio\.h>
|
273
268
|
|
274
269
|
int main()
|
@@ -278,6 +273,22 @@ int main()
|
|
278
273
|
\[rC]
|
279
274
|
.EE
|
280
275
|
.RE
|
276
|
+
.SS Code Fences
|
277
|
+
.PP
|
278
|
+
.RS 4
|
279
|
+
.EX
|
280
|
+
\`\`\`
|
281
|
+
puts \[dq]hello world\[dq]
|
282
|
+
\`\`\`
|
283
|
+
.EE
|
284
|
+
.RE
|
285
|
+
.PP
|
286
|
+
.PP
|
287
|
+
.RS 4
|
288
|
+
.EX
|
289
|
+
puts \[dq]hello world\[dq]
|
290
|
+
.EE
|
291
|
+
.RE
|
281
292
|
.SH AUTHOR
|
282
293
|
.PP
|
283
294
|
Postmodern
|
data/man/kramdown-man.1.md
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
# kramdown-man 1 "April 2013" kramdown-man "User Manuals"
|
2
2
|
|
3
|
+
## NAME
|
4
|
+
|
5
|
+
kramdown-man - generates man pages from markdown files
|
6
|
+
|
3
7
|
## SYNOPSIS
|
4
8
|
|
5
9
|
`kramdown-man` [*options*] *MARKDOWN_FILE*
|
@@ -175,8 +179,6 @@ ex·am·ple
|
|
175
179
|
|
176
180
|
### Code Blocks
|
177
181
|
|
178
|
-
Source code:
|
179
|
-
|
180
182
|
#include <stdio.h>
|
181
183
|
|
182
184
|
int main()
|
@@ -185,8 +187,6 @@ ex·am·ple
|
|
185
187
|
return 0;
|
186
188
|
}
|
187
189
|
|
188
|
-
Source code:
|
189
|
-
|
190
190
|
#include <stdio.h>
|
191
191
|
|
192
192
|
int main()
|
@@ -195,6 +195,16 @@ Source code:
|
|
195
195
|
return 0;
|
196
196
|
}
|
197
197
|
|
198
|
+
#### Code Fences
|
199
|
+
|
200
|
+
```
|
201
|
+
puts "hello world"
|
202
|
+
```
|
203
|
+
|
204
|
+
```
|
205
|
+
puts "hello world"
|
206
|
+
```
|
207
|
+
|
198
208
|
## AUTHOR
|
199
209
|
|
200
210
|
Postmodern <postmodern.mod3@gmail.com>
|
data/spec/cli_spec.rb
CHANGED
@@ -116,6 +116,11 @@ Please report the following text to: #{Regexp.escape(described_class::BUG_REPORT
|
|
116
116
|
let(:markdown_file) { File.join(man_dir,'kramdown-man.1.md') }
|
117
117
|
|
118
118
|
describe "#run" do
|
119
|
+
let(:version) { Kramdown::Man::VERSION }
|
120
|
+
let(:man_page_regex) do
|
121
|
+
/\A.\\" Generated by kramdown-man #{Regexp.escape(version)}\n/
|
122
|
+
end
|
123
|
+
|
119
124
|
context "when given a markdown file" do
|
120
125
|
let(:argv) { [markdown_file] }
|
121
126
|
|
@@ -129,7 +134,7 @@ Please report the following text to: #{Regexp.escape(described_class::BUG_REPORT
|
|
129
134
|
it "must write the man page output to the output file" do
|
130
135
|
subject.run(markdown_file)
|
131
136
|
|
132
|
-
expect(File.read(output)).to match(
|
137
|
+
expect(File.read(output)).to match(man_page_regex)
|
133
138
|
end
|
134
139
|
end
|
135
140
|
|
@@ -148,7 +153,7 @@ Please report the following text to: #{Regexp.escape(described_class::BUG_REPORT
|
|
148
153
|
it "must print the man page to stdout" do
|
149
154
|
expect {
|
150
155
|
subject.run(argv)
|
151
|
-
}.to output(
|
156
|
+
}.to output(man_page_regex).to_stdout
|
152
157
|
end
|
153
158
|
end
|
154
159
|
|
data/spec/converter_spec.rb
CHANGED
@@ -708,13 +708,37 @@ describe Kramdown::Man::Converter do
|
|
708
708
|
end
|
709
709
|
|
710
710
|
describe "#convert_codespan" do
|
711
|
-
let(:code)
|
712
|
-
let(:
|
711
|
+
let(:code) { "puts 'hello world'" }
|
712
|
+
let(:escaped_code) { 'puts \(aqhello world\(aq' }
|
713
|
+
let(:markdown) { "`#{code}`" }
|
713
714
|
|
714
715
|
let(:codespan) { doc.root.children[0].children[0] }
|
715
716
|
|
716
717
|
it "should convert codespan elements into '\\fBcode\\fR'" do
|
717
|
-
expect(subject.convert_codespan(codespan)).to eq("\\fB#{
|
718
|
+
expect(subject.convert_codespan(codespan)).to eq("\\fB#{escaped_code}\\fR")
|
719
|
+
end
|
720
|
+
|
721
|
+
context "when given a ``` codespan" do
|
722
|
+
let(:markdown) do
|
723
|
+
<<~MARKDOWN
|
724
|
+
```
|
725
|
+
#{code}
|
726
|
+
```
|
727
|
+
MARKDOWN
|
728
|
+
end
|
729
|
+
|
730
|
+
it "must treat the codespan element as a codeblock" do
|
731
|
+
expect(subject.convert_codespan(codespan)).to eq(
|
732
|
+
<<~ROFF
|
733
|
+
.PP
|
734
|
+
.RS 4
|
735
|
+
.EX
|
736
|
+
#{escaped_code}
|
737
|
+
.EE
|
738
|
+
.RE
|
739
|
+
ROFF
|
740
|
+
)
|
741
|
+
end
|
718
742
|
end
|
719
743
|
end
|
720
744
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kramdown-man
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Postmodern
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-12-
|
11
|
+
date: 2023-12-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: kramdown
|
@@ -38,7 +38,9 @@ dependencies:
|
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '2.0'
|
41
|
-
description:
|
41
|
+
description: |
|
42
|
+
Allows you to write man pages for commands in pure Markdown and convert them
|
43
|
+
to roff using Kramdown.
|
42
44
|
email: postmodern.mod3@gmail.com
|
43
45
|
executables:
|
44
46
|
- kramdown-man
|
@@ -100,5 +102,5 @@ requirements: []
|
|
100
102
|
rubygems_version: 3.4.10
|
101
103
|
signing_key:
|
102
104
|
specification_version: 4
|
103
|
-
summary:
|
105
|
+
summary: Allows you to write man pages in pure markdown.
|
104
106
|
test_files: []
|