mdl 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (92) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +13 -0
  3. data/.travis.yml +7 -0
  4. data/Gemfile +2 -0
  5. data/LICENSE.txt +22 -0
  6. data/README.md +79 -0
  7. data/Rakefile +8 -0
  8. data/bin/mdl +10 -0
  9. data/docs/RULES.md +609 -0
  10. data/docs/creating_rules.md +83 -0
  11. data/docs/creating_styles.md +47 -0
  12. data/example/markdown_spec.md +897 -0
  13. data/lib/mdl.rb +72 -0
  14. data/lib/mdl/cli.rb +89 -0
  15. data/lib/mdl/config.rb +9 -0
  16. data/lib/mdl/doc.rb +252 -0
  17. data/lib/mdl/kramdown_parser.rb +29 -0
  18. data/lib/mdl/rules.rb +393 -0
  19. data/lib/mdl/ruleset.rb +47 -0
  20. data/lib/mdl/style.rb +50 -0
  21. data/lib/mdl/styles/all.rb +1 -0
  22. data/lib/mdl/styles/cirosantilli.rb +6 -0
  23. data/lib/mdl/styles/default.rb +1 -0
  24. data/lib/mdl/styles/relaxed.rb +6 -0
  25. data/lib/mdl/version.rb +3 -0
  26. data/mdl.gemspec +31 -0
  27. data/test/rule_tests/atx_closed_header_spacing.md +17 -0
  28. data/test/rule_tests/atx_header_spacing.md +5 -0
  29. data/test/rule_tests/blockquote_blank_lines.md +31 -0
  30. data/test/rule_tests/blockquote_spaces.md +21 -0
  31. data/test/rule_tests/bulleted_list_2_space_indent.md +6 -0
  32. data/test/rule_tests/bulleted_list_2_space_indent_style.rb +2 -0
  33. data/test/rule_tests/bulleted_list_4_space_indent.md +3 -0
  34. data/test/rule_tests/bulleted_list_not_at_beginning_of_line.md +14 -0
  35. data/test/rule_tests/code_block_dollar.md +22 -0
  36. data/test/rule_tests/consecutive_blank_lines.md +11 -0
  37. data/test/rule_tests/consistent_bullet_styles_asterisk.md +3 -0
  38. data/test/rule_tests/consistent_bullet_styles_dash.md +3 -0
  39. data/test/rule_tests/consistent_bullet_styles_plus.md +3 -0
  40. data/test/rule_tests/empty_doc.md +0 -0
  41. data/test/rule_tests/fenced_code_blocks.md +21 -0
  42. data/test/rule_tests/first_header_bad_atx.md +1 -0
  43. data/test/rule_tests/first_header_bad_setext.md +2 -0
  44. data/test/rule_tests/first_header_good_atx.md +1 -0
  45. data/test/rule_tests/first_header_good_setext.md +2 -0
  46. data/test/rule_tests/header_duplicate_content.md +11 -0
  47. data/test/rule_tests/header_multiple_toplevel.md +3 -0
  48. data/test/rule_tests/header_mutliple_h1_no_toplevel.md +5 -0
  49. data/test/rule_tests/header_trailing_punctuation.md +11 -0
  50. data/test/rule_tests/header_trailing_punctuation_customized.md +14 -0
  51. data/test/rule_tests/header_trailing_punctuation_customized_style.rb +2 -0
  52. data/test/rule_tests/headers_bad.md +7 -0
  53. data/test/rule_tests/headers_good.md +5 -0
  54. data/test/rule_tests/headers_surrounding_space_atx.md +9 -0
  55. data/test/rule_tests/headers_surrounding_space_setext.md +15 -0
  56. data/test/rule_tests/headers_with_spaces_at_the_beginning.md +9 -0
  57. data/test/rule_tests/inconsistent_bullet_indent_same_level.md +4 -0
  58. data/test/rule_tests/inconsistent_bullet_styles_asterisk.md +3 -0
  59. data/test/rule_tests/inconsistent_bullet_styles_dash.md +3 -0
  60. data/test/rule_tests/inconsistent_bullet_styles_plus.md +3 -0
  61. data/test/rule_tests/incorrect_bullet_style_asterisk.md +3 -0
  62. data/test/rule_tests/incorrect_bullet_style_asterisk_style.rb +2 -0
  63. data/test/rule_tests/incorrect_bullet_style_dash.md +3 -0
  64. data/test/rule_tests/incorrect_bullet_style_dash_style.rb +2 -0
  65. data/test/rule_tests/incorrect_bullet_style_plus.md +3 -0
  66. data/test/rule_tests/incorrect_bullet_style_plus_style.rb +2 -0
  67. data/test/rule_tests/incorrect_header_atx.md +6 -0
  68. data/test/rule_tests/incorrect_header_atx_closed.md +6 -0
  69. data/test/rule_tests/incorrect_header_atx_closed_style.rb +2 -0
  70. data/test/rule_tests/incorrect_header_atx_style.rb +2 -0
  71. data/test/rule_tests/incorrect_header_setext.md +6 -0
  72. data/test/rule_tests/incorrect_header_setext_style.rb +2 -0
  73. data/test/rule_tests/long_lines.md +3 -0
  74. data/test/rule_tests/long_lines_100.md +7 -0
  75. data/test/rule_tests/long_lines_100_style.rb +2 -0
  76. data/test/rule_tests/mixed_header_types_atx.md +6 -0
  77. data/test/rule_tests/mixed_header_types_atx_closed.md +6 -0
  78. data/test/rule_tests/mixed_header_types_setext.md +6 -0
  79. data/test/rule_tests/ordered_list_item_prefix.md +13 -0
  80. data/test/rule_tests/ordered_list_item_prefix_ordered.md +13 -0
  81. data/test/rule_tests/ordered_list_item_prefix_ordered_style.rb +2 -0
  82. data/test/rule_tests/reversed_link.md +7 -0
  83. data/test/rule_tests/spaces_after_list_marker.md +74 -0
  84. data/test/rule_tests/spaces_after_list_marker_style.rb +3 -0
  85. data/test/rule_tests/whitespace issues.md +3 -0
  86. data/test/setup_tests.rb +5 -0
  87. data/test/test_ruledocs.rb +45 -0
  88. data/test/test_rules.rb +56 -0
  89. data/tools/README.md +3 -0
  90. data/tools/test_location.rb +20 -0
  91. data/tools/view_markdown.rb +11 -0
  92. metadata +314 -0
@@ -0,0 +1,6 @@
1
+ # Header 1 {MD003} #
2
+
3
+ ## Header 2 {MD003}
4
+
5
+ Header 3
6
+ --------
@@ -0,0 +1,2 @@
1
+ all
2
+ rule 'MD003', :style => :setext
@@ -0,0 +1,3 @@
1
+ This is a very very very very very very very very very very very very very very long line {MD013}
2
+
3
+ This line however, while very long, doesn't have whitespace after the 80th columnwhichallowsforURLsandotherlongthings.
@@ -0,0 +1,7 @@
1
+ This is a very very very very very very very very long line over 80 chars but less than 100
2
+
3
+ This is a very very very very very very very very very very long line over 80 chars, and also over 100. {MD013}
4
+
5
+ This is a very very very very very very very very very long line that is exactly 100 characters long
6
+
7
+ This line however, while very long, doesn't have whitespace after the 100th columnwhichallowsforURLsandotherlongthings.
@@ -0,0 +1,2 @@
1
+ all
2
+ rule 'MD013', :line_length => 100
@@ -0,0 +1,6 @@
1
+ # Header
2
+
3
+ ## Header 2 {MD003} ##
4
+
5
+ Header 3 {MD003}
6
+ ----------------
@@ -0,0 +1,6 @@
1
+ # Header 1 #
2
+
3
+ ## Header 2 {MD003}
4
+
5
+ Header 3 {MD003}
6
+ ----------------
@@ -0,0 +1,6 @@
1
+ Header 1
2
+ ========
3
+
4
+ ## Header 2 {MD003}
5
+
6
+ ## Header 3 {MD003} ##
@@ -0,0 +1,13 @@
1
+ Good list:
2
+
3
+ 1. Do this.
4
+ 1. Do that.
5
+ 1. ???
6
+ 1. Profit!
7
+
8
+ Bad list:
9
+
10
+ 1. Do this.
11
+ 2. Do nothing. {MD029}
12
+ 3. ??? {MD029}
13
+ 4. Failed! {MD029}
@@ -0,0 +1,13 @@
1
+ Good list:
2
+
3
+ 1. Do this.
4
+ 2. Do that.
5
+ 3. ???
6
+ 4. Profit!
7
+
8
+ Bad list:
9
+
10
+ 1. Do this.
11
+ 1. Do nothing. {MD029}
12
+ 1. ??? {MD029}
13
+ 1. Failed! {MD029}
@@ -0,0 +1,2 @@
1
+ all
2
+ rule 'MD029', :style => :ordered
@@ -0,0 +1,7 @@
1
+ Go to (this website)[http://www.example.com] {MD011}
2
+
3
+ However, this shouldn't trigger inside code blocks:
4
+
5
+ myObj.getFiles("test")[0]
6
+
7
+ Nor inline code: `myobj.getFiles("test")[0]`
@@ -0,0 +1,74 @@
1
+ Normal list
2
+
3
+ * Foo
4
+ * Bar
5
+ * Baz
6
+
7
+ List with incorrect spacing
8
+
9
+ * Foo {MD030}
10
+ * Bar {MD030}
11
+ * Baz {MD030}
12
+
13
+ List with children:
14
+
15
+ * Foo {MD030}
16
+ * Bar {MD030}
17
+ * Baz
18
+
19
+ List with children and correct spacing:
20
+
21
+ * Foo
22
+ * Bar
23
+ * Baz (This sublist has no children)
24
+
25
+ List with Multiple paragraphs and correct spacing
26
+
27
+ * Foo
28
+
29
+ Here is the second paragraph
30
+
31
+ * All items in the list need the same indent
32
+
33
+ List with multiple paragraphs and incorrect spacing
34
+
35
+ * Foo {MD030}
36
+
37
+ Here is the second paragraph
38
+
39
+ * Bar {MD030}
40
+
41
+ List with code blocks:
42
+
43
+ * Foo
44
+
45
+ Here is some code
46
+
47
+ * Bar
48
+
49
+ Ordered lists:
50
+
51
+ 1. Foo
52
+ 1. Bar
53
+ 1. Baz
54
+
55
+ And with incorrect spacing:
56
+
57
+ 1. Foo {MD030}
58
+ 1. Bar {MD030}
59
+ 1. Baz {MD030}
60
+
61
+ Ordered lists with children:
62
+
63
+ 1. Foo {MD030}
64
+ * Hi
65
+ 1. Bar {MD030}
66
+ 1. Baz {MD030}
67
+
68
+ Ordered lists with children (correct spacing), and with something other than
69
+ the first item determining that the entire list has children:
70
+
71
+ 1. Foo
72
+ 1. Bar
73
+ * Hi
74
+ 1. Baz
@@ -0,0 +1,3 @@
1
+ all
2
+ rule "MD007", :indent => 4
3
+ rule "MD030", :ul_multi => 3, :ol_multi => 2
@@ -0,0 +1,3 @@
1
+ Some text {MD009}
2
+ Some more text {MD010}
3
+ Some more text
@@ -0,0 +1,5 @@
1
+ require 'bundler/setup'
2
+ Bundler.setup
3
+
4
+ require_relative '../lib/mdl'
5
+ require 'minitest/autorun'
@@ -0,0 +1,45 @@
1
+ require_relative 'setup_tests'
2
+
3
+ # Ensures there is documentation for every rule, and that the
4
+ # descriptions/tags/etc in the rule match those in the documentation
5
+ class TestRuledocs < Minitest::Test
6
+ @@rules = MarkdownLint::RuleSet.load_default
7
+
8
+ def setup
9
+ @ruledocs = load_ruledocs
10
+ end
11
+
12
+ def load_ruledocs
13
+ rules = Hash.new({}) # Default to {} if no docs for the rule
14
+ curr_rule = nil
15
+ rules_file = File.expand_path('../../docs/RULES.md', __FILE__)
16
+ File.read(rules_file).split("\n").each do |l|
17
+ if l.match(/^## (MD\d+) - (.*)$/)
18
+ rules[$1] = { :description => $2, :params => {} }
19
+ curr_rule = $1
20
+ elsif l.match(/^Tags: (.*)$/)
21
+ rules[curr_rule][:tags] = $1.split(',').map{|i| i.strip.to_sym}
22
+ elsif l.match(/^Parameters: (.*)$/)
23
+ rules[curr_rule][:params] = $1.split(',').map{|i| i.strip.to_sym}
24
+ end
25
+ end
26
+ rules
27
+ end
28
+
29
+ @@rules.each do |id, r|
30
+ define_method("test_ruledoc_description_#{id}") do
31
+ assert_equal r.description, @ruledocs[id][:description]
32
+ end
33
+ define_method("test_ruledoc_tags_#{id}") do
34
+ assert_equal r.tags, @ruledocs[id][:tags]
35
+ end
36
+ define_method("test_ruledoc_params_#{id}") do
37
+ assert_equal r.params.keys.sort, (@ruledocs[id][:params] || []).sort
38
+ end
39
+ end
40
+
41
+ def test_ruledoc_for_every_rule
42
+ # (and vice versa)
43
+ assert_equal @@rules.keys, @ruledocs.keys
44
+ end
45
+ end
@@ -0,0 +1,56 @@
1
+ require_relative 'setup_tests'
2
+
3
+ class TestRules < Minitest::Test
4
+
5
+ def get_expected_errors(lines)
6
+ # Looks for lines tagged with {MD123} to signify that a rule is expected to
7
+ # fire for this line. It also looks for lines tagged with {MD123:1} to
8
+ # signify that a rule is expected to fire on another line (the line number
9
+ # after the colon).
10
+ expected_errors = {}
11
+ re = /\{(MD\d+)(?::(\d+))?\}/
12
+ lines.each_with_index do |line, num|
13
+ m = re.match(line)
14
+ while m
15
+ expected_errors[m[1]] ||= []
16
+ if m[2]
17
+ expected_line = m[2].to_i
18
+ else
19
+ expected_line = num + 1 # 1 indexed lines
20
+ end
21
+ expected_errors[m[1]] << expected_line
22
+ m = re.match(line, m.end(0))
23
+ end
24
+ end
25
+ expected_errors
26
+ end
27
+
28
+ def do_lint(filename)
29
+ # Check for a test_case_style.rb style file for individual tests
30
+ style_file = filename.sub(/.md$/, '_style.rb')
31
+ if ! File.exist?(style_file)
32
+ style_file = 'all'
33
+ end
34
+
35
+ rules = MarkdownLint::RuleSet.load_default
36
+ style = MarkdownLint::Style.load(style_file, rules)
37
+ rules.select! {|r| style.rules.include?(r)}
38
+
39
+ doc = MarkdownLint::Doc.new(File.read(filename))
40
+ expected_errors = get_expected_errors(doc.lines)
41
+ actual_errors = {}
42
+ rules.sort.each do |id, rule|
43
+ error_lines = rule.check.call(doc)
44
+ if error_lines and not error_lines.empty?
45
+ actual_errors[id] = error_lines
46
+ end
47
+ end
48
+ assert_equal expected_errors, actual_errors
49
+ end
50
+
51
+ Dir[File.expand_path("../rule_tests/*.md", __FILE__)].each do |filename|
52
+ define_method("test_#{File.basename(filename, '.md')}") do
53
+ do_lint(filename)
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,3 @@
1
+ This directory contains a few scripts that, while not part of markdownlint
2
+ directly, can be useful for inspecting markdown documents and debugging
3
+ issues.
@@ -0,0 +1,20 @@
1
+ #!/usr/bin/env ruby
2
+ # Script for identifying when markdownlint is receiving an incorrect line
3
+ # number for an element. It checks all headers, then grabs the lines
4
+ # associated with the headers according to markdown and compares the content,
5
+ # printing out any that don't match.
6
+ require 'mdl/doc'
7
+ require 'pry'
8
+
9
+ text = File.read(ARGV[0])
10
+ unless ARGV[1].nil?
11
+ # If we provide a second argument, then start the document from line N of
12
+ # the original file.
13
+ text = text.split("\n")[ARGV[1].to_i - 1..-1].join("\n")
14
+ end
15
+ doc = MarkdownLint::Doc.new(text)
16
+ headers = doc.find_type(:header)
17
+ bad_headers = headers.select do |e|
18
+ doc.element_line(e).nil? || ! doc.element_line(e).include?(e[:raw_text])
19
+ end
20
+ pp bad_headers
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env ruby
2
+ # Quick script for viewing getting at kramdown's and markdownlint's view of a
3
+ # markdown file
4
+ require 'mdl/doc'
5
+ require 'pry'
6
+
7
+
8
+ doc = MarkdownLint::Doc.new_from_file(ARGV[0])
9
+ children = doc.parsed.root.children
10
+
11
+ binding.pry
metadata ADDED
@@ -0,0 +1,314 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mdl
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Mark Harrison
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-09-07 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: kramdown
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.4'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 1.4.0
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '1.4'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 1.4.0
33
+ - !ruby/object:Gem::Dependency
34
+ name: mixlib-config
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '2.1'
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: 2.1.0
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '2.1'
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: 2.1.0
53
+ - !ruby/object:Gem::Dependency
54
+ name: mixlib-cli
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: '1.5'
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: 1.5.0
63
+ type: :runtime
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '1.5'
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: 1.5.0
73
+ - !ruby/object:Gem::Dependency
74
+ name: bundler
75
+ requirement: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - "~>"
78
+ - !ruby/object:Gem::Version
79
+ version: '1.5'
80
+ type: :development
81
+ prerelease: false
82
+ version_requirements: !ruby/object:Gem::Requirement
83
+ requirements:
84
+ - - "~>"
85
+ - !ruby/object:Gem::Version
86
+ version: '1.5'
87
+ - !ruby/object:Gem::Dependency
88
+ name: rake
89
+ requirement: !ruby/object:Gem::Requirement
90
+ requirements:
91
+ - - "~>"
92
+ - !ruby/object:Gem::Version
93
+ version: '10.0'
94
+ type: :development
95
+ prerelease: false
96
+ version_requirements: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - "~>"
99
+ - !ruby/object:Gem::Version
100
+ version: '10.0'
101
+ - !ruby/object:Gem::Dependency
102
+ name: minitest
103
+ requirement: !ruby/object:Gem::Requirement
104
+ requirements:
105
+ - - "~>"
106
+ - !ruby/object:Gem::Version
107
+ version: '5.0'
108
+ type: :development
109
+ prerelease: false
110
+ version_requirements: !ruby/object:Gem::Requirement
111
+ requirements:
112
+ - - "~>"
113
+ - !ruby/object:Gem::Version
114
+ version: '5.0'
115
+ - !ruby/object:Gem::Dependency
116
+ name: pry
117
+ requirement: !ruby/object:Gem::Requirement
118
+ requirements:
119
+ - - "~>"
120
+ - !ruby/object:Gem::Version
121
+ version: '0.10'
122
+ type: :development
123
+ prerelease: false
124
+ version_requirements: !ruby/object:Gem::Requirement
125
+ requirements:
126
+ - - "~>"
127
+ - !ruby/object:Gem::Version
128
+ version: '0.10'
129
+ description: Style checker/lint tool for markdown files
130
+ email:
131
+ - mark@mivok.net
132
+ executables:
133
+ - mdl
134
+ extensions: []
135
+ extra_rdoc_files: []
136
+ files:
137
+ - ".gitignore"
138
+ - ".travis.yml"
139
+ - Gemfile
140
+ - LICENSE.txt
141
+ - README.md
142
+ - Rakefile
143
+ - bin/mdl
144
+ - docs/RULES.md
145
+ - docs/creating_rules.md
146
+ - docs/creating_styles.md
147
+ - example/markdown_spec.md
148
+ - lib/mdl.rb
149
+ - lib/mdl/cli.rb
150
+ - lib/mdl/config.rb
151
+ - lib/mdl/doc.rb
152
+ - lib/mdl/kramdown_parser.rb
153
+ - lib/mdl/rules.rb
154
+ - lib/mdl/ruleset.rb
155
+ - lib/mdl/style.rb
156
+ - lib/mdl/styles/all.rb
157
+ - lib/mdl/styles/cirosantilli.rb
158
+ - lib/mdl/styles/default.rb
159
+ - lib/mdl/styles/relaxed.rb
160
+ - lib/mdl/version.rb
161
+ - mdl.gemspec
162
+ - test/rule_tests/atx_closed_header_spacing.md
163
+ - test/rule_tests/atx_header_spacing.md
164
+ - test/rule_tests/blockquote_blank_lines.md
165
+ - test/rule_tests/blockquote_spaces.md
166
+ - test/rule_tests/bulleted_list_2_space_indent.md
167
+ - test/rule_tests/bulleted_list_2_space_indent_style.rb
168
+ - test/rule_tests/bulleted_list_4_space_indent.md
169
+ - test/rule_tests/bulleted_list_not_at_beginning_of_line.md
170
+ - test/rule_tests/code_block_dollar.md
171
+ - test/rule_tests/consecutive_blank_lines.md
172
+ - test/rule_tests/consistent_bullet_styles_asterisk.md
173
+ - test/rule_tests/consistent_bullet_styles_dash.md
174
+ - test/rule_tests/consistent_bullet_styles_plus.md
175
+ - test/rule_tests/empty_doc.md
176
+ - test/rule_tests/fenced_code_blocks.md
177
+ - test/rule_tests/first_header_bad_atx.md
178
+ - test/rule_tests/first_header_bad_setext.md
179
+ - test/rule_tests/first_header_good_atx.md
180
+ - test/rule_tests/first_header_good_setext.md
181
+ - test/rule_tests/header_duplicate_content.md
182
+ - test/rule_tests/header_multiple_toplevel.md
183
+ - test/rule_tests/header_mutliple_h1_no_toplevel.md
184
+ - test/rule_tests/header_trailing_punctuation.md
185
+ - test/rule_tests/header_trailing_punctuation_customized.md
186
+ - test/rule_tests/header_trailing_punctuation_customized_style.rb
187
+ - test/rule_tests/headers_bad.md
188
+ - test/rule_tests/headers_good.md
189
+ - test/rule_tests/headers_surrounding_space_atx.md
190
+ - test/rule_tests/headers_surrounding_space_setext.md
191
+ - test/rule_tests/headers_with_spaces_at_the_beginning.md
192
+ - test/rule_tests/inconsistent_bullet_indent_same_level.md
193
+ - test/rule_tests/inconsistent_bullet_styles_asterisk.md
194
+ - test/rule_tests/inconsistent_bullet_styles_dash.md
195
+ - test/rule_tests/inconsistent_bullet_styles_plus.md
196
+ - test/rule_tests/incorrect_bullet_style_asterisk.md
197
+ - test/rule_tests/incorrect_bullet_style_asterisk_style.rb
198
+ - test/rule_tests/incorrect_bullet_style_dash.md
199
+ - test/rule_tests/incorrect_bullet_style_dash_style.rb
200
+ - test/rule_tests/incorrect_bullet_style_plus.md
201
+ - test/rule_tests/incorrect_bullet_style_plus_style.rb
202
+ - test/rule_tests/incorrect_header_atx.md
203
+ - test/rule_tests/incorrect_header_atx_closed.md
204
+ - test/rule_tests/incorrect_header_atx_closed_style.rb
205
+ - test/rule_tests/incorrect_header_atx_style.rb
206
+ - test/rule_tests/incorrect_header_setext.md
207
+ - test/rule_tests/incorrect_header_setext_style.rb
208
+ - test/rule_tests/long_lines.md
209
+ - test/rule_tests/long_lines_100.md
210
+ - test/rule_tests/long_lines_100_style.rb
211
+ - test/rule_tests/mixed_header_types_atx.md
212
+ - test/rule_tests/mixed_header_types_atx_closed.md
213
+ - test/rule_tests/mixed_header_types_setext.md
214
+ - test/rule_tests/ordered_list_item_prefix.md
215
+ - test/rule_tests/ordered_list_item_prefix_ordered.md
216
+ - test/rule_tests/ordered_list_item_prefix_ordered_style.rb
217
+ - test/rule_tests/reversed_link.md
218
+ - test/rule_tests/spaces_after_list_marker.md
219
+ - test/rule_tests/spaces_after_list_marker_style.rb
220
+ - test/rule_tests/whitespace issues.md
221
+ - test/setup_tests.rb
222
+ - test/test_ruledocs.rb
223
+ - test/test_rules.rb
224
+ - tools/README.md
225
+ - tools/test_location.rb
226
+ - tools/view_markdown.rb
227
+ homepage: http://github.com/mivok/mdl
228
+ licenses:
229
+ - MIT
230
+ metadata: {}
231
+ post_install_message:
232
+ rdoc_options: []
233
+ require_paths:
234
+ - lib
235
+ required_ruby_version: !ruby/object:Gem::Requirement
236
+ requirements:
237
+ - - ">="
238
+ - !ruby/object:Gem::Version
239
+ version: 1.9.2
240
+ required_rubygems_version: !ruby/object:Gem::Requirement
241
+ requirements:
242
+ - - ">="
243
+ - !ruby/object:Gem::Version
244
+ version: '0'
245
+ requirements: []
246
+ rubyforge_project:
247
+ rubygems_version: 2.2.1
248
+ signing_key:
249
+ specification_version: 4
250
+ summary: Markdown lint tool
251
+ test_files:
252
+ - test/rule_tests/atx_closed_header_spacing.md
253
+ - test/rule_tests/atx_header_spacing.md
254
+ - test/rule_tests/blockquote_blank_lines.md
255
+ - test/rule_tests/blockquote_spaces.md
256
+ - test/rule_tests/bulleted_list_2_space_indent.md
257
+ - test/rule_tests/bulleted_list_2_space_indent_style.rb
258
+ - test/rule_tests/bulleted_list_4_space_indent.md
259
+ - test/rule_tests/bulleted_list_not_at_beginning_of_line.md
260
+ - test/rule_tests/code_block_dollar.md
261
+ - test/rule_tests/consecutive_blank_lines.md
262
+ - test/rule_tests/consistent_bullet_styles_asterisk.md
263
+ - test/rule_tests/consistent_bullet_styles_dash.md
264
+ - test/rule_tests/consistent_bullet_styles_plus.md
265
+ - test/rule_tests/empty_doc.md
266
+ - test/rule_tests/fenced_code_blocks.md
267
+ - test/rule_tests/first_header_bad_atx.md
268
+ - test/rule_tests/first_header_bad_setext.md
269
+ - test/rule_tests/first_header_good_atx.md
270
+ - test/rule_tests/first_header_good_setext.md
271
+ - test/rule_tests/header_duplicate_content.md
272
+ - test/rule_tests/header_multiple_toplevel.md
273
+ - test/rule_tests/header_mutliple_h1_no_toplevel.md
274
+ - test/rule_tests/header_trailing_punctuation.md
275
+ - test/rule_tests/header_trailing_punctuation_customized.md
276
+ - test/rule_tests/header_trailing_punctuation_customized_style.rb
277
+ - test/rule_tests/headers_bad.md
278
+ - test/rule_tests/headers_good.md
279
+ - test/rule_tests/headers_surrounding_space_atx.md
280
+ - test/rule_tests/headers_surrounding_space_setext.md
281
+ - test/rule_tests/headers_with_spaces_at_the_beginning.md
282
+ - test/rule_tests/inconsistent_bullet_indent_same_level.md
283
+ - test/rule_tests/inconsistent_bullet_styles_asterisk.md
284
+ - test/rule_tests/inconsistent_bullet_styles_dash.md
285
+ - test/rule_tests/inconsistent_bullet_styles_plus.md
286
+ - test/rule_tests/incorrect_bullet_style_asterisk.md
287
+ - test/rule_tests/incorrect_bullet_style_asterisk_style.rb
288
+ - test/rule_tests/incorrect_bullet_style_dash.md
289
+ - test/rule_tests/incorrect_bullet_style_dash_style.rb
290
+ - test/rule_tests/incorrect_bullet_style_plus.md
291
+ - test/rule_tests/incorrect_bullet_style_plus_style.rb
292
+ - test/rule_tests/incorrect_header_atx.md
293
+ - test/rule_tests/incorrect_header_atx_closed.md
294
+ - test/rule_tests/incorrect_header_atx_closed_style.rb
295
+ - test/rule_tests/incorrect_header_atx_style.rb
296
+ - test/rule_tests/incorrect_header_setext.md
297
+ - test/rule_tests/incorrect_header_setext_style.rb
298
+ - test/rule_tests/long_lines.md
299
+ - test/rule_tests/long_lines_100.md
300
+ - test/rule_tests/long_lines_100_style.rb
301
+ - test/rule_tests/mixed_header_types_atx.md
302
+ - test/rule_tests/mixed_header_types_atx_closed.md
303
+ - test/rule_tests/mixed_header_types_setext.md
304
+ - test/rule_tests/ordered_list_item_prefix.md
305
+ - test/rule_tests/ordered_list_item_prefix_ordered.md
306
+ - test/rule_tests/ordered_list_item_prefix_ordered_style.rb
307
+ - test/rule_tests/reversed_link.md
308
+ - test/rule_tests/spaces_after_list_marker.md
309
+ - test/rule_tests/spaces_after_list_marker_style.rb
310
+ - test/rule_tests/whitespace issues.md
311
+ - test/setup_tests.rb
312
+ - test/test_ruledocs.rb
313
+ - test/test_rules.rb
314
+ has_rdoc: