spellr 0.3.2 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|