spellr 0.3.2 → 0.4.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 +4 -4
- data/CHANGELOG.md +11 -0
- data/Gemfile.lock +13 -10
- data/bin/fetch_wordlist/english +3 -1
- data/lib/.spellr.yml +12 -9
- data/lib/spellr/backports.rb +19 -0
- data/lib/spellr/check.rb +15 -12
- data/lib/spellr/config.rb +46 -11
- data/lib/spellr/file.rb +7 -8
- data/lib/spellr/file_list.rb +15 -10
- data/lib/spellr/interactive.rb +8 -3
- data/lib/spellr/key_tuner/data.yml +1242 -0
- data/lib/spellr/key_tuner/naive_bayes.rb +162 -0
- data/lib/spellr/key_tuner/possible_key.rb +170 -0
- data/lib/spellr/key_tuner/stats.rb +33 -0
- data/lib/spellr/language.rb +20 -5
- data/lib/spellr/line_tokenizer.rb +115 -84
- data/lib/spellr/string_format.rb +8 -3
- data/lib/spellr/token.rb +14 -10
- data/lib/spellr/tokenizer.rb +1 -2
- data/lib/spellr/version.rb +1 -1
- data/lib/spellr/wordlist.rb +6 -5
- data/lib/spellr.rb +5 -14
- data/spellr.gemspec +3 -2
- metadata +24 -5
data/lib/spellr/token.rb
CHANGED
@@ -5,14 +5,21 @@
|
|
5
5
|
require_relative 'column_location'
|
6
6
|
require_relative 'string_format'
|
7
7
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
return value.normalize if value.is_a?(Spellr::Token)
|
8
|
+
class String
|
9
|
+
def normalize
|
10
|
+
normalize_cache[to_s]
|
11
|
+
end
|
13
12
|
|
14
|
-
|
13
|
+
def normalize_cache
|
14
|
+
@@normalize_cache ||= Hash.new do |cache, term| # rubocop:disable Style/ClassVars # i want this shared with subclasses
|
15
|
+
cache[term] = term.strip.downcase.unicode_normalize.tr('’', "'") + "\n"
|
15
16
|
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
module Spellr
|
21
|
+
class Token < String
|
22
|
+
attr_reader :location, :line, :replacement
|
16
23
|
|
17
24
|
def self.wrap(value)
|
18
25
|
return value if value.is_a?(Spellr::Token)
|
@@ -42,10 +49,6 @@ module Spellr
|
|
42
49
|
)
|
43
50
|
end
|
44
51
|
|
45
|
-
def normalize
|
46
|
-
@normalize ||= self.class.normalize(to_s)
|
47
|
-
end
|
48
|
-
|
49
52
|
def inspect
|
50
53
|
"#<#{self.class.name} #{to_s.inspect} @#{location}>"
|
51
54
|
end
|
@@ -67,6 +70,7 @@ module Spellr
|
|
67
70
|
end
|
68
71
|
|
69
72
|
def replace(replacement)
|
73
|
+
@replacement = replacement
|
70
74
|
::File.open(file_name, 'r+') do |f|
|
71
75
|
body = f.read
|
72
76
|
body[location.absolute_char_offset...(location.absolute_char_offset + length)] = replacement
|
data/lib/spellr/tokenizer.rb
CHANGED
@@ -51,7 +51,7 @@ module Spellr
|
|
51
51
|
end
|
52
52
|
|
53
53
|
def normalized_terms
|
54
|
-
enum_for(:each_term).map
|
54
|
+
enum_for(:each_term).map(&:normalize).uniq.sort
|
55
55
|
end
|
56
56
|
|
57
57
|
private
|
@@ -65,7 +65,6 @@ module Spellr
|
|
65
65
|
def prepare_tokenizer_for_line(line, _line_number)
|
66
66
|
line_tokenizer.string = line
|
67
67
|
line_tokenizer.pos = 0
|
68
|
-
# line_tokenizer.pos = @start_at.byte_offset if line_number == @start_at.line_number
|
69
68
|
line_tokenizer
|
70
69
|
end
|
71
70
|
end
|
data/lib/spellr/version.rb
CHANGED
data/lib/spellr/wordlist.rb
CHANGED
@@ -6,8 +6,6 @@ require_relative 'token'
|
|
6
6
|
|
7
7
|
module Spellr
|
8
8
|
class Wordlist
|
9
|
-
class NotFound < Spellr::Error; end
|
10
|
-
|
11
9
|
include Enumerable
|
12
10
|
|
13
11
|
attr_reader :path, :name
|
@@ -31,7 +29,7 @@ module Spellr
|
|
31
29
|
# significantly faster than default Enumerable#include?
|
32
30
|
# requires terms to be sorted
|
33
31
|
def include?(term)
|
34
|
-
include_cache[
|
32
|
+
include_cache[term.normalize]
|
35
33
|
end
|
36
34
|
|
37
35
|
def include_cache
|
@@ -69,12 +67,14 @@ module Spellr
|
|
69
67
|
end
|
70
68
|
|
71
69
|
def exist?
|
72
|
-
@
|
70
|
+
return @exist if defined?(@exist)
|
71
|
+
|
72
|
+
@exist = @path.exist?
|
73
73
|
end
|
74
74
|
|
75
75
|
def add(term)
|
76
76
|
touch
|
77
|
-
term =
|
77
|
+
term = term.normalize
|
78
78
|
include_cache[term] = true
|
79
79
|
to_a << term
|
80
80
|
to_a.sort!
|
@@ -89,6 +89,7 @@ module Spellr
|
|
89
89
|
|
90
90
|
@path.dirname.mkpath
|
91
91
|
@path.write('')
|
92
|
+
remove_instance_variable(:@exist)
|
92
93
|
end
|
93
94
|
|
94
95
|
def raise_unless_exists?
|
data/lib/spellr.rb
CHANGED
@@ -1,26 +1,17 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require_relative 'spellr/backports'
|
4
|
+
require_relative 'spellr/config'
|
5
|
+
|
3
6
|
module Spellr
|
4
7
|
class Error < StandardError; end
|
5
|
-
class
|
6
|
-
|
7
|
-
|
8
|
-
def initialize(token = nil)
|
9
|
-
@token = token
|
10
|
-
end
|
11
|
-
end
|
12
|
-
class DidAdd < Spellr::Error
|
13
|
-
attr_reader :token
|
14
|
-
|
15
|
-
def initialize(token = nil)
|
16
|
-
@token = token
|
17
|
-
end
|
8
|
+
class Wordlist
|
9
|
+
class NotFound < Spellr::Error; end
|
18
10
|
end
|
19
11
|
|
20
12
|
module_function
|
21
13
|
|
22
14
|
def config
|
23
|
-
require_relative 'spellr/config'
|
24
15
|
@config ||= Spellr::Config.new
|
25
16
|
end
|
26
17
|
end
|
data/spellr.gemspec
CHANGED
@@ -14,7 +14,7 @@ Gem::Specification.new do |spec|
|
|
14
14
|
spec.homepage = 'http://github.com/robotdana/spellr'
|
15
15
|
spec.license = 'MIT'
|
16
16
|
|
17
|
-
spec.files = Dir.glob(
|
17
|
+
spec.files = Dir.glob('{lib,exe,bin/fetch_wordlist,wordlists}/**/{*,.*}') + %w{
|
18
18
|
CHANGELOG.md
|
19
19
|
Gemfile
|
20
20
|
Gemfile.lock
|
@@ -33,6 +33,7 @@ Gem::Specification.new do |spec|
|
|
33
33
|
spec.add_development_dependency 'rspec-eventually'
|
34
34
|
spec.add_development_dependency 'rubocop'
|
35
35
|
spec.add_development_dependency 'rubocop-rspec'
|
36
|
+
spec.add_development_dependency 'terminal-table'
|
36
37
|
spec.add_development_dependency 'tty_string'
|
37
|
-
spec.add_dependency 'fast_ignore'
|
38
|
+
spec.add_dependency 'fast_ignore', '~> 0.4.0'
|
38
39
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spellr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dana Sherson
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-10-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -109,7 +109,7 @@ dependencies:
|
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
112
|
+
name: terminal-table
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
115
|
- - ">="
|
@@ -123,19 +123,33 @@ dependencies:
|
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: '0'
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
|
-
name:
|
126
|
+
name: tty_string
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
129
|
- - ">="
|
130
130
|
- !ruby/object:Gem::Version
|
131
131
|
version: '0'
|
132
|
-
type: :
|
132
|
+
type: :development
|
133
133
|
prerelease: false
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
136
|
- - ">="
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: fast_ignore
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - "~>"
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: 0.4.0
|
146
|
+
type: :runtime
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - "~>"
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: 0.4.0
|
139
153
|
description:
|
140
154
|
email:
|
141
155
|
- robot@dana.sh
|
@@ -154,6 +168,7 @@ files:
|
|
154
168
|
- exe/spellr
|
155
169
|
- lib/.spellr.yml
|
156
170
|
- lib/spellr.rb
|
171
|
+
- lib/spellr/backports.rb
|
157
172
|
- lib/spellr/check.rb
|
158
173
|
- lib/spellr/cli.rb
|
159
174
|
- lib/spellr/column_location.rb
|
@@ -162,6 +177,10 @@ files:
|
|
162
177
|
- lib/spellr/file.rb
|
163
178
|
- lib/spellr/file_list.rb
|
164
179
|
- lib/spellr/interactive.rb
|
180
|
+
- lib/spellr/key_tuner/data.yml
|
181
|
+
- lib/spellr/key_tuner/naive_bayes.rb
|
182
|
+
- lib/spellr/key_tuner/possible_key.rb
|
183
|
+
- lib/spellr/key_tuner/stats.rb
|
165
184
|
- lib/spellr/language.rb
|
166
185
|
- lib/spellr/line_location.rb
|
167
186
|
- lib/spellr/line_tokenizer.rb
|