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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 67422b4f2942f8a061b0551a4fa837c0c0c93140
4
- data.tar.gz: b56c34d10ecd2bee9dbfa14757ec7853d8a6fe17
2
+ SHA256:
3
+ metadata.gz: 9b5038eb72a4bc473d5e567d4a0f77a699f99f0452ccfe59107e999d2bc6baf4
4
+ data.tar.gz: 5d657cf3c28c6c01c92aa4aa57d85dbf24baf8fef9d946d2c026755b7c114e65
5
5
  SHA512:
6
- metadata.gz: 1e2512ac8231b29ac095fdf2d71b426a82ba9365c6ae4d9cbf52f349f76b12bf7cdfe170b2001b4f0fe7b3fc4239175f59d8cec7f9742880c30d7a0bc8c88cff
7
- data.tar.gz: 432eb94fcf818aba269b8292988956ba905964426e239ae35a9c3972813d6d1b7c19d9a1da2e4146d3f649bfbe13902359ba49fe532458e330e04c6cc4ad89b7
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
 
@@ -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
@@ -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 path
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, files: @files.size, errors: total_errors_colorized)
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 something
131
+ def print(something)
121
132
  $stdout.tty? ? @progress_bar&.log(something) : puts(something)
122
133
  end
123
134
  end
@@ -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.7
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-05-27 00:00:00.000000000 Z
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
- rubyforge_project:
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