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.
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: