spellkit 0.2.0 → 0.3.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: adf2357fd18c80d025496b5b2b1f5feee5dbf1a1f1daf5cae12d5e6029b56675
4
- data.tar.gz: f0a4d4ca9f73de174e05adf1a979c82d7d03f669d9aca9dec20f416241316e45
3
+ metadata.gz: a16cdfa3277c6161351b4b9f2ba35720dd78487f7e7b49f6c3cebc6a6a4d2d4b
4
+ data.tar.gz: 71ec217bee6087915e2fa2fec3229ba4fa1ee8b354c437acf68ef5abcef19b0f
5
5
  SHA512:
6
- metadata.gz: 132842b6389fda2ed263f5b127733e10bf21835c5c5d817aa108a9286f663475cea7f0201c51960e61ee989208efb07aed9dba35a98dfe752b95419c1a4c6511
7
- data.tar.gz: dfa5789feab1ba0b88df7a34a8410f628a251a403ea859c8343fc1a2c7b478d849158f1292e879a2f7911f4d044142900ebcfcec005e336903c55217f05f7229
6
+ metadata.gz: 47903715b908a7d5e55837dc94edacf50f91399a74b2ec12174c22015657864624436cc59b5d9ec93de349d1dd17da45edda3f879a8622c320190568335d4f85
7
+ data.tar.gz: 0ef569d807b305ff9c3f1598e0c705ae72559aefd3efd644c90dc8f749db389d05861a698b39dd9ead5fe95652b5350e7519c25e7b17fc622422d91900cb43f9
data/README.md CHANGED
@@ -684,9 +684,13 @@ bundle exec rake build
684
684
  ## Platform Support
685
685
 
686
686
  Pre-built gems available for:
687
- - macOS (x86_64, arm64)
688
- - Linux (glibc, musl)
689
- - Ruby 3.1, 3.2, 3.3
687
+ - macOS (arm64)
688
+ - Linux (x86_64, aarch64)
689
+ - Ruby 3.1, 3.2, 3.3, 3.4, 4.0
690
+
691
+ A pre-built gem carries one compiled extension per Ruby ABI, so installing under a Ruby
692
+ outside that list falls back to building from source and needs a Rust toolchain (>= 1.85).
693
+ Ruby 4.0 support arrived in 0.3.0; earlier versions cannot compile against it at all.
690
694
 
691
695
  ## Contributing
692
696
 
@@ -11,7 +11,7 @@ name = "spellkit"
11
11
  crate-type = ["cdylib"]
12
12
 
13
13
  [dependencies]
14
- magnus = { version = "0.7", features = ["rb-sys"] }
14
+ magnus = { version = "0.8", features = ["rb-sys"] }
15
15
  hashbrown = "0.15"
16
16
  unicode-normalization = "0.1"
17
17
  regex = "1.11"
@@ -1,7 +1,7 @@
1
1
  mod symspell;
2
2
  mod guards;
3
3
 
4
- use magnus::{class, define_module, function, method, prelude::*, Error, RArray, RHash, Ruby, Value, TryConvert};
4
+ use magnus::{function, method, prelude::*, Error, RArray, RHash, Ruby, Value, TryConvert};
5
5
  use std::sync::{Arc, RwLock};
6
6
  use symspell::SymSpell;
7
7
  use guards::Guards;
@@ -264,10 +264,10 @@ impl Checker {
264
264
 
265
265
  if let Some(ref symspell) = state.symspell {
266
266
  let suggestions = symspell.suggestions(&word, max_suggestions);
267
- let result = RArray::new();
267
+ let result = ruby.ary_new();
268
268
 
269
269
  for suggestion in suggestions {
270
- let hash = RHash::new();
270
+ let hash = ruby.hash_new();
271
271
  hash.aset("term", suggestion.term)?;
272
272
  hash.aset("distance", suggestion.distance)?;
273
273
  hash.aset("freq", suggestion.frequency)?;
@@ -320,7 +320,7 @@ impl Checker {
320
320
  return Err(Error::new(ruby.exception_runtime_error(), "Dictionary not loaded. Call load! first"));
321
321
  }
322
322
 
323
- let result = RArray::new();
323
+ let result = ruby.ary_new();
324
324
 
325
325
  if let Some(ref symspell) = state.symspell {
326
326
  for token in tokens.into_iter() {
@@ -336,8 +336,9 @@ impl Checker {
336
336
  }
337
337
 
338
338
  fn stats(&self) -> Result<RHash, Error> {
339
+ let ruby = Ruby::get().unwrap();
339
340
  let state = self.state.read().unwrap();
340
- let stats = RHash::new();
341
+ let stats = ruby.hash_new();
341
342
 
342
343
  if !state.loaded {
343
344
  stats.aset("loaded", false)?;
@@ -376,9 +377,9 @@ impl Checker {
376
377
  }
377
378
 
378
379
  #[magnus::init]
379
- fn init(_ruby: &Ruby) -> Result<(), Error> {
380
- let module = define_module("SpellKit")?;
381
- let checker_class = module.define_class("Checker", class::object())?;
380
+ fn init(ruby: &Ruby) -> Result<(), Error> {
381
+ let module = ruby.define_module("SpellKit")?;
382
+ let checker_class = module.define_class("Checker", ruby.class_object())?;
382
383
 
383
384
  checker_class.define_singleton_method("new", function!(Checker::new, 0))?;
384
385
  checker_class.define_method("load!", method!(Checker::load_full, 1))?;
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SpellKit
4
- VERSION = "0.2.0"
4
+ VERSION = "0.3.0"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spellkit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Petersen
@@ -121,6 +121,20 @@ dependencies:
121
121
  - - ">="
122
122
  - !ruby/object:Gem::Version
123
123
  version: '0'
124
+ - !ruby/object:Gem::Dependency
125
+ name: benchmark
126
+ requirement: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - ">="
129
+ - !ruby/object:Gem::Version
130
+ version: '0'
131
+ type: :development
132
+ prerelease: false
133
+ version_requirements: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - ">="
136
+ - !ruby/object:Gem::Version
137
+ version: '0'
124
138
  - !ruby/object:Gem::Dependency
125
139
  name: benchmark-ips
126
140
  requirement: !ruby/object:Gem::Requirement