spellr 0.3.2 → 0.4.0

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