goodcheck 1.5.0 → 1.5.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 +5 -5
- data/.travis.yml +2 -2
- data/CHANGELOG.md +5 -0
- data/README.md +1 -1
- data/lib/goodcheck/analyzer.rb +11 -22
- data/lib/goodcheck/config_loader.rb +2 -33
- data/lib/goodcheck/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 95c2a7244c21b8436b9b3069df313871905d2544
|
4
|
+
data.tar.gz: e2137ec229279936f5abed87dabff5a8dcd083ad
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 77025fef5bebc19bf8638f3aee6f9777e4bc6cfbb1b41ab0dd0e04b60190c33947d0b6a06ed053e136e80573bb05f71c240e0d036699544c53ab65e323fa5b7e
|
7
|
+
data.tar.gz: 93d155f4a8cbd50ec80412713c80ec7093a00de0635cad25db8451a37970ab20609ffc0b14d851e523d8a7a6480d30f71628873fd152c7968738ed4fc3c75473
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -22,7 +22,7 @@ $ gem install goodcheck
|
|
22
22
|
|
23
23
|
Or you can use `bundler`!
|
24
24
|
|
25
|
-
If you would not like to install Goodcheck to system (e.g. you would not like to install Ruby 2.4 or higher), you can use a docker image. [See below](#docker-
|
25
|
+
If you would not like to install Goodcheck to system (e.g. you would not like to install Ruby 2.4 or higher), you can use a docker image. [See below](#docker-images).
|
26
26
|
|
27
27
|
## Quickstart
|
28
28
|
|
data/lib/goodcheck/analyzer.rb
CHANGED
@@ -12,34 +12,23 @@ module Goodcheck
|
|
12
12
|
if block_given?
|
13
13
|
issues = []
|
14
14
|
|
15
|
-
rule.patterns.
|
16
|
-
|
15
|
+
regexp = Regexp.union(*rule.patterns.map(&:regexp))
|
16
|
+
scanner = StringScanner.new(buffer.content)
|
17
17
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
text = scanner.matched
|
27
|
-
range = (scanner.pos - text.bytesize) .. scanner.pos
|
28
|
-
unless issues.any? {|issue| issue.range == range }
|
29
|
-
issues << Issue.new(buffer: buffer, range: range, rule: rule, text: text)
|
30
|
-
end
|
31
|
-
when scanner.scan(/.\b/m)
|
32
|
-
after_break = true
|
33
|
-
else
|
34
|
-
scanner.scan(/./m)
|
35
|
-
after_break = false
|
36
|
-
end
|
18
|
+
while true
|
19
|
+
case
|
20
|
+
when scanner.scan_until(regexp)
|
21
|
+
text = scanner.matched
|
22
|
+
range = (scanner.pos - text.bytesize) .. scanner.pos
|
23
|
+
issues << Issue.new(buffer: buffer, range: range, rule: rule, text: text)
|
24
|
+
else
|
25
|
+
break
|
37
26
|
end
|
38
27
|
end
|
39
28
|
|
40
29
|
issues.each(&block)
|
41
30
|
else
|
42
|
-
enum_for(:scan
|
31
|
+
enum_for(:scan)
|
43
32
|
end
|
44
33
|
end
|
45
34
|
end
|
@@ -109,41 +109,10 @@ module Goodcheck
|
|
109
109
|
Rule.new(id: id, patterns: patterns, justifications: justifications, globs: globs, message: message, passes: passes, fails: fails)
|
110
110
|
end
|
111
111
|
|
112
|
-
def combine_literal_patterns(patterns, case_sensitive:)
|
113
|
-
return nil if patterns.empty?
|
114
|
-
literals = patterns.map do |pat|
|
115
|
-
str = pat.is_a?(String) ? pat : pat[:literal].to_s
|
116
|
-
Regexp.escape(str)
|
117
|
-
end
|
118
|
-
Pattern.regexp(literals.join('|'),
|
119
|
-
case_sensitive: case_sensitive,
|
120
|
-
multiline: false)
|
121
|
-
end
|
122
|
-
|
123
|
-
def literal_pattern?(pattern)
|
124
|
-
pattern.is_a?(String) || pattern[:literal]
|
125
|
-
end
|
126
|
-
|
127
|
-
def select_literal_pattern(patterns, case_sensitive:)
|
128
|
-
patterns.select do |pat|
|
129
|
-
if case_sensitive
|
130
|
-
literal_pattern?(pat) && case_sensitive?(pat)
|
131
|
-
else
|
132
|
-
literal_pattern?(pat) && !case_sensitive?(pat)
|
133
|
-
end
|
134
|
-
end
|
135
|
-
end
|
136
|
-
|
137
112
|
def retrieve_patterns(hash)
|
138
|
-
|
139
|
-
|
140
|
-
patterns = non_literal.map { |pat| load_pattern(pat) }
|
141
|
-
[true, false].each do |boolean|
|
142
|
-
literal = select_literal_pattern(pat_array, case_sensitive: boolean)
|
143
|
-
comb_pat = combine_literal_patterns(literal, case_sensitive: boolean)
|
144
|
-
patterns << comb_pat if comb_pat
|
113
|
+
array(hash[:pattern]).map do |pat|
|
114
|
+
load_pattern(pat)
|
145
115
|
end
|
146
|
-
patterns
|
147
116
|
end
|
148
117
|
|
149
118
|
def load_globs(globs)
|
data/lib/goodcheck/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: goodcheck
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.5.
|
4
|
+
version: 1.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Soutaro Matsumoto
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-05-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -182,7 +182,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
182
182
|
version: '0'
|
183
183
|
requirements: []
|
184
184
|
rubyforge_project:
|
185
|
-
rubygems_version: 2.
|
185
|
+
rubygems_version: 2.6.14.1
|
186
186
|
signing_key:
|
187
187
|
specification_version: 4
|
188
188
|
summary: Regexp based customizable linter
|