mdl 0.14.0 → 0.15.0
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/Gemfile +10 -1
- data/lib/mdl/doc.rb +1 -1
- data/lib/mdl/formatters/sarif.rb +1 -1
- data/lib/mdl/rules.rb +10 -10
- data/lib/mdl/ruleset.rb +4 -4
- data/lib/mdl/style.rb +0 -2
- data/lib/mdl/version.rb +1 -1
- data/lib/mdl.rb +4 -4
- data/mdl.gemspec +3 -9
- metadata +6 -100
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 0b0bf6bf60ca7328cdc7b7c979b1c7f9eea59f99c35a219da0eddf8c73e529cc
|
|
4
|
+
data.tar.gz: 954a6871342a9137babebe806cab333bbf883d835cdc1ff867731145fb52d85f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 987343bbcf9c9a260e205970c1ea1bba1c5eb8dc5e0d2f3ed03013126efdf58a65085275f24081019d27fe63c02ce0ebbe0dded59e265392833f19cd00b582dd
|
|
7
|
+
data.tar.gz: aa09c154c250f31e0f0ad9cefc8b1e243562a836c9d2c1d740aa7d5d20eac38ea91f56dd73c7a6d1d8aa5ab57b0ba41143013372a65eb208411d3b8ebe4b53bf
|
data/Gemfile
CHANGED
|
@@ -1,2 +1,11 @@
|
|
|
1
|
-
source 'https://
|
|
1
|
+
source 'https://gem.coop'
|
|
2
2
|
gemspec
|
|
3
|
+
|
|
4
|
+
group :development, :test do
|
|
5
|
+
gem 'base64'
|
|
6
|
+
gem 'bundler', '>= 1.12', '< 3'
|
|
7
|
+
gem 'minitest', '~> 5.26', '>= 5.26.2'
|
|
8
|
+
gem 'pry', '~> 0.15.2'
|
|
9
|
+
gem 'rake', '~> 13.3', '>= 13.3.1'
|
|
10
|
+
gem 'rubocop', '~> 1.81'
|
|
11
|
+
end
|
data/lib/mdl/doc.rb
CHANGED
|
@@ -282,7 +282,7 @@ module MarkdownLint
|
|
|
282
282
|
# returned and we'll just not catch that part of the text, which seems
|
|
283
283
|
# like a sensible failure mode.
|
|
284
284
|
element.children.map do |e|
|
|
285
|
-
if
|
|
285
|
+
if %i{text codespan}.include?(e.type)
|
|
286
286
|
e.value
|
|
287
287
|
elsif %i{strong em p a}.include?(e.type)
|
|
288
288
|
extract_as_text(e).join("\n")
|
data/lib/mdl/formatters/sarif.rb
CHANGED
|
@@ -8,7 +8,7 @@ module MarkdownLint
|
|
|
8
8
|
class << self
|
|
9
9
|
def generate(rules, results)
|
|
10
10
|
matched_rules_id = results.map { |result| result['rule'] }.uniq
|
|
11
|
-
matched_rules = rules.
|
|
11
|
+
matched_rules = rules.slice(*matched_rules_id)
|
|
12
12
|
JSON.generate(generate_sarif(matched_rules, results))
|
|
13
13
|
end
|
|
14
14
|
|
data/lib/mdl/rules.rb
CHANGED
|
@@ -51,8 +51,8 @@ rule 'MD003', 'Header style' do
|
|
|
51
51
|
if doc_style == :setext_with_atx
|
|
52
52
|
headers.map do |h|
|
|
53
53
|
doc.element_linenumber(h) \
|
|
54
|
-
unless (doc.header_style(h) == :setext) ||
|
|
55
|
-
((doc.header_style(h) == :atx) &&
|
|
54
|
+
unless (doc.header_style(h) == :setext) ||
|
|
55
|
+
((doc.header_style(h) == :atx) &&
|
|
56
56
|
(h.options[:level] > 2))
|
|
57
57
|
end.compact
|
|
58
58
|
else
|
|
@@ -180,7 +180,7 @@ rule 'MD010', 'Hard tabs' do
|
|
|
180
180
|
# inside of a code block are acceptable.
|
|
181
181
|
codeblock_lines = doc.find_type_elements(:codeblock).map do |e|
|
|
182
182
|
(doc.element_linenumber(e)..
|
|
183
|
-
doc.element_linenumber(e) + e.value.lines.count).to_a
|
|
183
|
+
(doc.element_linenumber(e) + e.value.lines.count)).to_a
|
|
184
184
|
end.flatten
|
|
185
185
|
|
|
186
186
|
# Check for lines with hard tab
|
|
@@ -207,7 +207,7 @@ rule 'MD012', 'Multiple consecutive blank lines' do
|
|
|
207
207
|
# inside of a code block are acceptable.
|
|
208
208
|
codeblock_lines = doc.find_type_elements(:codeblock).map do |e|
|
|
209
209
|
(doc.element_linenumber(e)..
|
|
210
|
-
doc.element_linenumber(e) + e.value.lines.count).to_a
|
|
210
|
+
(doc.element_linenumber(e) + e.value.lines.count)).to_a
|
|
211
211
|
end.flatten
|
|
212
212
|
blank_lines = doc.matching_lines(/^\s*$/)
|
|
213
213
|
cons_blank_lines = blank_lines.each_cons(2).select do |p, n|
|
|
@@ -227,7 +227,7 @@ rule 'MD013', 'Line length' do
|
|
|
227
227
|
# Every line in the document that is part of a code block.
|
|
228
228
|
codeblock_lines = doc.find_type_elements(:codeblock).map do |e|
|
|
229
229
|
(doc.element_linenumber(e)..
|
|
230
|
-
doc.element_linenumber(e) + e.value.lines.count).to_a
|
|
230
|
+
(doc.element_linenumber(e) + e.value.lines.count)).to_a
|
|
231
231
|
end.flatten
|
|
232
232
|
# Every line in the document that is part of a table.
|
|
233
233
|
locations = doc.elements
|
|
@@ -236,7 +236,7 @@ rule 'MD013', 'Line length' do
|
|
|
236
236
|
table_lines = locations.map.with_index do |(l, e), i|
|
|
237
237
|
if e.type == :table
|
|
238
238
|
if i + 1 < locations.size
|
|
239
|
-
(l..locations[i + 1].first - 1).to_a
|
|
239
|
+
(l..(locations[i + 1].first - 1)).to_a
|
|
240
240
|
else
|
|
241
241
|
(l..doc.lines.count).to_a
|
|
242
242
|
end
|
|
@@ -247,7 +247,7 @@ rule 'MD013', 'Line length' do
|
|
|
247
247
|
overlines -= codeblock_lines
|
|
248
248
|
unless params[:code_blocks]
|
|
249
249
|
warn 'MD013 warning: Parameter :code_blocks is deprecated.'
|
|
250
|
-
warn ' Please replace \":code_blocks => false\" by '\
|
|
250
|
+
warn ' Please replace \":code_blocks => false\" by ' \
|
|
251
251
|
'\":ignore_code_blocks => true\" in your configuration.'
|
|
252
252
|
end
|
|
253
253
|
end
|
|
@@ -543,7 +543,7 @@ rule 'MD030', 'Spaces after list markers' do
|
|
|
543
543
|
next if line.empty?
|
|
544
544
|
|
|
545
545
|
actual_spaces = line.gsub(/^> /, '').match(/^\s*\S+(\s+)/)[1].length
|
|
546
|
-
required_spaces = params["#{list_type}_#{srule}"
|
|
546
|
+
required_spaces = params[:"#{list_type}_#{srule}"]
|
|
547
547
|
errors << doc.element_linenumber(i) if required_spaces != actual_spaces
|
|
548
548
|
end
|
|
549
549
|
end
|
|
@@ -597,7 +597,7 @@ rule 'MD032', 'Lists should be surrounded by blank lines' do
|
|
|
597
597
|
next if line.strip == '{:toc}'
|
|
598
598
|
|
|
599
599
|
unless in_code
|
|
600
|
-
list_marker = line.strip.match(/^([
|
|
600
|
+
list_marker = line.strip.match(/^([*+-]|(\d+\.))\s/)
|
|
601
601
|
if list_marker && !in_list && !prev_line.match(/^($|\s)/)
|
|
602
602
|
errors << (linenum + 1)
|
|
603
603
|
elsif !list_marker && in_list && !line.match(/^($|\s)/)
|
|
@@ -692,7 +692,7 @@ rule 'MD037', 'Spaces inside emphasis markers' do
|
|
|
692
692
|
# Kramdown doesn't parse emphasis with spaces, which means we can just
|
|
693
693
|
# look for emphasis patterns inside regular text with spaces just inside
|
|
694
694
|
# them.
|
|
695
|
-
(doc.matching_text_element_lines(/\s(\*\*?|__?)\s.+\1/) |
|
|
695
|
+
(doc.matching_text_element_lines(/\s(\*\*?|__?)\s.+\1/) |
|
|
696
696
|
doc.matching_text_element_lines(/(\*\*?|__?).+\s\1\s/)).sort
|
|
697
697
|
end
|
|
698
698
|
end
|
data/lib/mdl/ruleset.rb
CHANGED
|
@@ -3,7 +3,7 @@ module MarkdownLint
|
|
|
3
3
|
class Rule
|
|
4
4
|
attr_accessor :id, :description
|
|
5
5
|
|
|
6
|
-
def initialize(id, description, fallback_docs: nil, &
|
|
6
|
+
def initialize(id, description, fallback_docs: nil, &)
|
|
7
7
|
@id = id
|
|
8
8
|
@description = description
|
|
9
9
|
@generate_docs = fallback_docs
|
|
@@ -11,7 +11,7 @@ module MarkdownLint
|
|
|
11
11
|
@aliases = []
|
|
12
12
|
@tags = []
|
|
13
13
|
@params = {}
|
|
14
|
-
instance_eval(&
|
|
14
|
+
instance_eval(&)
|
|
15
15
|
end
|
|
16
16
|
|
|
17
17
|
def check(&block)
|
|
@@ -58,9 +58,9 @@ module MarkdownLint
|
|
|
58
58
|
@rules = {}
|
|
59
59
|
end
|
|
60
60
|
|
|
61
|
-
def rule(id, description, &
|
|
61
|
+
def rule(id, description, &)
|
|
62
62
|
@rules[id] =
|
|
63
|
-
Rule.new(id, description, :fallback_docs => @fallback_docs, &
|
|
63
|
+
Rule.new(id, description, :fallback_docs => @fallback_docs, &)
|
|
64
64
|
end
|
|
65
65
|
|
|
66
66
|
def load(rules_file)
|
data/lib/mdl/style.rb
CHANGED
data/lib/mdl/version.rb
CHANGED
data/lib/mdl.rb
CHANGED
|
@@ -27,21 +27,21 @@ module MarkdownLint
|
|
|
27
27
|
unless Config[:rules][:include].empty?
|
|
28
28
|
rules.select! do |r, v|
|
|
29
29
|
Config[:rules][:include].include?(r) or
|
|
30
|
-
|
|
30
|
+
Config[:rules][:include].intersect?(v.aliases)
|
|
31
31
|
end
|
|
32
32
|
end
|
|
33
33
|
unless Config[:rules][:exclude].empty?
|
|
34
34
|
rules.select! do |r, v|
|
|
35
35
|
!Config[:rules][:exclude].include?(r) and
|
|
36
|
-
|
|
36
|
+
!Config[:rules][:exclude].intersect?(v.aliases)
|
|
37
37
|
end
|
|
38
38
|
end
|
|
39
39
|
end
|
|
40
40
|
# Tag option filter
|
|
41
41
|
if Config[:tags]
|
|
42
|
-
rules.
|
|
42
|
+
rules.select! { |_r, v| v.tags.intersect?(Config[:tags][:include]) } \
|
|
43
43
|
unless Config[:tags][:include].empty?
|
|
44
|
-
rules.
|
|
44
|
+
rules.reject! { |_r, v| v.tags.intersect?(Config[:tags][:exclude]) } \
|
|
45
45
|
unless Config[:tags][:exclude].empty?
|
|
46
46
|
end
|
|
47
47
|
|
data/mdl.gemspec
CHANGED
|
@@ -19,17 +19,11 @@ Gem::Specification.new do |spec|
|
|
|
19
19
|
spec.executables = %w{mdl}
|
|
20
20
|
spec.require_paths = ['lib']
|
|
21
21
|
|
|
22
|
-
spec.required_ruby_version = '>= 2
|
|
22
|
+
spec.required_ruby_version = '>= 3.2'
|
|
23
23
|
|
|
24
24
|
spec.add_dependency 'kramdown', '~> 2.3'
|
|
25
25
|
spec.add_dependency 'kramdown-parser-gfm', '~> 1.1'
|
|
26
|
-
spec.add_dependency 'mixlib-cli'
|
|
27
|
-
spec.add_dependency 'mixlib-config'
|
|
26
|
+
spec.add_dependency 'mixlib-cli'
|
|
27
|
+
spec.add_dependency 'mixlib-config'
|
|
28
28
|
spec.add_dependency 'mixlib-shellout'
|
|
29
|
-
|
|
30
|
-
spec.add_development_dependency 'bundler', '>= 1.12', '< 3'
|
|
31
|
-
spec.add_development_dependency 'minitest', '~> 5.9'
|
|
32
|
-
spec.add_development_dependency 'pry', '~> 0.10'
|
|
33
|
-
spec.add_development_dependency 'rake', '>= 11.2', '< 14'
|
|
34
|
-
spec.add_development_dependency 'rubocop', '~> 1.28.1'
|
|
35
29
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: mdl
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.15.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Mark Harrison
|
|
@@ -42,42 +42,30 @@ dependencies:
|
|
|
42
42
|
name: mixlib-cli
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
44
44
|
requirements:
|
|
45
|
-
- - "~>"
|
|
46
|
-
- !ruby/object:Gem::Version
|
|
47
|
-
version: '2.1'
|
|
48
45
|
- - ">="
|
|
49
46
|
- !ruby/object:Gem::Version
|
|
50
|
-
version:
|
|
47
|
+
version: '0'
|
|
51
48
|
type: :runtime
|
|
52
49
|
prerelease: false
|
|
53
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
54
51
|
requirements:
|
|
55
|
-
- - "~>"
|
|
56
|
-
- !ruby/object:Gem::Version
|
|
57
|
-
version: '2.1'
|
|
58
52
|
- - ">="
|
|
59
53
|
- !ruby/object:Gem::Version
|
|
60
|
-
version:
|
|
54
|
+
version: '0'
|
|
61
55
|
- !ruby/object:Gem::Dependency
|
|
62
56
|
name: mixlib-config
|
|
63
57
|
requirement: !ruby/object:Gem::Requirement
|
|
64
58
|
requirements:
|
|
65
59
|
- - ">="
|
|
66
60
|
- !ruby/object:Gem::Version
|
|
67
|
-
version:
|
|
68
|
-
- - "<"
|
|
69
|
-
- !ruby/object:Gem::Version
|
|
70
|
-
version: '4'
|
|
61
|
+
version: '0'
|
|
71
62
|
type: :runtime
|
|
72
63
|
prerelease: false
|
|
73
64
|
version_requirements: !ruby/object:Gem::Requirement
|
|
74
65
|
requirements:
|
|
75
66
|
- - ">="
|
|
76
67
|
- !ruby/object:Gem::Version
|
|
77
|
-
version:
|
|
78
|
-
- - "<"
|
|
79
|
-
- !ruby/object:Gem::Version
|
|
80
|
-
version: '4'
|
|
68
|
+
version: '0'
|
|
81
69
|
- !ruby/object:Gem::Dependency
|
|
82
70
|
name: mixlib-shellout
|
|
83
71
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -92,88 +80,6 @@ dependencies:
|
|
|
92
80
|
- - ">="
|
|
93
81
|
- !ruby/object:Gem::Version
|
|
94
82
|
version: '0'
|
|
95
|
-
- !ruby/object:Gem::Dependency
|
|
96
|
-
name: bundler
|
|
97
|
-
requirement: !ruby/object:Gem::Requirement
|
|
98
|
-
requirements:
|
|
99
|
-
- - ">="
|
|
100
|
-
- !ruby/object:Gem::Version
|
|
101
|
-
version: '1.12'
|
|
102
|
-
- - "<"
|
|
103
|
-
- !ruby/object:Gem::Version
|
|
104
|
-
version: '3'
|
|
105
|
-
type: :development
|
|
106
|
-
prerelease: false
|
|
107
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
108
|
-
requirements:
|
|
109
|
-
- - ">="
|
|
110
|
-
- !ruby/object:Gem::Version
|
|
111
|
-
version: '1.12'
|
|
112
|
-
- - "<"
|
|
113
|
-
- !ruby/object:Gem::Version
|
|
114
|
-
version: '3'
|
|
115
|
-
- !ruby/object:Gem::Dependency
|
|
116
|
-
name: minitest
|
|
117
|
-
requirement: !ruby/object:Gem::Requirement
|
|
118
|
-
requirements:
|
|
119
|
-
- - "~>"
|
|
120
|
-
- !ruby/object:Gem::Version
|
|
121
|
-
version: '5.9'
|
|
122
|
-
type: :development
|
|
123
|
-
prerelease: false
|
|
124
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
125
|
-
requirements:
|
|
126
|
-
- - "~>"
|
|
127
|
-
- !ruby/object:Gem::Version
|
|
128
|
-
version: '5.9'
|
|
129
|
-
- !ruby/object:Gem::Dependency
|
|
130
|
-
name: pry
|
|
131
|
-
requirement: !ruby/object:Gem::Requirement
|
|
132
|
-
requirements:
|
|
133
|
-
- - "~>"
|
|
134
|
-
- !ruby/object:Gem::Version
|
|
135
|
-
version: '0.10'
|
|
136
|
-
type: :development
|
|
137
|
-
prerelease: false
|
|
138
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
139
|
-
requirements:
|
|
140
|
-
- - "~>"
|
|
141
|
-
- !ruby/object:Gem::Version
|
|
142
|
-
version: '0.10'
|
|
143
|
-
- !ruby/object:Gem::Dependency
|
|
144
|
-
name: rake
|
|
145
|
-
requirement: !ruby/object:Gem::Requirement
|
|
146
|
-
requirements:
|
|
147
|
-
- - ">="
|
|
148
|
-
- !ruby/object:Gem::Version
|
|
149
|
-
version: '11.2'
|
|
150
|
-
- - "<"
|
|
151
|
-
- !ruby/object:Gem::Version
|
|
152
|
-
version: '14'
|
|
153
|
-
type: :development
|
|
154
|
-
prerelease: false
|
|
155
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
156
|
-
requirements:
|
|
157
|
-
- - ">="
|
|
158
|
-
- !ruby/object:Gem::Version
|
|
159
|
-
version: '11.2'
|
|
160
|
-
- - "<"
|
|
161
|
-
- !ruby/object:Gem::Version
|
|
162
|
-
version: '14'
|
|
163
|
-
- !ruby/object:Gem::Dependency
|
|
164
|
-
name: rubocop
|
|
165
|
-
requirement: !ruby/object:Gem::Requirement
|
|
166
|
-
requirements:
|
|
167
|
-
- - "~>"
|
|
168
|
-
- !ruby/object:Gem::Version
|
|
169
|
-
version: 1.28.1
|
|
170
|
-
type: :development
|
|
171
|
-
prerelease: false
|
|
172
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
173
|
-
requirements:
|
|
174
|
-
- - "~>"
|
|
175
|
-
- !ruby/object:Gem::Version
|
|
176
|
-
version: 1.28.1
|
|
177
83
|
description: Style checker/lint tool for markdown files
|
|
178
84
|
email:
|
|
179
85
|
- mark@mivok.net
|
|
@@ -213,7 +119,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
213
119
|
requirements:
|
|
214
120
|
- - ">="
|
|
215
121
|
- !ruby/object:Gem::Version
|
|
216
|
-
version: '2
|
|
122
|
+
version: '3.2'
|
|
217
123
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
218
124
|
requirements:
|
|
219
125
|
- - ">="
|