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.
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
- module Spellr
9
- class Token < String
10
- attr_reader :location, :line
11
- def self.normalize(value)
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
- value.strip.downcase.unicode_normalize.tr('’', "'") + "\n"
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
@@ -51,7 +51,7 @@ module Spellr
51
51
  end
52
52
 
53
53
  def normalized_terms
54
- enum_for(:each_term).map { |t| Token.normalize(t) }.uniq.sort
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Spellr
4
- VERSION = '0.3.2'
4
+ VERSION = '0.4.0'
5
5
  end
@@ -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[Spellr::Token.normalize(term)]
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
- @path.exist?
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 = Spellr::Token.normalize(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 DidReplacement < Spellr::Error
6
- attr_reader :token
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("{lib,exe,bin/fetch_wordlist,wordlists}/**/{*,.*}") + %w{
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.3.2
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-09-24 00:00:00.000000000 Z
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: tty_string
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: fast_ignore
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: :runtime
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