forspell 0.0.7 → 0.0.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/README.md +4 -1
- data/lib/forspell/cli.rb +5 -9
- data/lib/forspell/reporter.rb +15 -4
- data/lib/forspell/speller.rb +2 -2
- metadata +3 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 9b5038eb72a4bc473d5e567d4a0f77a699f99f0452ccfe59107e999d2bc6baf4
|
4
|
+
data.tar.gz: 5d657cf3c28c6c01c92aa4aa57d85dbf24baf8fef9d946d2c026755b7c114e65
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5d36717ed7a398c0d48d417177be3b16f7100aa94b803e4125fc78c0d757f7e06c0df91cb2207f38d93ad280e11e52928ea7874ffaec7ede6310089ba8b13a69
|
7
|
+
data.tar.gz: 88370117516966529328dcde00931879523a58876204a4450d65e12144080ab328c806cde043c8fae7182156979da9018487f5146f7778f0203426278625c533
|
data/README.md
CHANGED
@@ -44,7 +44,10 @@ Options:
|
|
44
44
|
--help
|
45
45
|
```
|
46
46
|
|
47
|
-
forspell automatically loads command-line arguments from `.forspell` file in current folder, if it is present.
|
47
|
+
`forspell` automatically loads command-line arguments from `.forspell` file in current folder, if it is present.
|
48
|
+
Arguments for `forspell` command are directories or separate files you want to check.
|
49
|
+
If no arguments provided, current directory will be processed.
|
50
|
+
Supported file extensions are `.rb`, `.c`, `.cpp`, `.md`.
|
48
51
|
|
49
52
|
### Dictionaries
|
50
53
|
|
data/lib/forspell/cli.rb
CHANGED
@@ -38,9 +38,9 @@ module Forspell
|
|
38
38
|
|
39
39
|
def call
|
40
40
|
init_options
|
41
|
+
init_reporter
|
41
42
|
create_files_list
|
42
43
|
init_speller
|
43
|
-
init_reporter
|
44
44
|
run
|
45
45
|
end
|
46
46
|
|
@@ -48,6 +48,9 @@ module Forspell
|
|
48
48
|
|
49
49
|
def create_files_list
|
50
50
|
@files = FileList.new(paths: @opts.arguments, exclude_paths: @opts[:exclude_paths])
|
51
|
+
rescue Forspell::FileList::PathLoadError => path
|
52
|
+
@reporter.path_load_error path
|
53
|
+
exit ERROR_CODE
|
51
54
|
end
|
52
55
|
|
53
56
|
def init_options
|
@@ -55,11 +58,7 @@ module Forspell
|
|
55
58
|
|
56
59
|
@opts = Slop.parse(@options, &DEFINITIONS)
|
57
60
|
|
58
|
-
if @opts.arguments.empty?
|
59
|
-
puts 'Usage: forspell paths to check [options]'
|
60
|
-
puts 'Type --help for more info'
|
61
|
-
exit(ERROR_CODE)
|
62
|
-
end
|
61
|
+
@opts.arguments << '.' if @opts.arguments.empty?
|
63
62
|
|
64
63
|
@opts[:format] = 'dictionary' if @opts[:gen_dictionary]
|
65
64
|
@opts[:format] = @opts[:format]&.downcase
|
@@ -88,9 +87,6 @@ module Forspell
|
|
88
87
|
runner = Forspell::Runner.new(files: @files, speller: @speller, reporter: @reporter)
|
89
88
|
runner.call
|
90
89
|
exit @reporter.finalize
|
91
|
-
rescue Forspell::FileList::PathLoadError => path
|
92
|
-
@reporter.path_load_error path
|
93
|
-
exit ERROR_CODE
|
94
90
|
end
|
95
91
|
end
|
96
92
|
end
|
data/lib/forspell/reporter.rb
CHANGED
@@ -13,10 +13,16 @@ module Forspell
|
|
13
13
|
ERROR_CODE = 1
|
14
14
|
DICT_PATH = File.join(Dir.pwd, 'forspell.dict')
|
15
15
|
DICT_OVERWRITE = 'Do you want to overwrite forspell.dict? (yN)'
|
16
|
+
DICT_PROMPT = <<~PROMPT
|
17
|
+
# Format: one word per line. Empty lines and #-comments are supported too.
|
18
|
+
# If you want to add word with its forms, you can write 'word: example' (without quotes) on the line,
|
19
|
+
# where 'example' is existing word with the same possible forms (endings) as your word.
|
20
|
+
# Example: deduplicate: duplicate
|
21
|
+
PROMPT
|
16
22
|
SUGGEST_FORMAT = '(suggestions: %<suggestions>s)'
|
17
23
|
ERROR_FORMAT = '%<file>s:%<line>i: %<text>s %<suggest>s'
|
18
24
|
SUMMARY = "Forspell inspects *.rb, *.c, *.cpp, *.md files\n"\
|
19
|
-
'%<files>i inspected, %<errors>s detected'
|
25
|
+
'%<files>i file%<files_plural>s inspected, %<errors>s error%<errors_plural>s detected'
|
20
26
|
|
21
27
|
attr_accessor :progress_bar
|
22
28
|
|
@@ -51,7 +57,7 @@ module Forspell
|
|
51
57
|
@logger.error "Parsing error in #{@files.last}: #{error}"
|
52
58
|
end
|
53
59
|
|
54
|
-
def path_load_error
|
60
|
+
def path_load_error(path)
|
55
61
|
@logger.error "Path not found: #{path}"
|
56
62
|
end
|
57
63
|
|
@@ -93,7 +99,11 @@ module Forspell
|
|
93
99
|
color = err_count.positive? ? :red : :green
|
94
100
|
total_errors_colorized = @pastel.decorate(err_count.to_s, color)
|
95
101
|
|
96
|
-
print format(SUMMARY,
|
102
|
+
print format(SUMMARY,
|
103
|
+
files: @files.size,
|
104
|
+
errors: total_errors_colorized,
|
105
|
+
files_plural: @files.size == 1 ? '' : 's',
|
106
|
+
errors_plural: err_count == 1 ? '' : 's')
|
97
107
|
end
|
98
108
|
|
99
109
|
def print_dictionary
|
@@ -105,6 +115,7 @@ module Forspell
|
|
105
115
|
else
|
106
116
|
out = File.new(DICT_PATH, 'w')
|
107
117
|
end
|
118
|
+
out.puts DICT_PROMPT unless out.tty?
|
108
119
|
@errors.map(&:first)
|
109
120
|
.group_by(&:text)
|
110
121
|
.transform_values { |v| v.map(&:file).uniq }
|
@@ -117,7 +128,7 @@ module Forspell
|
|
117
128
|
|
118
129
|
private
|
119
130
|
|
120
|
-
def print
|
131
|
+
def print(something)
|
121
132
|
$stdout.tty? ? @progress_bar&.log(something) : puts(something)
|
122
133
|
end
|
123
134
|
end
|
data/lib/forspell/speller.rb
CHANGED
@@ -37,12 +37,12 @@ module Forspell
|
|
37
37
|
|
38
38
|
alterations.any?{ |w| dictionary.check?(w) }
|
39
39
|
else
|
40
|
-
parts.all? { |part| correct?(part) }
|
40
|
+
dictionary.check?(word) || parts.all? { |part| correct?(part) }
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
44
44
|
def suggest(word)
|
45
|
-
@suggestions_size.positive? ? dictionary.suggest(word).first(@suggestions_size) : []
|
45
|
+
@suggestions_size.positive? ? dictionary.suggest(word).first(@suggestions_size) - [word, word.capitalize] : []
|
46
46
|
end
|
47
47
|
end
|
48
48
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: forspell
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kirill Kuprikov
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date: 2019-
|
12
|
+
date: 2019-06-14 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: slop
|
@@ -257,8 +257,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
257
257
|
- !ruby/object:Gem::Version
|
258
258
|
version: '0'
|
259
259
|
requirements: []
|
260
|
-
|
261
|
-
rubygems_version: 2.6.14
|
260
|
+
rubygems_version: 3.0.1
|
262
261
|
signing_key:
|
263
262
|
specification_version: 4
|
264
263
|
summary: For spelling check
|