pronto-spell 0.6.0 → 0.11.0
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/.github/CODEOWNERS +3 -0
- data/.github/workflows/checks.yml +22 -0
- data/LICENSE +1 -1
- data/README.md +35 -4
- data/lib/pronto/spell.rb +78 -11
- data/lib/pronto/spell/version.rb +3 -1
- data/pronto-spell.gemspec +7 -7
- metadata +15 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 07f54bc81dcc96ab8d9fa447d718925489a274569836eac59e70863774bdcf01
|
4
|
+
data.tar.gz: bc02b4e4e5466fb1c3a129c31e7dfa0b494d462772246d7f3849266c9c192e8d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 46455fa1baafe659fe69c14a9db5a7803af4315e76ab9e340a67fce8f699a8bea215a0ebfae9750a401ce2a716d0a50dfaecdb06353bd35c39b07f126c3345ef
|
7
|
+
data.tar.gz: bfa0787135e7fcb72c54d021bb1d4d2c725f8c5602c9d0f4da8245d64208d22e2b5696dde5291366079163c3734022313a520e48188b38cc4cff5cb02b6f903d
|
data/.github/CODEOWNERS
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
name: Checks
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
branches: [ master ]
|
6
|
+
pull_request:
|
7
|
+
branches: [ master ]
|
8
|
+
|
9
|
+
jobs:
|
10
|
+
ruby:
|
11
|
+
runs-on: ubuntu-latest
|
12
|
+
strategy:
|
13
|
+
matrix:
|
14
|
+
ruby: ['2.3', '2.4', '2.5', '2.6', '2.7', '3.0']
|
15
|
+
steps:
|
16
|
+
- uses: actions/checkout@v2
|
17
|
+
- uses: ruby/setup-ruby@v1
|
18
|
+
with:
|
19
|
+
ruby-version: ${{ matrix.ruby }}
|
20
|
+
bundler-cache: true
|
21
|
+
- name: rake spec
|
22
|
+
run: bundle exec rake spec
|
data/LICENSE
CHANGED
data/README.md
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
# Pronto runner that uses Aspell for spell checking
|
2
2
|
|
3
|
-
[](https://codeclimate.com/github/prontolabs/pronto-spell)
|
4
|
+
[](https://travis-ci.org/prontolabs/pronto-spell)
|
5
5
|
[](http://badge.fury.io/rb/pronto-spell)
|
6
|
-
[](https://gemnasium.com/prontolabs/pronto-spell)
|
7
7
|
|
8
|
-
Pronto runner that uses [Aspell](https://github.com/YorickPeterse/ffi-aspell) for spell checking. [What is Pronto?](https://github.com/
|
8
|
+
Pronto runner that uses [Aspell](https://github.com/YorickPeterse/ffi-aspell) for spell checking. [What is Pronto?](https://github.com/prontolabs/pronto)
|
9
9
|
|
10
10
|
## Prerequisites
|
11
11
|
|
@@ -13,3 +13,34 @@ You'll need to install Aspell:
|
|
13
13
|
|
14
14
|
* Arch Linux: `sudo pacman -S aspell`
|
15
15
|
* OS X: (`brew install aspell --lang=en`)
|
16
|
+
|
17
|
+
## Configuration
|
18
|
+
|
19
|
+
In order to change configuration, you need to create `.pronto_spell.yaml` file in your project root directory. Awailable options are:
|
20
|
+
|
21
|
+
```YAML
|
22
|
+
suggestion_mode: 'fast' # default
|
23
|
+
language: 'en_US' # default
|
24
|
+
min_word_length: 5 # default
|
25
|
+
max_word_length: 999 # default is Infinity
|
26
|
+
max_suggestions_number: 3 # default
|
27
|
+
ignored_words: # words in this list won't be marked as misspelled
|
28
|
+
- aspell
|
29
|
+
- boolean
|
30
|
+
- datetime
|
31
|
+
only_lines_matching: # spell checker will run only if the diff contains a word in this list
|
32
|
+
- context
|
33
|
+
- describe
|
34
|
+
```
|
35
|
+
|
36
|
+
It's also handy to have `.pronto.yml`. Here is configuration, designed for rails project:
|
37
|
+
```YAML
|
38
|
+
spell:
|
39
|
+
exclude:
|
40
|
+
- 'yarn.lock'
|
41
|
+
- 'Gemfile.lock'
|
42
|
+
- 'Gemfile'
|
43
|
+
- 'package.json'
|
44
|
+
- '.*.yml'
|
45
|
+
- '*.json'
|
46
|
+
```
|
data/lib/pronto/spell.rb
CHANGED
@@ -1,22 +1,46 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'pronto'
|
2
4
|
require 'ffi/aspell'
|
3
5
|
|
4
6
|
module Pronto
|
5
7
|
class Spell < Runner
|
8
|
+
CONFIG_FILE = '.pronto_spell.yml'
|
9
|
+
|
10
|
+
def ignored_words
|
11
|
+
@ignored_words ||= begin
|
12
|
+
Set.new(spelling_config['ignored_words'].to_a.map(&:downcase))
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def keywords
|
17
|
+
@keywords ||= begin
|
18
|
+
Set.new(spelling_config['only_lines_matching'].to_a.map(&:downcase))
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
6
22
|
def run
|
7
|
-
return []
|
23
|
+
return [] if !@patches || @patches.count.zero?
|
8
24
|
|
9
|
-
@patches
|
25
|
+
@patches
|
26
|
+
.select { |patch| patch.additions.positive? }
|
10
27
|
.map { |patch| inspect(patch) }
|
11
28
|
.flatten.compact
|
12
29
|
end
|
13
30
|
|
31
|
+
private
|
32
|
+
|
14
33
|
def inspect(patch)
|
15
34
|
patch.added_lines.map do |line|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
35
|
+
if keywords.any? && !keywords_regexp.match(line.content)
|
36
|
+
next
|
37
|
+
end
|
38
|
+
|
39
|
+
words = line.content.scan(/([A-Z]{2,})|([A-Z]{0,1}[a-z]+)/)
|
40
|
+
.flatten.compact.uniq
|
41
|
+
|
42
|
+
words
|
43
|
+
.select { |word| misspelled?(word) }
|
20
44
|
.map { |word| new_message(word, line) }
|
21
45
|
end
|
22
46
|
end
|
@@ -26,17 +50,60 @@ module Pronto
|
|
26
50
|
level = :warning
|
27
51
|
|
28
52
|
suggestions = speller.suggestions(word)
|
29
|
-
|
53
|
+
|
54
|
+
msg = %("#{word}" might not be spelled correctly.)
|
55
|
+
if suggestions.any?
|
56
|
+
suggestions_text = suggestions[0..max_suggestions_number - 1].join(', ')
|
57
|
+
msg += " Spelling suggestions: #{suggestions_text}"
|
58
|
+
end
|
30
59
|
|
31
60
|
Message.new(path, line, level, msg, nil, self.class)
|
32
61
|
end
|
33
62
|
|
34
63
|
def speller
|
35
|
-
@speller ||=
|
36
|
-
|
37
|
-
|
38
|
-
|
64
|
+
@speller ||= FFI::Aspell::Speller.new(
|
65
|
+
language, 'sug-mode': suggestion_mode
|
66
|
+
)
|
67
|
+
end
|
68
|
+
|
69
|
+
def spelling_config
|
70
|
+
@spelling_config ||= begin
|
71
|
+
config_path = File.join(repo_path, CONFIG_FILE)
|
72
|
+
File.exist?(config_path) ? YAML.load_file(config_path) : {}
|
39
73
|
end
|
40
74
|
end
|
75
|
+
|
76
|
+
def keywords_regexp
|
77
|
+
@keywords_regexp ||= %r{#{keywords.to_a.join('|')}}
|
78
|
+
end
|
79
|
+
|
80
|
+
def language
|
81
|
+
spelling_config['language'] || 'en_US'
|
82
|
+
end
|
83
|
+
|
84
|
+
def suggestion_mode
|
85
|
+
spelling_config['suggestion_mode'] || 'fast'
|
86
|
+
end
|
87
|
+
|
88
|
+
def min_word_length
|
89
|
+
spelling_config['min_word_length'] || 5
|
90
|
+
end
|
91
|
+
|
92
|
+
def max_word_length
|
93
|
+
spelling_config['max_word_length'] || Float::INFINITY
|
94
|
+
end
|
95
|
+
|
96
|
+
def max_suggestions_number
|
97
|
+
spelling_config['max_suggestions_number'] || 3
|
98
|
+
end
|
99
|
+
|
100
|
+
def misspelled?(word)
|
101
|
+
lintable_word?(word) && !speller.correct?(word)
|
102
|
+
end
|
103
|
+
|
104
|
+
def lintable_word?(word)
|
105
|
+
(min_word_length..max_word_length).cover?(word.length) &&
|
106
|
+
!ignored_words.include?(word.downcase)
|
107
|
+
end
|
41
108
|
end
|
42
109
|
end
|
data/lib/pronto/spell/version.rb
CHANGED
data/pronto-spell.gemspec
CHANGED
@@ -1,8 +1,8 @@
|
|
1
|
-
#
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
|
-
$LOAD_PATH.
|
4
|
-
require 'English'
|
3
|
+
$LOAD_PATH.unshift File.expand_path('lib', __dir__)
|
5
4
|
require 'pronto/spell/version'
|
5
|
+
require 'English'
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
8
|
s.name = 'pronto-spell'
|
@@ -10,11 +10,11 @@ Gem::Specification.new do |s|
|
|
10
10
|
s.platform = Gem::Platform::RUBY
|
11
11
|
s.author = 'Mindaugas Mozūras'
|
12
12
|
s.email = 'mindaugas.mozuras@gmail.com'
|
13
|
-
s.homepage = '
|
13
|
+
s.homepage = 'https://github.com/mmozuras/pronto-spell'
|
14
14
|
s.summary = 'Pronto runner that uses Aspell for spell checking'
|
15
15
|
|
16
16
|
s.licenses = ['MIT']
|
17
|
-
s.required_ruby_version = '>=
|
17
|
+
s.required_ruby_version = '>= 2.3.0'
|
18
18
|
s.rubygems_version = '1.8.23'
|
19
19
|
|
20
20
|
s.files = `git ls-files`.split($RS).reject do |file|
|
@@ -32,9 +32,9 @@ Gem::Specification.new do |s|
|
|
32
32
|
s.extra_rdoc_files = ['LICENSE', 'README.md']
|
33
33
|
s.require_paths = ['lib']
|
34
34
|
|
35
|
-
s.add_dependency('pronto', '~> 0.6.0')
|
36
35
|
s.add_dependency('ffi-aspell', '~> 1.1.0')
|
37
|
-
s.
|
36
|
+
s.add_dependency('pronto', '~> 0.11.0')
|
37
|
+
s.add_development_dependency('rake', '~> 12.0')
|
38
38
|
s.add_development_dependency('rspec', '~> 3.4')
|
39
39
|
s.add_development_dependency('rspec-its', '~> 1.2')
|
40
40
|
end
|
metadata
CHANGED
@@ -1,57 +1,57 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pronto-spell
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.11.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mindaugas Mozūras
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-02-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: ffi-aspell
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 1.1.0
|
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:
|
26
|
+
version: 1.1.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: pronto
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 0.11.0
|
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:
|
40
|
+
version: 0.11.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rake
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '12.0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '12.0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rspec
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -88,12 +88,14 @@ extra_rdoc_files:
|
|
88
88
|
- LICENSE
|
89
89
|
- README.md
|
90
90
|
files:
|
91
|
+
- ".github/CODEOWNERS"
|
92
|
+
- ".github/workflows/checks.yml"
|
91
93
|
- LICENSE
|
92
94
|
- README.md
|
93
95
|
- lib/pronto/spell.rb
|
94
96
|
- lib/pronto/spell/version.rb
|
95
97
|
- pronto-spell.gemspec
|
96
|
-
homepage:
|
98
|
+
homepage: https://github.com/mmozuras/pronto-spell
|
97
99
|
licenses:
|
98
100
|
- MIT
|
99
101
|
metadata: {}
|
@@ -105,15 +107,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
105
107
|
requirements:
|
106
108
|
- - ">="
|
107
109
|
- !ruby/object:Gem::Version
|
108
|
-
version:
|
110
|
+
version: 2.3.0
|
109
111
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
110
112
|
requirements:
|
111
113
|
- - ">="
|
112
114
|
- !ruby/object:Gem::Version
|
113
115
|
version: '0'
|
114
116
|
requirements: []
|
115
|
-
|
116
|
-
rubygems_version: 2.4.5
|
117
|
+
rubygems_version: 3.0.3
|
117
118
|
signing_key:
|
118
119
|
specification_version: 4
|
119
120
|
summary: Pronto runner that uses Aspell for spell checking
|