clausewitz-spelling 0.2.10 → 0.2.11

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9c25755ce321d90c2c3af77bc897c1ab95dedf2285f5884b91dee41d9b925ef1
4
- data.tar.gz: 99965fa7fc61ab2d6519edea3902e4e2231c2ed186acbd45476aa889caba24ff
3
+ metadata.gz: be3b69f409c5de0e788d8441bf149e1e98fb9e58dc1f884e1ddbdb677bc908b5
4
+ data.tar.gz: 69a997539a46e3433cdc3285c7cfc1f8902f54aff614c7c16140f561ecec5e65
5
5
  SHA512:
6
- metadata.gz: 7eb916e06c5a9a68768cbc8e7a0ee5e92a014003a7e01af1756aff8caf9ead44c334399d30912ec10b66cf817deeb18e9613819c7dfe9ff91c7eb727b088592f
7
- data.tar.gz: d2e71d714c163a21520419719f76c05655d7e7b6e137608053047832f6e31b2d553b782a2d30a01f3e80132c9772a341c423e4cfb6d5072bef4ee2e9e5305184
6
+ metadata.gz: 6e51f6da75ce51c4178c043613c4463d892c5f0f1d5335024ca532c598b56f423034d38a73c419c31498362607854ebab941788e1e39f9c9fafc9be13b58a655
7
+ data.tar.gz: b605f890e6263b5b2ec8f145a935d5a88682252c332ba0704c93ffa7ef537aff0d392741d850d716e402dc435055ee62f5f48b3c05c51bc6d3746e1e7479cbd6
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- clausewitz-spelling (0.2.10)
4
+ clausewitz-spelling (0.2.11)
5
5
  colorize
6
6
  damerau-levenshtein
7
7
  ffi-hunspell-wtchappell
@@ -21,6 +21,9 @@ class Main
21
21
  opt :verbose,
22
22
  "Whether to display additional output while running",
23
23
  default: false
24
+ opt :commit_range,
25
+ "Range of commits for limiting check to only changed lines",
26
+ type: :string
24
27
  Clausewitz::Localisation::LANG_MAP.each do |_, config|
25
28
  opt "#{config.name}_dialect".to_sym,
26
29
  "Select dialect for #{config.name.capitalize}",
@@ -43,6 +46,7 @@ class Main
43
46
  checker_opts[:dialect_map] = dialect_map
44
47
  checker_opts[:suggestion_count] = opts[:suggestion_count]
45
48
  checker_opts[:verbose] = opts[:verbose]
49
+ checker_opts[:commit_range] = opts[:commit_range]
46
50
 
47
51
  [checker_opts, args]
48
52
  end
@@ -20,6 +20,7 @@ module Clausewitz; module Spelling
20
20
  @dialect_map = opts[:dialect_map] || {}
21
21
  @suggestion_count = opts[:suggestion_count] || DEFAULT_SUGGESTION_COUNT
22
22
  @verbose = opts[:verbose]
23
+ @commit_range = opts[:commit_range]
23
24
 
24
25
  @check_cache = {}
25
26
 
@@ -69,25 +70,43 @@ module Clausewitz; module Spelling
69
70
  return UnparseableFileResult.new(filepath, e)
70
71
  end
71
72
 
73
+ changed_keys = Set.new
74
+ if @commit_range
75
+ diff = `git diff -U0 #{@commit_range} #{filepath} 2>/dev/null`
76
+ changed_lines = diff.lines.select { |line| line =~ /^\+ / }
77
+ changed_lines.each do |line|
78
+ match = /\+ ([\w\d.'_-]+):([0-9]+)? \"/.match(line)
79
+ changed_keys.add(match[1]) if match
80
+ end
81
+ end
82
+
72
83
  checks = contents.map do |lang_name, entries|
73
84
  lc = language_config(lang_name)
74
- check_entries(entries, lc)
85
+ ignore = []
86
+ if @commit_range
87
+ ignore = entries.keys.select do |key|
88
+ !changed_keys.include?(key)
89
+ end
90
+ end
91
+ check_entries(entries, lc, ignore)
75
92
  end
76
93
  FileResults.new(filepath, checks)
77
94
  end
78
95
 
79
96
  private
80
97
 
81
- def check_entries(entries, lc)
98
+ def check_entries(entries, lc, ignore = [])
82
99
  spellcheck_ignore = entries&.delete('spellcheck_ignore')
83
100
  ignored_keys = spellcheck_ignore ? spellcheck_ignore.split(',') : []
84
101
  ignored_keys << 'spellcheck_ignore'
102
+ ignored_keys.concat(ignore)
85
103
  if ignored_keys.include?('all')
86
104
  return IgnoredLangResult.new(lc.clausewitz_name)
87
105
  end
88
106
  return LangResults.new(lc.clausewitz_name, []) unless entries
89
107
  checks = entries.map do |key, entry|
90
108
  if ignored_keys.include?(key)
109
+ puts "SKIPPING #{key}"
91
110
  IgnoredEntryResult.new(key)
92
111
  else
93
112
  check_entry(key, entry, lc)
@@ -11,6 +11,10 @@ module Clausewitz; module Spelling
11
11
  @lang_results.all?(&:ignored?)
12
12
  end
13
13
 
14
+ def ignored
15
+ @lang_results.select(&:ignored?)
16
+ end
17
+
14
18
  def failed?
15
19
  @lang_results.any?(&:failed?)
16
20
  end
@@ -19,8 +23,12 @@ module Clausewitz; module Spelling
19
23
  @lang_results.select(&:failed?)
20
24
  end
21
25
 
26
+ def ignored_total
27
+ @lang_results.reduce(0) { |memo, obj| memo += obj.ignored.size }
28
+ end
29
+
22
30
  def failure_total
23
- failures.reduce(0) { |memo, obj| memo += obj.failures.size }
31
+ @lang_results.reduce(0) { |memo, obj| memo += obj.failures.size }
24
32
  end
25
33
 
26
34
  def size
@@ -28,7 +36,7 @@ module Clausewitz; module Spelling
28
36
  end
29
37
 
30
38
  def to_s
31
- outfile = failed? ? "#{@filepath} has #{failure_total} errors (#{size} total keys checked)".red : "#{@filepath} passed (#{size} total keys checked)".green
39
+ outfile = failed? ? "#{@filepath} has #{failure_total} errors (#{size} total keys checked, #{ignored_total} keys ignored)".red : "#{@filepath} passed (#{size} total keys checked, #{ignored_total} keys ignored)".green
32
40
  outfile = ignored? ? "#{@filepath} ignored".yellow : outfile
33
41
  interesting = @lang_results.select { |l| l.failed? || l.ignored? }
34
42
  "#{outfile}\n" + failures.map { |l| " #{l}" }.join("\n")
@@ -45,6 +53,10 @@ module Clausewitz; module Spelling
45
53
  false
46
54
  end
47
55
 
56
+ def ignored
57
+ @entry_results.select(&:ignored?)
58
+ end
59
+
48
60
  def failed?
49
61
  @entry_results.any?(&:failed?)
50
62
  end
@@ -67,7 +79,7 @@ module Clausewitz; module Spelling
67
79
  failures = @entry_results.select(&:failed?)
68
80
  outlines = failures.map { |e| "#{spacer}#{e.to_str(indent + 2)}" }
69
81
  outlines = outlines.join("\n")
70
- outlang = failed? ? "#{@lang} has #{failures.size} keys with errors".red : "#{@lang} passed (#{size} keys checked)".green
82
+ outlang = failed? ? "#{@lang} has #{failures.size} keys with errors (#{size} keys checked, #{ignored.size} ignored)".red : "#{@lang} passed (#{size} keys checked, #{ignored.size} ignored)".green
71
83
  out = "#{firstspacer}#{outlang}\n#{outlines}"
72
84
  end
73
85
  end
@@ -81,6 +93,10 @@ module Clausewitz; module Spelling
81
93
  true
82
94
  end
83
95
 
96
+ def ignored
97
+ []
98
+ end
99
+
84
100
  def failed?
85
101
  false
86
102
  end
@@ -109,6 +125,10 @@ module Clausewitz; module Spelling
109
125
  @word_results = word_results
110
126
  end
111
127
 
128
+ def ignored?
129
+ false
130
+ end
131
+
112
132
  def failed?
113
133
  !@word_results.empty?
114
134
  end
@@ -134,6 +154,10 @@ module Clausewitz; module Spelling
134
154
  @key = key
135
155
  end
136
156
 
157
+ def ignored?
158
+ false
159
+ end
160
+
137
161
  def failed?
138
162
  true
139
163
  end
@@ -153,6 +177,10 @@ module Clausewitz; module Spelling
153
177
  @key = key
154
178
  end
155
179
 
180
+ def ignored?
181
+ true
182
+ end
183
+
156
184
  def failed?
157
185
  false
158
186
  end
@@ -1,5 +1,5 @@
1
1
  module Clausewitz
2
2
  module Spelling
3
- VERSION = "0.2.10"
3
+ VERSION = "0.2.11"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: clausewitz-spelling
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.10
4
+ version: 0.2.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Will Chappell
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-06-23 00:00:00.000000000 Z
11
+ date: 2019-09-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler