spellr 0.8.4 → 0.9.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 52262546809e049a6c04f71c067d895e2cd83b865bc1371a4c9c489ca8b8b5b7
4
- data.tar.gz: c75f1e3037419fb9e917cac1d808fa3f32a882f0c76bb2a871ddca8ac8b33ea3
3
+ metadata.gz: 60659d04d7461c60fc7880fe44fa4af1d6b852511affaef3722d8bca7902bebe
4
+ data.tar.gz: 6327cb52ae02517918e886b774311f09270dc1e96166361962c49f9f01f28506
5
5
  SHA512:
6
- metadata.gz: 12771b2588b7b8e2bfdfadec6c78cf4dd5f90000730451f8f8f7f066de77aba171a6227fa9c3a0ea914fb3dd7f33cd975b9dcfb2d73d0fb11a03898e460ed489
7
- data.tar.gz: bfa05561e73da2b21fe6d2e7a138c8dfae8eda29dcadb83dd5c10e31b5d7b525b18161f8f9cd944b1d58ae1b46022ca2a4e4d05c7efad68d3363540714ca6b16
6
+ metadata.gz: 1aadb5c07c9ce3fa8899be299810480034d1bfed1e93aa9fe0e07192edb9cac21e8c505908da7757badb0190da5d0251c47cf135306aa60cde8abbee2a4e3db8
7
+ data.tar.gz: 7fc321f6665f93c4093a46748781eb59ce56930c334298670e5592d63887e97092bc2ab49394ab08f143d8a84a213e4df76a149b6f97065b51f78feebc56e91c
data/CHANGELOG.md CHANGED
@@ -1,3 +1,19 @@
1
+ # v0.9.0
2
+ - Recognize url with _ in query string and zero length path
3
+ - Assume all files are utf8
4
+
5
+ # v0.8.8
6
+ - output a suggested `spellr --interactive` command with filenames, when running this without --interactive
7
+
8
+ # v0.8.7
9
+ - Recognize URL with tilde in path
10
+
11
+ # v0.8.6
12
+ - `--suppress--file-rules` so you can check files that would usually be ignored
13
+
14
+ # v0.8.5
15
+ - Single line disable! use `spellr:disable-line` #25
16
+
1
17
  # v0.8.4
2
18
  - Update fast_ignore dependency, it's faster now (about 0.5s faster on rails codebase)
3
19
 
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # Spellr
2
2
 
3
+ [![Build Status](https://travis-ci.com/robotdana/spellr.svg?branch=main)](https://travis-ci.com/robotdana/spellr)
3
4
  [![Gem Version](https://badge.fury.io/rb/spellr.svg)](https://rubygems.org/gems/spellr)
4
- [![Build Status](https://travis-ci.org/robotdana/spellr.svg?branch=master)](https://travis-ci.org/robotdana/spellr)
5
5
 
6
6
  Spell check your source code for fun and occasionally finding bugs
7
7
 
@@ -27,6 +27,8 @@ However, in a programming context spelling things _consistently_ is useful, wher
27
27
 
28
28
  ## Installation
29
29
 
30
+ This is tested against ruby 2.4-3.0.
31
+
30
32
  ### With Bundler
31
33
 
32
34
  Add this line to your application's `Gemfile`:
@@ -175,20 +177,27 @@ Type `e` to add this word to the english wordlist and continue on through the sp
175
177
 
176
178
  ### Disabling the tokenizer
177
179
 
178
- If the tokenizer finds a word you don't want to add to the wordlist (perhaps it's an intentional example of a typo, or a non-word string not excluded by the heuristic) then place on the lines before and after
180
+ If the tokenizer finds a word you don't want to add to the wordlist (perhaps it's an intentional example of a typo, or a non-word string not excluded by the heuristic) then add any kind of comment containing `spellr:disable-line` to the line.
181
+ ```ruby
182
+ open('mispeled_filename.txt') # spellr:disable-line
183
+ ```
184
+
185
+ You can also disable multiple lines, by surrounding the offending code with `spellr:disable` and `spellr:enable`
179
186
  ```ruby
180
187
  # spellr:disable
181
- "Test typo of the: teh"
188
+ it "Test typo of the: teh" do
189
+ fill_in(field, with: "teh")
190
+ end
182
191
  # spellr:enable
183
192
  ```
184
193
 
185
- This works with any kind of comment, even in the same line
194
+ If your language supports inline comments you can also surround with `spellr:disable` and `spellr:enable` in the same line:
186
195
  ```html
187
196
  <span><!-- spellr:disable -->nonsenseword<!-- spellr:enable --></span>
188
197
  ```
189
198
  ## Configuration
190
199
 
191
- Spellr's configuration is a `.spellr.yml` file in your project root. This is combined with the gem defaults defined [here](https://github.com/robotdana/spellr/blob/master/lib/.spellr.yml).
200
+ Spellr's configuration is a `.spellr.yml` file in your project root. This is combined with the gem defaults defined [here](https://github.com/robotdana/spellr/blob/main/lib/.spellr.yml).
192
201
  There are top-level keys and per-language keys.
193
202
  ```yml
194
203
  word_minimum_length: 3 # any words shorter than this will be ignored
@@ -297,6 +306,18 @@ Spellr::RakeTask.generate_task(:spellr, **spellr_arguments)
297
306
  task default: :spellr
298
307
  ```
299
308
 
309
+ ## Ignoring the configured patterns
310
+
311
+ Sometimes you'll want to spell check something that would usually be ignored,
312
+ e.g. `.git/COMMIT_EDITMSG` even though `spellr` ignores the `.git` directory.
313
+
314
+ For this you can use the `--suppress-file-rules` command line argument.
315
+ ```bash
316
+ $ spellr --suppress-file-rules .git/COMMIT_EDITMSG
317
+ ```
318
+
319
+ **Note: This still ignores files outside of the current directory**
320
+
300
321
  ## Development
301
322
 
302
323
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests.
@@ -310,4 +331,4 @@ Bug reports and pull requests are welcome on GitHub at https://github.com/robotd
310
331
  ## License
311
332
 
312
333
  The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
313
- Wordlists packaged with this gem have their own licenses, see them in https://github.com/robotdana/spellr/tree/master/wordlists
334
+ Wordlists packaged with this gem have their own licenses, see them in https://github.com/robotdana/spellr/tree/main/wordlists
data/lib/spellr/check.rb CHANGED
@@ -7,6 +7,7 @@ require_relative 'string_format'
7
7
  module Spellr
8
8
  class Check
9
9
  attr_reader :files, :reporter
10
+
10
11
  include StringFormat
11
12
 
12
13
  def exit_code
@@ -28,6 +28,9 @@ module Spellr
28
28
  opts.separator('')
29
29
  opts.on('--[no-]parallel', 'Run in parallel or not, default --parallel', &method(:parallel_option))
30
30
  opts.on('-d', '--dry-run', 'List files to be checked', &method(:dry_run_option))
31
+ opts.on('-f', '--suppress-file-rules', <<~HELP, &method(:suppress_file_rules))
32
+ Suppress all configured, default, and gitignore include and exclude patterns
33
+ HELP
31
34
  opts.separator('')
32
35
  opts.on('-c', '--config FILENAME', String, <<~HELP, &method(:config_option))
33
36
  Path to the config file (default ./.spellr.yml)
@@ -56,6 +59,10 @@ module Spellr
56
59
  Spellr.config.checker = Spellr::CheckInteractive unless @parallel_option
57
60
  end
58
61
 
62
+ def suppress_file_rules(_)
63
+ Spellr.config.suppress_file_rules = true
64
+ end
65
+
59
66
  def config_option(file)
60
67
  file = Spellr.pwd.join(file).expand_path
61
68
 
@@ -4,8 +4,8 @@ require_relative 'line_location'
4
4
 
5
5
  module Spellr
6
6
  class ColumnLocation
7
- attr_reader :char_offset
8
- attr_reader :byte_offset
7
+ attr_reader :char_offset, :byte_offset
8
+
9
9
  attr_accessor :line_location
10
10
 
11
11
  def initialize(char_offset: 0, byte_offset: 0, line_location: LineLocation.new)
data/lib/spellr/config.rb CHANGED
@@ -10,10 +10,11 @@ require 'pathname'
10
10
 
11
11
  module Spellr
12
12
  class Config
13
- attr_writer :reporter
14
- attr_writer :checker
13
+ attr_writer :reporter, :checker
14
+
15
+ attr_accessor :suppress_file_rules, :dry_run
16
+
15
17
  attr_reader :config_file
16
- attr_accessor :dry_run
17
18
  alias_method :dry_run?, :dry_run
18
19
 
19
20
  def initialize
@@ -77,7 +78,7 @@ module Spellr
77
78
  Spellr::ConfigValidator.new.valid?
78
79
  end
79
80
 
80
- def reset! # rubocop:disable Metrics/MethodLength, Metrics/CyclomaticComplexity
81
+ def reset! # rubocop:disable Metrics/MethodLength
81
82
  @config = ConfigLoader.new
82
83
  remove_instance_variable(:@languages) if defined?(@languages)
83
84
  remove_instance_variable(:@excludes) if defined?(@excludes)
@@ -32,7 +32,7 @@ module Spellr
32
32
  def load_yaml(path)
33
33
  return {} unless ::File.exist?(path)
34
34
 
35
- YAML.safe_load(::File.read(path), symbolize_names: true)
35
+ YAML.safe_load(::File.read(path, encoding: ::Encoding::UTF_8), symbolize_names: true)
36
36
  end
37
37
 
38
38
  def merge_config(default, project) # rubocop:disable Metrics/MethodLength
data/lib/spellr/file.rb CHANGED
@@ -34,7 +34,7 @@ module Spellr
34
34
  end
35
35
 
36
36
  def read_write
37
- write(yield read)
37
+ write(yield(read(encoding: ::Encoding::UTF_8)), encoding: ::Encoding::UTF_8)
38
38
  end
39
39
  end
40
40
  end
@@ -26,10 +26,18 @@ module Spellr
26
26
 
27
27
  private
28
28
 
29
+ def configured_rules
30
+ return { gitignore: false } if Spellr.config.suppress_file_rules
31
+
32
+ {
33
+ ignore_rules: Spellr.config.excludes,
34
+ include_rules: Spellr.config.includes
35
+ }
36
+ end
37
+
29
38
  def fast_ignore # rubocop:disable Metrics/MethodLength
30
39
  FastIgnore.new(
31
- ignore_rules: Spellr.config.excludes,
32
- include_rules: Spellr.config.includes,
40
+ **configured_rules,
33
41
  argv_rules: @patterns,
34
42
  follow_symlinks: true,
35
43
  root: Spellr.pwd_s
@@ -58,7 +58,7 @@ module Spellr
58
58
  Process.clock_gettime(Process::CLOCK_MONOTONIC)
59
59
  end
60
60
 
61
- def stdin_getch(legal_chars) # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
61
+ def stdin_getch(legal_chars) # rubocop:disable Metrics/MethodLength
62
62
  choice = output.stdin.getch
63
63
 
64
64
  if legal_chars.include?(choice)
@@ -13,10 +13,7 @@ class NaiveBayes
13
13
 
14
14
  YAML_PATH = File.join(__dir__, 'data.yml')
15
15
 
16
- attr_reader :feature_set
17
- attr_reader :num_classes
18
- attr_reader :classes
19
- attr_reader :features
16
+ attr_reader :feature_set, :num_classes, :classes, :features
20
17
 
21
18
  def initialize(path = YAML_PATH)
22
19
  load_from_yaml(path)
@@ -7,8 +7,7 @@ require 'fast_ignore'
7
7
 
8
8
  module Spellr
9
9
  class Language
10
- attr_reader :name
11
- attr_reader :key
10
+ attr_reader :name, :key
12
11
 
13
12
  def initialize(name, key: name[0], includes: [], hashbangs: [], locale: [], addable: true) # rubocop:disable Metrics/ParameterLists
14
13
  @name = name
@@ -4,10 +4,7 @@ require_relative 'file'
4
4
 
5
5
  module Spellr
6
6
  class LineLocation
7
- attr_reader :line_number
8
- attr_reader :char_offset
9
- attr_reader :byte_offset
10
- attr_reader :file
7
+ attr_reader :line_number, :char_offset, :byte_offset, :file
11
8
 
12
9
  def initialize(
13
10
  file = ::Spellr::File.new('[string]'),
@@ -9,8 +9,8 @@ require_relative 'token_regexps'
9
9
 
10
10
  module Spellr
11
11
  class LineTokenizer < StringScanner
12
- attr_reader :line
13
- attr_reader :skip_key
12
+ attr_reader :line, :skip_key
13
+
14
14
  alias_method :skip_key?, :skip_key
15
15
 
16
16
  include TokenRegexps
@@ -16,7 +16,7 @@ module Spellr
16
16
  @stderr ||= StringIO.new
17
17
  end
18
18
 
19
- def marshal_dump # rubocop:disable Metrics/MethodLength
19
+ def marshal_dump # rubocop:disable Metrics/MethodLength, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
20
20
  l_exit_code = @exit_code if defined?(@exit_code)
21
21
  l_counts = @counts if defined?(@counts)
22
22
  l_stdin = @stdin if defined?(@stdin)
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative 'base_reporter'
4
+ require 'shellwords'
4
5
 
5
6
  module Spellr
6
7
  class Reporter < Spellr::BaseReporter
@@ -8,12 +9,31 @@ module Spellr
8
9
  puts "\n"
9
10
  puts "#{pluralize 'file', counts[:checked]} checked"
10
11
  puts "#{pluralize 'error', counts[:total]} found"
12
+
13
+ interactive_command if counts[:total].positive?
11
14
  end
12
15
 
13
16
  def call(token)
14
17
  super
15
18
 
19
+ filenames << token.location.file.relative_path.to_s
16
20
  increment(:total)
17
21
  end
22
+
23
+ private
24
+
25
+ def interactive_command
26
+ puts "\nto add or replace words interactively, run:"
27
+ command = ['spellr', '--interactive']
28
+ # sort is purely for repeatability for tests. so
29
+ command.concat(counts[:filenames].to_a.sort) unless counts[:filenames].length > 20
30
+
31
+ puts " #{Shellwords.join(command)}"
32
+ end
33
+
34
+ def filenames
35
+ output.counts[:filenames] = Set.new unless output.counts.key?(:filenames)
36
+ output.counts[:filenames]
37
+ end
18
38
  end
19
39
  end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Spellr
4
+ class StringIOWithEncoding < ::StringIO
5
+ def each_line(*args, encoding: nil, **kwargs, &block)
6
+ string.force_encoding(encoding) if encoding && !string.frozen?
7
+
8
+ super(*args, **kwargs, &block)
9
+ end
10
+ end
11
+ end
@@ -39,8 +39,9 @@ module Spellr
39
39
  # literal \ so that i can match on domains in regexps. no-one cares but me.
40
40
  URL_HOSTNAME = /(?:[[:alnum:]\-\\]+(?:\.[[:alnum:]\-\\]+)+|localhost|#{URL_IP_ADDRESS})/.freeze
41
41
  URL_PORT = /:\d+/.freeze
42
- URL_PATH = %r{/(?:[[:alnum:]=@!$&\-/._\\]|%\h{2})+}.freeze
43
- URL_QUERY = %r{\?(?:[[:alnum:]=!$\-/.\\]|%\h{2})+(?:&(?:[[:alnum:]=!$\-/.\\]|%\h{2})+)*}.freeze
42
+ URL_PATH = %r{/(?:[[:alnum:]=@!$&~\-/._\\]|%\h{2})*}.freeze
43
+ URL_QUERY_PART = %r{(?:[[:alnum:]=!$\-/._\\]|%\h{2})+}.freeze
44
+ URL_QUERY = /\?#{URL_QUERY_PART}(?:&#{URL_QUERY_PART})*/.freeze
44
45
  URL_FRAGMENT = %r{#(?:[[:alnum:]=!$&\-/.\\]|%\h{2})+}.freeze
45
46
 
46
47
  # URL can be any valid hostname, it must have either a scheme, userinfo, or path
@@ -98,5 +99,6 @@ module Spellr
98
99
 
99
100
  SPELLR_DISABLE_RE = /spellr:disable/.freeze
100
101
  SPELLR_ENABLE_RE = /spellr:enable/.freeze
102
+ SPELLR_LINE_DISABLE_RE = /spellr:disable[-:]line/.freeze
101
103
  end
102
104
  end
@@ -27,8 +27,8 @@ module Spellr
27
27
  end
28
28
 
29
29
  def each_term(&block)
30
- file.each_line do |line|
31
- prepare_tokenizer_for_line(line).each_term(&block)
30
+ file.each_line(encoding: ::Encoding::UTF_8) do |line|
31
+ prepare_tokenizer_for_line(line)&.each_term(&block)
32
32
  end
33
33
  ensure
34
34
  file.close
@@ -36,7 +36,7 @@ module Spellr
36
36
 
37
37
  def each_token(skip_term_proc: nil) # rubocop:disable Metrics/MethodLength
38
38
  each_line_with_stats do |line, line_number, char_offset, byte_offset|
39
- prepare_tokenizer_for_line(line).each_token(skip_term_proc: skip_term_proc) do |token|
39
+ prepare_tokenizer_for_line(line)&.each_token(skip_term_proc: skip_term_proc) do |token|
40
40
  token.line = prepare_line(line, line_number, char_offset, byte_offset)
41
41
 
42
42
  yield token
@@ -56,12 +56,14 @@ module Spellr
56
56
  char_offset = @start_at.line_location.char_offset
57
57
  byte_offset = @start_at.line_location.byte_offset
58
58
 
59
- file.each_line.with_index(@start_at.line_location.line_number) do |line, line_number|
60
- yield line, line_number, char_offset, byte_offset
59
+ file
60
+ .each_line(encoding: ::Encoding::UTF_8)
61
+ .with_index(@start_at.line_location.line_number) do |line, line_number|
62
+ yield line, line_number, char_offset, byte_offset
61
63
 
62
- char_offset += line.length
63
- byte_offset += line.bytesize
64
- end
64
+ char_offset += line.length
65
+ byte_offset += line.bytesize
66
+ end
65
67
  ensure
66
68
  file.close
67
69
  end
@@ -75,6 +77,8 @@ module Spellr
75
77
  attr_reader :line_tokenizer
76
78
 
77
79
  def prepare_tokenizer_for_line(line)
80
+ return if line.match?(Spellr::TokenRegexps::SPELLR_LINE_DISABLE_RE)
81
+
78
82
  line_tokenizer.string = line
79
83
  line_tokenizer.pos = 0
80
84
  line_tokenizer
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Spellr
4
- VERSION = '0.8.4'
4
+ VERSION = '0.9.0'
5
5
  end
@@ -41,7 +41,7 @@ module Spellr
41
41
  touch
42
42
  @include[term] = true
43
43
  insert_sorted(term)
44
- @path.write(words.join) # we don't need to clear the cache
44
+ @path.write(words.join, encoding: ::Encoding::UTF_8) # we don't need to clear the cache
45
45
  end
46
46
 
47
47
  def words
@@ -55,7 +55,7 @@ module Spellr
55
55
  end
56
56
 
57
57
  def write(content)
58
- @path.write(content)
58
+ @path.write(content, encoding: ::Encoding::UTF_8)
59
59
 
60
60
  clear_cache
61
61
  end
@@ -70,7 +70,7 @@ module Spellr
70
70
  return if exist?
71
71
 
72
72
  @path.dirname.mkpath
73
- @path.write('')
73
+ @path.write('', encoding: ::Encoding::UTF_8)
74
74
  clear_cache
75
75
  end
76
76
 
data/spellr.gemspec CHANGED
@@ -14,6 +14,12 @@ Gem::Specification.new do |spec|
14
14
  spec.homepage = 'http://github.com/robotdana/spellr'
15
15
  spec.license = 'MIT'
16
16
 
17
+ if spec.respond_to?(:metadata)
18
+ spec.metadata['homepage_uri'] = spec.homepage
19
+ spec.metadata['source_code_uri'] = spec.homepage
20
+ spec.metadata['changelog_uri'] = "#{spec.homepage}/blob/main/CHANGELOG.md"
21
+ end
22
+
17
23
  spec.required_ruby_version = '>= 2.4'
18
24
 
19
25
  spec.files = Dir.glob('{lib,exe,wordlists}/**/{*,.*}') + %w{
@@ -28,17 +34,17 @@ Gem::Specification.new do |spec|
28
34
  spec.require_paths = ['lib']
29
35
 
30
36
  spec.add_development_dependency 'bundler', '~> 2.0'
31
- spec.add_development_dependency 'leftovers', '>= 0.2.2'
37
+ spec.add_development_dependency 'leftovers', '>= 0.4.0'
32
38
  spec.add_development_dependency 'mime-types', '~> 3.3.1'
33
39
  spec.add_development_dependency 'nokogiri'
34
40
  spec.add_development_dependency 'pry'
35
41
  spec.add_development_dependency 'rake', '>= 12.3.3'
36
42
  spec.add_development_dependency 'rspec', '~> 3.0'
37
- spec.add_development_dependency 'rubocop'
38
- spec.add_development_dependency 'rubocop-rspec'
43
+ spec.add_development_dependency 'rubocop', '~> 0.93.1'
44
+ spec.add_development_dependency 'rubocop-rspec', '~> 1.44.1'
39
45
  spec.add_development_dependency 'simplecov', '~> 0.18.5'
40
46
  spec.add_development_dependency 'simplecov-console'
41
- spec.add_development_dependency 'tty_string', '>= 0.2.1'
47
+ spec.add_development_dependency 'tty_string', '>= 1.1.0'
42
48
  spec.add_development_dependency 'webmock', '~> 3.8'
43
49
 
44
50
  spec.add_dependency 'fast_ignore', '>= 0.11.0'
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.8.4
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dana Sherson
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-05-02 00:00:00.000000000 Z
11
+ date: 2021-06-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 0.2.2
33
+ version: 0.4.0
34
34
  type: :development
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: 0.2.2
40
+ version: 0.4.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: mime-types
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -112,30 +112,30 @@ dependencies:
112
112
  name: rubocop
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - ">="
115
+ - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: '0'
117
+ version: 0.93.1
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - ">="
122
+ - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: '0'
124
+ version: 0.93.1
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: rubocop-rspec
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - ">="
129
+ - - "~>"
130
130
  - !ruby/object:Gem::Version
131
- version: '0'
131
+ version: 1.44.1
132
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
- version: '0'
138
+ version: 1.44.1
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: simplecov
141
141
  requirement: !ruby/object:Gem::Requirement
@@ -170,14 +170,14 @@ dependencies:
170
170
  requirements:
171
171
  - - ">="
172
172
  - !ruby/object:Gem::Version
173
- version: 0.2.1
173
+ version: 1.1.0
174
174
  type: :development
175
175
  prerelease: false
176
176
  version_requirements: !ruby/object:Gem::Requirement
177
177
  requirements:
178
178
  - - ">="
179
179
  - !ruby/object:Gem::Version
180
- version: 0.2.1
180
+ version: 1.1.0
181
181
  - !ruby/object:Gem::Dependency
182
182
  name: webmock
183
183
  requirement: !ruby/object:Gem::Requirement
@@ -220,7 +220,7 @@ dependencies:
220
220
  - - "~>"
221
221
  - !ruby/object:Gem::Version
222
222
  version: '1.0'
223
- description:
223
+ description:
224
224
  email:
225
225
  - robot@dana.sh
226
226
  executables:
@@ -266,6 +266,7 @@ files:
266
266
  - lib/spellr/rake_task.rb
267
267
  - lib/spellr/reporter.rb
268
268
  - lib/spellr/string_format.rb
269
+ - lib/spellr/stringio_with_encoding.rb
269
270
  - lib/spellr/token.rb
270
271
  - lib/spellr/token_regexps.rb
271
272
  - lib/spellr/tokenizer.rb
@@ -299,8 +300,11 @@ files:
299
300
  homepage: http://github.com/robotdana/spellr
300
301
  licenses:
301
302
  - MIT
302
- metadata: {}
303
- post_install_message:
303
+ metadata:
304
+ homepage_uri: http://github.com/robotdana/spellr
305
+ source_code_uri: http://github.com/robotdana/spellr
306
+ changelog_uri: http://github.com/robotdana/spellr/blob/main/CHANGELOG.md
307
+ post_install_message:
304
308
  rdoc_options: []
305
309
  require_paths:
306
310
  - lib
@@ -315,9 +319,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
315
319
  - !ruby/object:Gem::Version
316
320
  version: '0'
317
321
  requirements: []
318
- rubyforge_project:
319
- rubygems_version: 2.7.10
320
- signing_key:
322
+ rubygems_version: 3.2.15
323
+ signing_key:
321
324
  specification_version: 4
322
325
  summary: Spell check your source code
323
326
  test_files: []