mdl 0.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 +7 -0
- data/.gitignore +13 -0
- data/.travis.yml +7 -0
- data/Gemfile +2 -0
- data/LICENSE.txt +22 -0
- data/README.md +79 -0
- data/Rakefile +8 -0
- data/bin/mdl +10 -0
- data/docs/RULES.md +609 -0
- data/docs/creating_rules.md +83 -0
- data/docs/creating_styles.md +47 -0
- data/example/markdown_spec.md +897 -0
- data/lib/mdl.rb +72 -0
- data/lib/mdl/cli.rb +89 -0
- data/lib/mdl/config.rb +9 -0
- data/lib/mdl/doc.rb +252 -0
- data/lib/mdl/kramdown_parser.rb +29 -0
- data/lib/mdl/rules.rb +393 -0
- data/lib/mdl/ruleset.rb +47 -0
- data/lib/mdl/style.rb +50 -0
- data/lib/mdl/styles/all.rb +1 -0
- data/lib/mdl/styles/cirosantilli.rb +6 -0
- data/lib/mdl/styles/default.rb +1 -0
- data/lib/mdl/styles/relaxed.rb +6 -0
- data/lib/mdl/version.rb +3 -0
- data/mdl.gemspec +31 -0
- data/test/rule_tests/atx_closed_header_spacing.md +17 -0
- data/test/rule_tests/atx_header_spacing.md +5 -0
- data/test/rule_tests/blockquote_blank_lines.md +31 -0
- data/test/rule_tests/blockquote_spaces.md +21 -0
- data/test/rule_tests/bulleted_list_2_space_indent.md +6 -0
- data/test/rule_tests/bulleted_list_2_space_indent_style.rb +2 -0
- data/test/rule_tests/bulleted_list_4_space_indent.md +3 -0
- data/test/rule_tests/bulleted_list_not_at_beginning_of_line.md +14 -0
- data/test/rule_tests/code_block_dollar.md +22 -0
- data/test/rule_tests/consecutive_blank_lines.md +11 -0
- data/test/rule_tests/consistent_bullet_styles_asterisk.md +3 -0
- data/test/rule_tests/consistent_bullet_styles_dash.md +3 -0
- data/test/rule_tests/consistent_bullet_styles_plus.md +3 -0
- data/test/rule_tests/empty_doc.md +0 -0
- data/test/rule_tests/fenced_code_blocks.md +21 -0
- data/test/rule_tests/first_header_bad_atx.md +1 -0
- data/test/rule_tests/first_header_bad_setext.md +2 -0
- data/test/rule_tests/first_header_good_atx.md +1 -0
- data/test/rule_tests/first_header_good_setext.md +2 -0
- data/test/rule_tests/header_duplicate_content.md +11 -0
- data/test/rule_tests/header_multiple_toplevel.md +3 -0
- data/test/rule_tests/header_mutliple_h1_no_toplevel.md +5 -0
- data/test/rule_tests/header_trailing_punctuation.md +11 -0
- data/test/rule_tests/header_trailing_punctuation_customized.md +14 -0
- data/test/rule_tests/header_trailing_punctuation_customized_style.rb +2 -0
- data/test/rule_tests/headers_bad.md +7 -0
- data/test/rule_tests/headers_good.md +5 -0
- data/test/rule_tests/headers_surrounding_space_atx.md +9 -0
- data/test/rule_tests/headers_surrounding_space_setext.md +15 -0
- data/test/rule_tests/headers_with_spaces_at_the_beginning.md +9 -0
- data/test/rule_tests/inconsistent_bullet_indent_same_level.md +4 -0
- data/test/rule_tests/inconsistent_bullet_styles_asterisk.md +3 -0
- data/test/rule_tests/inconsistent_bullet_styles_dash.md +3 -0
- data/test/rule_tests/inconsistent_bullet_styles_plus.md +3 -0
- data/test/rule_tests/incorrect_bullet_style_asterisk.md +3 -0
- data/test/rule_tests/incorrect_bullet_style_asterisk_style.rb +2 -0
- data/test/rule_tests/incorrect_bullet_style_dash.md +3 -0
- data/test/rule_tests/incorrect_bullet_style_dash_style.rb +2 -0
- data/test/rule_tests/incorrect_bullet_style_plus.md +3 -0
- data/test/rule_tests/incorrect_bullet_style_plus_style.rb +2 -0
- data/test/rule_tests/incorrect_header_atx.md +6 -0
- data/test/rule_tests/incorrect_header_atx_closed.md +6 -0
- data/test/rule_tests/incorrect_header_atx_closed_style.rb +2 -0
- data/test/rule_tests/incorrect_header_atx_style.rb +2 -0
- data/test/rule_tests/incorrect_header_setext.md +6 -0
- data/test/rule_tests/incorrect_header_setext_style.rb +2 -0
- data/test/rule_tests/long_lines.md +3 -0
- data/test/rule_tests/long_lines_100.md +7 -0
- data/test/rule_tests/long_lines_100_style.rb +2 -0
- data/test/rule_tests/mixed_header_types_atx.md +6 -0
- data/test/rule_tests/mixed_header_types_atx_closed.md +6 -0
- data/test/rule_tests/mixed_header_types_setext.md +6 -0
- data/test/rule_tests/ordered_list_item_prefix.md +13 -0
- data/test/rule_tests/ordered_list_item_prefix_ordered.md +13 -0
- data/test/rule_tests/ordered_list_item_prefix_ordered_style.rb +2 -0
- data/test/rule_tests/reversed_link.md +7 -0
- data/test/rule_tests/spaces_after_list_marker.md +74 -0
- data/test/rule_tests/spaces_after_list_marker_style.rb +3 -0
- data/test/rule_tests/whitespace issues.md +3 -0
- data/test/setup_tests.rb +5 -0
- data/test/test_ruledocs.rb +45 -0
- data/test/test_rules.rb +56 -0
- data/tools/README.md +3 -0
- data/tools/test_location.rb +20 -0
- data/tools/view_markdown.rb +11 -0
- metadata +314 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: e214c7494f0a1796f51fea727bc16877f8b9aa82
|
4
|
+
data.tar.gz: 6342d6617202c3512dd2a0d721c321a0a9fa0edd
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: bad0ee00e294fc844d26a47964008ec31ecd62ac696daa2cd43b81183063ef5eb647237df26b0f9b455a741b6d77d77a6080ab7d7eb5aa9c9572748b9db75235
|
7
|
+
data.tar.gz: aa8a0269c402be1dd9ef0a0cdcfce900026c3726a73d8d2cc31b34080968c736131976e65386291088ed34ae6601f2958db1f4527ffdad76455b645691fea3c2
|
data/.gitignore
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2014 Mark Harrison
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,79 @@
|
|
1
|
+
[](https://waffle.io/mivok/markdownlint)
|
2
|
+
[](https://travis-ci.org/mivok/markdownlint)
|
3
|
+
|
4
|
+
# Markdown lint tool
|
5
|
+
|
6
|
+
A tool to check markdown files and flag style issues.
|
7
|
+
|
8
|
+
## Installation
|
9
|
+
|
10
|
+
Markdownlint is written in ruby and is distributed as a rubygem. As long as
|
11
|
+
you have a relatively up to date ruby on your system, markdownlint will be
|
12
|
+
simple to install and use.
|
13
|
+
|
14
|
+
To install from rubygems, run:
|
15
|
+
|
16
|
+
gem install markdownlint
|
17
|
+
|
18
|
+
To install the latest development version from github:
|
19
|
+
|
20
|
+
git clone https://github.com/mivok/markdownlint
|
21
|
+
cd markdownlint
|
22
|
+
rake install
|
23
|
+
|
24
|
+
## Usage
|
25
|
+
|
26
|
+
To have markdownlint check your markdown files, simply run `mdl` with the
|
27
|
+
filenames as a parameter:
|
28
|
+
|
29
|
+
mdl README.md
|
30
|
+
|
31
|
+
Markdownlint can also take a directory, and it will scan all markdown files
|
32
|
+
within the directory (and nested directories):
|
33
|
+
|
34
|
+
mdl docs/
|
35
|
+
|
36
|
+
If you don't specify a filename, markdownlint will use stdin:
|
37
|
+
|
38
|
+
cat foo.md | mdl
|
39
|
+
|
40
|
+
Markdownlint will output a list of issues it finds, and the line number where
|
41
|
+
the issue is. See [RULES.md](docs/RULES.md) for information on each issue, as
|
42
|
+
well as how to correct it:
|
43
|
+
|
44
|
+
README.md:1: MD013 Line length
|
45
|
+
README.md:70: MD029 Ordered list item prefix
|
46
|
+
README.md:71: MD029 Ordered list item prefix
|
47
|
+
README.md:72: MD029 Ordered list item prefix
|
48
|
+
README.md:73: MD029 Ordered list item prefix
|
49
|
+
|
50
|
+
Markdownlint has many more options you can pass on the command line, run
|
51
|
+
`mdl --help` to see what they are.
|
52
|
+
|
53
|
+
### Styles
|
54
|
+
|
55
|
+
Not everyone writes markdown in the same way, and there are multiple flavors
|
56
|
+
and styles, each of which are valid. While markdownlint's default settings
|
57
|
+
will result in markdown files that reflect the author's preferred markdown
|
58
|
+
authoring preferences, your project may have different guidelines.
|
59
|
+
|
60
|
+
It's not markdownlint's intention to dictate any one specific style, and in
|
61
|
+
order to support these differing styles and/or preferences, markdownlint
|
62
|
+
supports what are called 'style files'. A style file is a file describing
|
63
|
+
which rules markdownlint should enable, and also what settings to apply to
|
64
|
+
individual rules. For example, rule [MD013](docs/RULES.md#md013---line-length)
|
65
|
+
checks for long lines, and by default will report an issue for any line longer
|
66
|
+
than 80 characters. If your project has a different maximum line length limit,
|
67
|
+
or if you don't want to enforce a line limit at all, then this can be
|
68
|
+
configured in a style file.
|
69
|
+
|
70
|
+
For more information on creating style files, see the
|
71
|
+
[creating styles](docs/creating_styles.md) document.
|
72
|
+
|
73
|
+
## Contributing
|
74
|
+
|
75
|
+
1. Fork it ( http://github.com/mivok/markdownlint/fork )
|
76
|
+
1. Create your feature branch (`git checkout -b my-new-feature`)
|
77
|
+
1. Commit your changes (`git commit -am 'Add some feature'`)
|
78
|
+
1. Push to the branch (`git push origin my-new-feature`)
|
79
|
+
1. Create new Pull Request
|
data/Rakefile
ADDED
data/bin/mdl
ADDED
data/docs/RULES.md
ADDED
@@ -0,0 +1,609 @@
|
|
1
|
+
# Rules
|
2
|
+
|
3
|
+
This document contains a description of all rules, what they are checking for,
|
4
|
+
as well as an examples of documents that break the rule and corrected
|
5
|
+
versions of the examples.
|
6
|
+
|
7
|
+
## MD001 - Header levels should only increment by one level at a time
|
8
|
+
|
9
|
+
Tags: headers
|
10
|
+
|
11
|
+
This rule is triggered when you skip header levels in a markdown document, for
|
12
|
+
example:
|
13
|
+
|
14
|
+
# Header 1
|
15
|
+
|
16
|
+
### Header 3
|
17
|
+
|
18
|
+
We skipped out a 2nd level header in this document
|
19
|
+
|
20
|
+
When using multiple header levels, nested headers should increase by only one
|
21
|
+
level at a time:
|
22
|
+
|
23
|
+
# Header 1
|
24
|
+
|
25
|
+
## Header 2
|
26
|
+
|
27
|
+
### Header 3
|
28
|
+
|
29
|
+
#### Header 4
|
30
|
+
|
31
|
+
## Another Header 2
|
32
|
+
|
33
|
+
### Another Header 3
|
34
|
+
|
35
|
+
|
36
|
+
## MD002 - First header should be a h1 header
|
37
|
+
|
38
|
+
Tags: headers
|
39
|
+
|
40
|
+
This rule is triggered when the first header in the document isn't a h1 header:
|
41
|
+
|
42
|
+
## This isn't a H1 header
|
43
|
+
|
44
|
+
### Another header
|
45
|
+
|
46
|
+
The first header in the document should be a h1 header:
|
47
|
+
|
48
|
+
# Start with a H1 header
|
49
|
+
|
50
|
+
## Then use a H2 for subsections
|
51
|
+
|
52
|
+
## MD003 - Header style
|
53
|
+
|
54
|
+
Tags: headers
|
55
|
+
|
56
|
+
Parameters: style
|
57
|
+
|
58
|
+
This rule is triggered when different header styles (atx, setext, and 'closed'
|
59
|
+
atx) are used in the same document:
|
60
|
+
|
61
|
+
# ATX style H1
|
62
|
+
|
63
|
+
## Closed ATX style H2 ##
|
64
|
+
|
65
|
+
Setext style H1
|
66
|
+
===============
|
67
|
+
|
68
|
+
Be consistent with the style of header used in a document:
|
69
|
+
|
70
|
+
# ATX style H1
|
71
|
+
|
72
|
+
## ATX style H2
|
73
|
+
|
74
|
+
Note: the configured header style can be a specific style to use (atx,
|
75
|
+
atx_closed, setext), or simply require that the usage be consistent within the
|
76
|
+
document.
|
77
|
+
|
78
|
+
## MD004 - Unordered list style
|
79
|
+
|
80
|
+
Tags: bullet, ul
|
81
|
+
|
82
|
+
Parameters: style
|
83
|
+
|
84
|
+
This rule is triggered when the symbols used in the document for unordered
|
85
|
+
list items do not match the configured unordered list style:
|
86
|
+
|
87
|
+
* Item 1
|
88
|
+
+ Item 2
|
89
|
+
- Item 3
|
90
|
+
|
91
|
+
To fix this issue, use the configured style for list items throughout the
|
92
|
+
document:
|
93
|
+
|
94
|
+
* Item 1
|
95
|
+
* Item 2
|
96
|
+
* Item 3
|
97
|
+
|
98
|
+
Note: the configured list style can be a specific symbol to use (asterisk,
|
99
|
+
plus, dash), or simply require that the usage be consistent within the
|
100
|
+
document.
|
101
|
+
|
102
|
+
## MD005 - Inconsistent indentation for list items at the same level
|
103
|
+
|
104
|
+
Tags: bullet, ul, indentation
|
105
|
+
|
106
|
+
This rule is triggered when list items are parsed as being at the same level,
|
107
|
+
but don't have the same indentation:
|
108
|
+
|
109
|
+
* Item 1
|
110
|
+
* Nested Item 1
|
111
|
+
* Nested Item 2
|
112
|
+
* A misaligned item
|
113
|
+
|
114
|
+
Usually this rule will be triggered because of a typo. Correct the indentation
|
115
|
+
for the list to fix it:
|
116
|
+
|
117
|
+
* Item 1
|
118
|
+
* Nested Item 1
|
119
|
+
* Nested Item 2
|
120
|
+
* Nested Item 3
|
121
|
+
|
122
|
+
## MD006 - Consider starting bulleted lists at the beginning of the line
|
123
|
+
|
124
|
+
Tags: bullet, ul, indentation
|
125
|
+
|
126
|
+
This rule is triggered when top level lists don't start at the beginning of a
|
127
|
+
line:
|
128
|
+
|
129
|
+
Some text
|
130
|
+
|
131
|
+
* List item
|
132
|
+
* List item
|
133
|
+
|
134
|
+
To fix, ensure that top level list items are not indented:
|
135
|
+
|
136
|
+
|
137
|
+
Some test
|
138
|
+
|
139
|
+
* List item
|
140
|
+
* List item
|
141
|
+
|
142
|
+
Rationale: Starting lists at the beginning of the line means that nested list
|
143
|
+
items can all be indented by the same amount when an editor's indent function
|
144
|
+
or the tab key is used to indent. Starting a list 1 space in means that the
|
145
|
+
indent of the first nested list is less than the indent of the second level (3
|
146
|
+
characters if you use 4 space tabs, or 1 character if you use 2 space tabs).
|
147
|
+
|
148
|
+
## MD007 - Unordered list indentation
|
149
|
+
|
150
|
+
Tags: bullet, ul, indentation
|
151
|
+
|
152
|
+
Parameters: indent
|
153
|
+
|
154
|
+
This rule is triggered when list items are not indented by the configured
|
155
|
+
number of spaces (default: 2).
|
156
|
+
|
157
|
+
Example:
|
158
|
+
|
159
|
+
* List item
|
160
|
+
* Nested list item indented by 3 spaces
|
161
|
+
|
162
|
+
Corrected Example:
|
163
|
+
|
164
|
+
* List item
|
165
|
+
* Nested list item indented by 2 spaces
|
166
|
+
|
167
|
+
Rationale (2 space indent): indending by 2 spaces allows the content of a
|
168
|
+
nested list to be in line with the start of the content of the parent list
|
169
|
+
when a single space is used after the list marker.
|
170
|
+
|
171
|
+
Rationale (4 space indent): Same indent as code blocks, simpler for editors to
|
172
|
+
implement. See
|
173
|
+
<http://www.cirosantilli.com/markdown-styleguide/#indented-lists> for more
|
174
|
+
information.
|
175
|
+
|
176
|
+
In addition, this is a compatibility issue with multi-markdown parsers, which
|
177
|
+
require a 4 space indents. See
|
178
|
+
<http://support.markedapp.com/discussions/problems/21-sub-lists-not-indenting>
|
179
|
+
for a description of the problem.
|
180
|
+
|
181
|
+
## MD009 - Trailing spaces
|
182
|
+
|
183
|
+
Tags: whitespace
|
184
|
+
|
185
|
+
This rule is triggered on any lines that end with whitespace. To fix this,
|
186
|
+
find the line that is triggered and remove any trailing spaces from the end.
|
187
|
+
|
188
|
+
## MD010 - Hard tabs
|
189
|
+
|
190
|
+
Tags: whitespace, hard_tab
|
191
|
+
|
192
|
+
This rule is triggered any any lines that contain hard tab characters instead
|
193
|
+
of using spaces for indentation. To fix this, replace any hard tab characters
|
194
|
+
with spaces instead.
|
195
|
+
|
196
|
+
Example:
|
197
|
+
|
198
|
+
Some text
|
199
|
+
|
200
|
+
* hard tab character used to indent the list item
|
201
|
+
|
202
|
+
Corrected example:
|
203
|
+
|
204
|
+
Some text
|
205
|
+
|
206
|
+
* Spaces used to indent the list item instead
|
207
|
+
|
208
|
+
## MD011 - Reversed link syntax
|
209
|
+
|
210
|
+
Tags: links
|
211
|
+
|
212
|
+
This rule is triggered when text that appears to be a link is encountered, but
|
213
|
+
where the syntax appears to have been reversed (the `[]` and `()` are
|
214
|
+
reversed):
|
215
|
+
|
216
|
+
(Incorrect link syntax)[http://www.example.com/]
|
217
|
+
|
218
|
+
To fix this, swap the `[]` and `()` around:
|
219
|
+
|
220
|
+
[Correct link syntax](http://www.example.com/)
|
221
|
+
|
222
|
+
## MD012 - Multiple consecutive blank lines
|
223
|
+
|
224
|
+
Tags: whitespace, blank_lines
|
225
|
+
|
226
|
+
This rule is triggered when there are multiple consecutive blank lines in the
|
227
|
+
document:
|
228
|
+
|
229
|
+
Some text here
|
230
|
+
|
231
|
+
|
232
|
+
Some more text here
|
233
|
+
|
234
|
+
To fix this, delete the offending lines:
|
235
|
+
|
236
|
+
Some text here
|
237
|
+
|
238
|
+
Some more text here
|
239
|
+
|
240
|
+
Note: this rule will not be triggered if there are multiple consecutive blank
|
241
|
+
lines inside code blocks.
|
242
|
+
|
243
|
+
## MD013 - Line length
|
244
|
+
|
245
|
+
Tags: line_length
|
246
|
+
|
247
|
+
Parameters: line_length
|
248
|
+
|
249
|
+
This rule is triggered when there are lines that are longer than the
|
250
|
+
configured line length (default: 80 characters). To fix this, split the line
|
251
|
+
up into multiple lines.
|
252
|
+
|
253
|
+
This rule has an exception where there is no whitespace beyond the configured
|
254
|
+
line length. This allows you to still include items such as long URLs without
|
255
|
+
being forced to break them in the middle.
|
256
|
+
|
257
|
+
## MD014 - Dollar signs used before commands without showing output
|
258
|
+
|
259
|
+
Tags: code
|
260
|
+
|
261
|
+
This rule is triggered when there are code blocks showing shell commands to be
|
262
|
+
typed, and the shell commands are preceded by dollar signs ($):
|
263
|
+
|
264
|
+
$ ls
|
265
|
+
$ cat foo
|
266
|
+
$ less bar
|
267
|
+
|
268
|
+
The dollar signs are unnecessary in the above situation, and should not be
|
269
|
+
included:
|
270
|
+
|
271
|
+
ls
|
272
|
+
cat foo
|
273
|
+
less bar
|
274
|
+
|
275
|
+
However, an exception is made when there is a need to distinguish between
|
276
|
+
typed commands and command output, as in the following example:
|
277
|
+
|
278
|
+
$ ls
|
279
|
+
foo bar
|
280
|
+
$ cat foo
|
281
|
+
Hello world
|
282
|
+
$ cat bar
|
283
|
+
baz
|
284
|
+
|
285
|
+
Rationale: it is easier to copy and paste and less noisy if the dollar signs
|
286
|
+
are omitted when they are not needed. See
|
287
|
+
<http://www.cirosantilli.com/markdown-styleguide/#dollar-signs-in-shell-code>
|
288
|
+
for more information.
|
289
|
+
|
290
|
+
## MD018 - No space after hash on atx style header
|
291
|
+
|
292
|
+
Tags: headers, atx, spaces
|
293
|
+
|
294
|
+
This rule is triggered when when spaces are missing after the hash characters
|
295
|
+
in an atx style header:
|
296
|
+
|
297
|
+
#Header 1
|
298
|
+
|
299
|
+
##Header 2
|
300
|
+
|
301
|
+
To fix this, separate the header text from the hash character by a single
|
302
|
+
space:
|
303
|
+
|
304
|
+
# Header 1
|
305
|
+
|
306
|
+
## Header 2
|
307
|
+
|
308
|
+
## MD019 - Multiple spaces after hash on atx style header
|
309
|
+
|
310
|
+
Tags: headers, atx, spaces
|
311
|
+
|
312
|
+
This rule is triggered when when more than one space is used to separate the
|
313
|
+
header text from the hash characters in an atx style header:
|
314
|
+
|
315
|
+
# Header 1
|
316
|
+
|
317
|
+
## Header 2
|
318
|
+
|
319
|
+
To fix this, separate the header text from the hash character by a single
|
320
|
+
space:
|
321
|
+
|
322
|
+
# Header 1
|
323
|
+
|
324
|
+
## Header 2
|
325
|
+
|
326
|
+
## MD020 - No space inside hashes on closed atx style header
|
327
|
+
|
328
|
+
Tags: headers, atx_closed, spaces
|
329
|
+
|
330
|
+
This rule is triggered when when spaces are missing inside the hash characters
|
331
|
+
in a closed atx style header:
|
332
|
+
|
333
|
+
#Header 1#
|
334
|
+
|
335
|
+
##Header 2##
|
336
|
+
|
337
|
+
To fix this, separate the header text from the hash character by a single
|
338
|
+
space:
|
339
|
+
|
340
|
+
# Header 1 #
|
341
|
+
|
342
|
+
## Header 2 ##
|
343
|
+
|
344
|
+
Note: this rule will fire if either side of the header is missing spaces.
|
345
|
+
|
346
|
+
## MD021 - Multiple spaces inside hashes on closed atx style header
|
347
|
+
|
348
|
+
Tags: headers, atx_closed, spaces
|
349
|
+
|
350
|
+
This rule is triggered when when more than one space is used to separate the
|
351
|
+
header text from the hash characters in a closed atx style header:
|
352
|
+
|
353
|
+
# Header 1 #
|
354
|
+
|
355
|
+
## Header 2 ##
|
356
|
+
|
357
|
+
To fix this, separate the header text from the hash character by a single
|
358
|
+
space:
|
359
|
+
|
360
|
+
# Header 1 #
|
361
|
+
|
362
|
+
## Header 2 ##
|
363
|
+
|
364
|
+
Note: this rule will fire if either side of the header contains multiple
|
365
|
+
spaces.
|
366
|
+
|
367
|
+
## MD022 - Headers should be surrounded by blank lines
|
368
|
+
|
369
|
+
Tags: headers, blank_lines
|
370
|
+
|
371
|
+
This rule is triggered when headers (any style) are either not preceded or not
|
372
|
+
followed by a blank line:
|
373
|
+
|
374
|
+
# Header 1
|
375
|
+
Some text
|
376
|
+
|
377
|
+
Some more text
|
378
|
+
## Header 2
|
379
|
+
|
380
|
+
To fix this, ensure that all headers have a blank line both before and after
|
381
|
+
(except where the header is at the beginning or end of the document):
|
382
|
+
|
383
|
+
# Header 1
|
384
|
+
|
385
|
+
Some text
|
386
|
+
|
387
|
+
Some more text
|
388
|
+
|
389
|
+
## Header 2
|
390
|
+
|
391
|
+
Rationale: Aside from asthetic reasons, some parsers, including kramdown, will
|
392
|
+
not parse headers that don't have a blank line before, and will parse them as
|
393
|
+
regular text.
|
394
|
+
|
395
|
+
## MD023 - Headers must start at the beginning of the line
|
396
|
+
|
397
|
+
Tags: headers, spaces
|
398
|
+
|
399
|
+
This rule is triggered when a header is indented by one or more spaces:
|
400
|
+
|
401
|
+
Some text
|
402
|
+
|
403
|
+
# Indented header
|
404
|
+
|
405
|
+
To fix this, ensure that all headers start at the beginning of the line:
|
406
|
+
|
407
|
+
Some text
|
408
|
+
|
409
|
+
# Header
|
410
|
+
|
411
|
+
Rationale: Headers that don't start at the beginning of the line will not be
|
412
|
+
parsed as headers, and will instead appear as regular text.
|
413
|
+
|
414
|
+
## MD024 - Multiple headers with the same content
|
415
|
+
|
416
|
+
Tags: headers
|
417
|
+
|
418
|
+
This rule is triggered if there are multiple headers in the document that have
|
419
|
+
the same text:
|
420
|
+
|
421
|
+
# Some text
|
422
|
+
|
423
|
+
## Some text
|
424
|
+
|
425
|
+
To fix this, ensure that the content of each header is different:
|
426
|
+
|
427
|
+
# Some text
|
428
|
+
|
429
|
+
## Some more text
|
430
|
+
|
431
|
+
Rationale: Some markdown parses generate anchors for headers based on the
|
432
|
+
header name, and having headers with the same content can cause problems with
|
433
|
+
this.
|
434
|
+
|
435
|
+
## MD025 - Multiple top level headers in the same document
|
436
|
+
|
437
|
+
Tags: headers
|
438
|
+
|
439
|
+
This rule is triggered when a top level header is in use (the first line of
|
440
|
+
the file is a h1 header), and more than one h1 header is in use in the
|
441
|
+
document:
|
442
|
+
|
443
|
+
# Top level header
|
444
|
+
|
445
|
+
# Another top level header
|
446
|
+
|
447
|
+
To fix, structure your document so that there is a single h1 header that is
|
448
|
+
the title for the document, and all later headers are h2 or lower level
|
449
|
+
headers:
|
450
|
+
|
451
|
+
# Title
|
452
|
+
|
453
|
+
## Header
|
454
|
+
|
455
|
+
## Another header
|
456
|
+
|
457
|
+
Rationale: A top level header is a h1 on the first line of the file, and
|
458
|
+
serves as the title for the document. If this convention is in use, then there
|
459
|
+
can not be more than one title for the document, and the entire document
|
460
|
+
should be contained within this header.
|
461
|
+
|
462
|
+
## MD026 - Trailing punctuation in header
|
463
|
+
|
464
|
+
Tags: headers
|
465
|
+
|
466
|
+
Parameters: punctuation
|
467
|
+
|
468
|
+
This rule is triggered on any header that has a punctuation character as the
|
469
|
+
last character in the line:
|
470
|
+
|
471
|
+
# This is a header.
|
472
|
+
|
473
|
+
To fix this, remove any trailing punctuation:
|
474
|
+
|
475
|
+
# This is a header
|
476
|
+
|
477
|
+
Note: The punctuation parameter can be used to specify what characters class
|
478
|
+
as punctuation at the end of the header. For example, you can set it to
|
479
|
+
`'.,;:!'` to allow headers with question marks in them, such as might be used
|
480
|
+
in an FAQ.
|
481
|
+
|
482
|
+
## MD027 - Multiple spaces after blockquote symbol
|
483
|
+
|
484
|
+
Tags: blockquote, whitespace, indentation
|
485
|
+
|
486
|
+
This rule is triggered when blockquotes have more than one space after the
|
487
|
+
blockquote (`>`) symbol:
|
488
|
+
|
489
|
+
> This is a block quote with bad indentation
|
490
|
+
> there should only be one.
|
491
|
+
|
492
|
+
To fix, remove any extraneous space:
|
493
|
+
|
494
|
+
> This is a blockquote with correct
|
495
|
+
> indentation.
|
496
|
+
|
497
|
+
## MD028 - Blank line inside blockquote
|
498
|
+
|
499
|
+
Tags: blockquote, whitespace
|
500
|
+
|
501
|
+
This rule is triggered when two blockquote blocks are separated by nothing
|
502
|
+
except for a blank line:
|
503
|
+
|
504
|
+
> This is a blockquote
|
505
|
+
> which is immediately followed by
|
506
|
+
|
507
|
+
> this blockquote. Unfortunately
|
508
|
+
> In some parsers, these are treated as the same blockquote.
|
509
|
+
|
510
|
+
To fix this, ensure that any blockquotes that are right next to each other
|
511
|
+
have some text in between:
|
512
|
+
|
513
|
+
> This is a blockquote.
|
514
|
+
|
515
|
+
And Jimmy also said:
|
516
|
+
|
517
|
+
> This too is a blockquote.
|
518
|
+
|
519
|
+
Alternatively, if they are supposed to be the same quote, then add the
|
520
|
+
blockquote symbol at the beginning of the blank line:
|
521
|
+
|
522
|
+
> This is a blockquote.
|
523
|
+
>
|
524
|
+
> This is the same blockquote.
|
525
|
+
|
526
|
+
Rationale: Some markdown parsers will treat two blockquotes separated by one
|
527
|
+
or more blank lines as the same blockquote, while others will treat them as
|
528
|
+
separate blockquotes.
|
529
|
+
|
530
|
+
## MD029 - Ordered list item prefix
|
531
|
+
|
532
|
+
Tags: ol
|
533
|
+
|
534
|
+
Parameters: style
|
535
|
+
|
536
|
+
This rule is triggered on ordered lists that do not either start with '1.' or
|
537
|
+
do not have a prefix that increases in numerical order (depending on the
|
538
|
+
configured style, which defaults to 'one').
|
539
|
+
|
540
|
+
Example valid list if the style is configured as 'one':
|
541
|
+
|
542
|
+
1. Do this.
|
543
|
+
1. Do that.
|
544
|
+
1. Done.
|
545
|
+
|
546
|
+
Example valid list if the style is configured as 'ordered':
|
547
|
+
|
548
|
+
1. Do this.
|
549
|
+
2. Do that.
|
550
|
+
3. Done.
|
551
|
+
|
552
|
+
## MD030 - Spaces after list markers
|
553
|
+
|
554
|
+
Tags: ol, ul, whitespace
|
555
|
+
|
556
|
+
Parameters: ul_single, ol_single, ul_multi, ol_multi
|
557
|
+
|
558
|
+
This rule checks for the number of spaces between a list marker (e.g. '`-`',
|
559
|
+
'`*`', '`+`' or '`1.`') and the text of the list item.
|
560
|
+
|
561
|
+
The number of spaces checked for depends on the document style in use, but the
|
562
|
+
default is 1 space after any list marker:
|
563
|
+
|
564
|
+
* Foo
|
565
|
+
* Bar
|
566
|
+
* Baz
|
567
|
+
|
568
|
+
1. Foo
|
569
|
+
1. Bar
|
570
|
+
1. Baz
|
571
|
+
|
572
|
+
1. Foo
|
573
|
+
* Bar
|
574
|
+
1. Baz
|
575
|
+
|
576
|
+
A document style may change the number of spaces after unordered list items
|
577
|
+
and ordered list items independently, as well as based on whether the content
|
578
|
+
of every item in the list consists of a single paragraph, or multiple
|
579
|
+
paragraphs (including sub-lists and code blocks).
|
580
|
+
|
581
|
+
For example, the style guide at
|
582
|
+
<http://www.cirosantilli.com/markdown-styleguide/#spaces-after-marker>
|
583
|
+
specifies that 1 space after the list marker should be used if every item in
|
584
|
+
the list fits within a single paragraph, but to use 2 or 3 spaces (for ordered
|
585
|
+
and unordered lists respectively) if there are multiple paragraphs of content
|
586
|
+
inside the list:
|
587
|
+
|
588
|
+
* Foo
|
589
|
+
* Bar
|
590
|
+
* Baz
|
591
|
+
|
592
|
+
vs.
|
593
|
+
|
594
|
+
* Foo
|
595
|
+
|
596
|
+
Second paragraph
|
597
|
+
|
598
|
+
* Bar
|
599
|
+
|
600
|
+
or
|
601
|
+
|
602
|
+
1. Foo
|
603
|
+
|
604
|
+
Second paragraph
|
605
|
+
|
606
|
+
1. Bar
|
607
|
+
|
608
|
+
To fix this, ensure the correct number of spaces are used after list marker
|
609
|
+
for your selected document style.
|