mdl 0.9.0 → 0.10.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/mdl +2 -2
- data/lib/mdl.rb +41 -32
- data/lib/mdl/cli.rb +92 -90
- data/lib/mdl/config.rb +2 -1
- data/lib/mdl/doc.rb +45 -54
- data/lib/mdl/kramdown_parser.rb +1 -1
- data/lib/mdl/rules.rb +206 -167
- data/lib/mdl/ruleset.rb +11 -10
- data/lib/mdl/style.rb +18 -16
- data/lib/mdl/styles/cirosantilli.rb +2 -2
- data/lib/mdl/styles/default.rb +1 -1
- data/lib/mdl/version.rb +1 -1
- data/mdl.gemspec +20 -18
- metadata +63 -35
data/lib/mdl/ruleset.rb
CHANGED
@@ -1,38 +1,39 @@
|
|
1
1
|
module MarkdownLint
|
2
|
+
# defines a single rule
|
2
3
|
class Rule
|
3
4
|
attr_accessor :id, :description
|
4
5
|
|
5
6
|
def initialize(id, description, block)
|
6
|
-
@id
|
7
|
+
@id = id
|
8
|
+
@description = description
|
7
9
|
@aliases = []
|
8
10
|
@tags = []
|
9
11
|
@params = {}
|
10
12
|
instance_eval(&block)
|
11
13
|
end
|
12
14
|
|
13
|
-
|
14
15
|
def check(&block)
|
15
16
|
@check = block unless block.nil?
|
16
17
|
@check
|
17
18
|
end
|
18
19
|
|
19
|
-
def tags(*
|
20
|
-
@tags =
|
20
|
+
def tags(*tags)
|
21
|
+
@tags = tags.flatten.map(&:to_sym) unless tags.empty?
|
21
22
|
@tags
|
22
23
|
end
|
23
24
|
|
24
|
-
def aliases(*
|
25
|
-
@aliases.concat(
|
25
|
+
def aliases(*aliases)
|
26
|
+
@aliases.concat(aliases)
|
26
27
|
@aliases
|
27
28
|
end
|
28
29
|
|
29
|
-
def params(
|
30
|
-
@params.update(
|
30
|
+
def params(params = nil)
|
31
|
+
@params.update(params) unless params.nil?
|
31
32
|
@params
|
32
33
|
end
|
33
|
-
|
34
34
|
end
|
35
35
|
|
36
|
+
# defines a ruleset
|
36
37
|
class RuleSet
|
37
38
|
attr_reader :rules
|
38
39
|
|
@@ -50,7 +51,7 @@ module MarkdownLint
|
|
50
51
|
end
|
51
52
|
|
52
53
|
def load_default
|
53
|
-
load(File.expand_path(
|
54
|
+
load(File.expand_path('rules.rb', __dir__))
|
54
55
|
end
|
55
56
|
end
|
56
57
|
end
|
data/lib/mdl/style.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'set'
|
2
2
|
|
3
3
|
module MarkdownLint
|
4
|
+
# defines a style
|
4
5
|
class Style
|
5
6
|
attr_reader :rules
|
6
7
|
|
@@ -24,14 +25,15 @@ module MarkdownLint
|
|
24
25
|
@rules.merge(@all_rules.keys)
|
25
26
|
end
|
26
27
|
|
27
|
-
def rule(id, params={})
|
28
|
+
def rule(id, params = {})
|
28
29
|
if block_given?
|
29
|
-
raise "
|
30
|
+
raise '"rule" does not take a block. Should this definition go in a ' +
|
31
|
+
'ruleset instead?'
|
30
32
|
end
|
33
|
+
|
31
34
|
id = @aliases[id] if @aliases[id]
|
32
|
-
unless @all_rules[id]
|
33
|
-
|
34
|
-
end
|
35
|
+
raise "No such rule: #{id}" unless @all_rules[id]
|
36
|
+
|
35
37
|
@rules << id
|
36
38
|
@all_rules[id].params(params)
|
37
39
|
end
|
@@ -41,35 +43,35 @@ module MarkdownLint
|
|
41
43
|
@rules.delete(id)
|
42
44
|
end
|
43
45
|
|
44
|
-
def tag(
|
45
|
-
@rules.merge(@tagged_rules[
|
46
|
+
def tag(tag)
|
47
|
+
@rules.merge(@tagged_rules[tag])
|
46
48
|
end
|
47
49
|
|
48
|
-
def exclude_tag(
|
49
|
-
@rules.subtract(@tagged_rules[
|
50
|
+
def exclude_tag(tag)
|
51
|
+
@rules.subtract(@tagged_rules[tag])
|
50
52
|
end
|
51
53
|
|
52
54
|
def self.load(style_file, rules)
|
53
|
-
unless style_file.include?(
|
55
|
+
unless style_file.include?('/') || style_file.end_with?('.rb')
|
54
56
|
tmp = File.expand_path("../styles/#{style_file}.rb", __FILE__)
|
55
57
|
unless File.exist?(tmp)
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
58
|
+
warn "#{style_file} does not appear to be a built-in style." +
|
59
|
+
' If you meant to pass in your own style file, it must contain' +
|
60
|
+
" a '/' or end in '.rb'. See https://github.com/markdownlint/" +
|
61
|
+
'markdownlint/blob/master/docs/configuration.md'
|
60
62
|
exit(1)
|
61
63
|
end
|
62
64
|
style_file = tmp
|
63
65
|
end
|
64
66
|
|
65
67
|
unless File.exist?(style_file)
|
66
|
-
|
68
|
+
warn "Style '#{style_file}' does not exist."
|
67
69
|
exit(1)
|
68
70
|
end
|
69
71
|
|
70
72
|
style = new(rules)
|
71
73
|
style.instance_eval(File.read(style_file), style_file)
|
72
|
-
rules.select! {|r| style.rules.include?(r)}
|
74
|
+
rules.select! { |r| style.rules.include?(r) }
|
73
75
|
style
|
74
76
|
end
|
75
77
|
end
|
@@ -1,10 +1,10 @@
|
|
1
|
-
# Enforce the style guide at
|
1
|
+
# Enforce the style guide at https://cirosantilli.com/markdown-style-guide
|
2
2
|
all
|
3
3
|
rule 'MD003', :style => :atx
|
4
4
|
rule 'MD004', :style => :dash
|
5
5
|
rule 'MD007', :indent => 4
|
6
6
|
rule 'MD030', :ul_multi => 3, :ol_multi => 2
|
7
|
-
rule 'MD035', :style =>
|
7
|
+
rule 'MD035', :style => '---'
|
8
8
|
|
9
9
|
# Inline HTML - this isn't forbidden by the style guide, and raw HTML use is
|
10
10
|
# explicitly mentioned in the 'email automatic links' section.
|
data/lib/mdl/styles/default.rb
CHANGED
data/lib/mdl/version.rb
CHANGED
data/mdl.gemspec
CHANGED
@@ -1,32 +1,34 @@
|
|
1
|
-
|
2
|
-
lib = File.expand_path('../lib', __FILE__)
|
1
|
+
lib = File.expand_path('lib', __dir__)
|
3
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
3
|
require 'mdl/version'
|
5
4
|
|
6
5
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name
|
8
|
-
spec.version
|
9
|
-
spec.authors
|
10
|
-
spec.email
|
11
|
-
spec.summary
|
12
|
-
spec.description
|
13
|
-
spec.homepage
|
14
|
-
spec.license
|
6
|
+
spec.name = 'mdl'
|
7
|
+
spec.version = MarkdownLint::VERSION
|
8
|
+
spec.authors = ['Mark Harrison']
|
9
|
+
spec.email = ['mark@mivok.net']
|
10
|
+
spec.summary = 'Markdown lint tool'
|
11
|
+
spec.description = 'Style checker/lint tool for markdown files'
|
12
|
+
spec.homepage = 'http://github.com/markdownlint/markdownlint'
|
13
|
+
spec.license = 'MIT'
|
15
14
|
|
16
|
-
spec.files
|
17
|
-
|
18
|
-
spec.
|
19
|
-
spec.
|
15
|
+
spec.files = %w{LICENSE.txt Gemfile} + Dir.glob('*.gemspec') +
|
16
|
+
Dir.glob('lib/**/*')
|
17
|
+
spec.bindir = 'bin'
|
18
|
+
spec.executables = %w{mdl}
|
19
|
+
spec.require_paths = ['lib']
|
20
20
|
|
21
21
|
spec.required_ruby_version = '>= 2.4'
|
22
22
|
|
23
|
-
spec.add_dependency 'kramdown', '~> 2.
|
24
|
-
spec.add_dependency 'kramdown-parser-gfm', '~> 1.
|
25
|
-
spec.add_dependency 'mixlib-config', '>= 2.2.1', '< 4'
|
23
|
+
spec.add_dependency 'kramdown', '~> 2.3'
|
24
|
+
spec.add_dependency 'kramdown-parser-gfm', '~> 1.1'
|
26
25
|
spec.add_dependency 'mixlib-cli', '~> 2.1', '>= 2.1.1'
|
26
|
+
spec.add_dependency 'mixlib-config', '>= 2.2.1', '< 4'
|
27
|
+
spec.add_dependency 'mixlib-shellout'
|
27
28
|
|
28
29
|
spec.add_development_dependency 'bundler', '>= 1.12', '< 3'
|
29
|
-
spec.add_development_dependency 'rake', '>= 11.2', '< 14'
|
30
30
|
spec.add_development_dependency 'minitest', '~> 5.9'
|
31
31
|
spec.add_development_dependency 'pry', '~> 0.10'
|
32
|
+
spec.add_development_dependency 'rake', '>= 11.2', '< 14'
|
33
|
+
spec.add_development_dependency 'rubocop', '>= 0.49.0'
|
32
34
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mdl
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.10.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mark Harrison
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-08-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: kramdown
|
@@ -16,28 +16,48 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '2.
|
19
|
+
version: '2.3'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '2.
|
26
|
+
version: '2.3'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: kramdown-parser-gfm
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '1.
|
33
|
+
version: '1.1'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '1.
|
40
|
+
version: '1.1'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: mixlib-cli
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '2.1'
|
48
|
+
- - ">="
|
49
|
+
- !ruby/object:Gem::Version
|
50
|
+
version: 2.1.1
|
51
|
+
type: :runtime
|
52
|
+
prerelease: false
|
53
|
+
version_requirements: !ruby/object:Gem::Requirement
|
54
|
+
requirements:
|
55
|
+
- - "~>"
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: '2.1'
|
58
|
+
- - ">="
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: 2.1.1
|
41
61
|
- !ruby/object:Gem::Dependency
|
42
62
|
name: mixlib-config
|
43
63
|
requirement: !ruby/object:Gem::Requirement
|
@@ -59,25 +79,19 @@ dependencies:
|
|
59
79
|
- !ruby/object:Gem::Version
|
60
80
|
version: '4'
|
61
81
|
- !ruby/object:Gem::Dependency
|
62
|
-
name: mixlib-
|
82
|
+
name: mixlib-shellout
|
63
83
|
requirement: !ruby/object:Gem::Requirement
|
64
84
|
requirements:
|
65
|
-
- - "~>"
|
66
|
-
- !ruby/object:Gem::Version
|
67
|
-
version: '2.1'
|
68
85
|
- - ">="
|
69
86
|
- !ruby/object:Gem::Version
|
70
|
-
version:
|
87
|
+
version: '0'
|
71
88
|
type: :runtime
|
72
89
|
prerelease: false
|
73
90
|
version_requirements: !ruby/object:Gem::Requirement
|
74
91
|
requirements:
|
75
|
-
- - "~>"
|
76
|
-
- !ruby/object:Gem::Version
|
77
|
-
version: '2.1'
|
78
92
|
- - ">="
|
79
93
|
- !ruby/object:Gem::Version
|
80
|
-
version:
|
94
|
+
version: '0'
|
81
95
|
- !ruby/object:Gem::Dependency
|
82
96
|
name: bundler
|
83
97
|
requirement: !ruby/object:Gem::Requirement
|
@@ -99,53 +113,67 @@ dependencies:
|
|
99
113
|
- !ruby/object:Gem::Version
|
100
114
|
version: '3'
|
101
115
|
- !ruby/object:Gem::Dependency
|
102
|
-
name:
|
116
|
+
name: minitest
|
103
117
|
requirement: !ruby/object:Gem::Requirement
|
104
118
|
requirements:
|
105
|
-
- - "
|
106
|
-
- !ruby/object:Gem::Version
|
107
|
-
version: '11.2'
|
108
|
-
- - "<"
|
119
|
+
- - "~>"
|
109
120
|
- !ruby/object:Gem::Version
|
110
|
-
version: '
|
121
|
+
version: '5.9'
|
111
122
|
type: :development
|
112
123
|
prerelease: false
|
113
124
|
version_requirements: !ruby/object:Gem::Requirement
|
114
125
|
requirements:
|
115
|
-
- - "
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: '11.2'
|
118
|
-
- - "<"
|
126
|
+
- - "~>"
|
119
127
|
- !ruby/object:Gem::Version
|
120
|
-
version: '
|
128
|
+
version: '5.9'
|
121
129
|
- !ruby/object:Gem::Dependency
|
122
|
-
name:
|
130
|
+
name: pry
|
123
131
|
requirement: !ruby/object:Gem::Requirement
|
124
132
|
requirements:
|
125
133
|
- - "~>"
|
126
134
|
- !ruby/object:Gem::Version
|
127
|
-
version: '
|
135
|
+
version: '0.10'
|
128
136
|
type: :development
|
129
137
|
prerelease: false
|
130
138
|
version_requirements: !ruby/object:Gem::Requirement
|
131
139
|
requirements:
|
132
140
|
- - "~>"
|
133
141
|
- !ruby/object:Gem::Version
|
134
|
-
version: '
|
142
|
+
version: '0.10'
|
135
143
|
- !ruby/object:Gem::Dependency
|
136
|
-
name:
|
144
|
+
name: rake
|
137
145
|
requirement: !ruby/object:Gem::Requirement
|
138
146
|
requirements:
|
139
|
-
- - "
|
147
|
+
- - ">="
|
140
148
|
- !ruby/object:Gem::Version
|
141
|
-
version: '
|
149
|
+
version: '11.2'
|
150
|
+
- - "<"
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '14'
|
142
153
|
type: :development
|
143
154
|
prerelease: false
|
144
155
|
version_requirements: !ruby/object:Gem::Requirement
|
145
156
|
requirements:
|
146
|
-
- - "
|
157
|
+
- - ">="
|
147
158
|
- !ruby/object:Gem::Version
|
148
|
-
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: 0.49.0
|
170
|
+
type: :development
|
171
|
+
prerelease: false
|
172
|
+
version_requirements: !ruby/object:Gem::Requirement
|
173
|
+
requirements:
|
174
|
+
- - ">="
|
175
|
+
- !ruby/object:Gem::Version
|
176
|
+
version: 0.49.0
|
149
177
|
description: Style checker/lint tool for markdown files
|
150
178
|
email:
|
151
179
|
- mark@mivok.net
|
@@ -191,7 +219,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
191
219
|
version: '0'
|
192
220
|
requirements: []
|
193
221
|
rubyforge_project:
|
194
|
-
rubygems_version: 2.7.
|
222
|
+
rubygems_version: 2.7.8
|
195
223
|
signing_key:
|
196
224
|
specification_version: 4
|
197
225
|
summary: Markdown lint tool
|