lingua_rb 0.1.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: cce8c73b05d7c7ded3928199e4f37454d4b0fbfc80ed83a3387b0d8a7b64458f
4
- data.tar.gz: 62b140512e592b10fff2714f5d4a9c86bd0ee71cf00416ee92780ac4b5db168b
3
+ metadata.gz: c7706d75651554e27d607a074300deb301916020544f9a1a17b35cbc98712db3
4
+ data.tar.gz: d1aea179fabaecd1518a710e54e66d8e9272e1995ff007787cb45ce1998925db
5
5
  SHA512:
6
- metadata.gz: 39f1e4ce02afd74c856704dbad062b7ea5cbe9ccfc1f4b05ac7a6252aa36f4473218650728445258c0df64a0ff69f03b3334672507c2a6a77e9f9e16c9f16da5
7
- data.tar.gz: 021e57cbb9366957ffab790ff6c7413312c68d68f2f3585e37b900a9ee0afb9db3a225384213b1c068f9b83aeb611814b0337bf2e070708d877c80abc18b7658
6
+ metadata.gz: c94c454d2bc68080f1ba2bc8a10a54c07fa0b573cbdba0571731b2befb9337344bde23b76077c42c55aec282a8adb3cbf967d2213200ffe9d0e9c49fd84177d7
7
+ data.tar.gz: e7297a8bf2fb400b620d6caa5404c7df1bd78d109d8d2fe3c7a9db30d31a11dc734b5ac82df6478d6dea36dd96f251ede798b137c44b1651e3b7728cd87e8702
data/CHANGELOG.md CHANGED
@@ -1,4 +1,8 @@
1
- ## [Unreleased]
1
+ ## [Released]
2
+
3
+ ## [0.2.0] - 2024-05-24
4
+
5
+ - Add support for builder options
2
6
 
3
7
  ## [0.1.0] - 2024-05-21
4
8
 
data/Cargo.lock CHANGED
@@ -1,6 +1,6 @@
1
1
  # This file is automatically @generated by Cargo.
2
2
  # It is not intended for manual editing.
3
- version = 3
3
+ version = 4
4
4
 
5
5
  [[package]]
6
6
  name = "ahash"
@@ -310,7 +310,7 @@ dependencies = [
310
310
 
311
311
  [[package]]
312
312
  name = "lingua"
313
- version = "0.1.0"
313
+ version = "0.2.0"
314
314
  dependencies = [
315
315
  "lingua 1.6.2",
316
316
  "magnus",
@@ -1098,9 +1098,9 @@ checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c"
1098
1098
 
1099
1099
  [[package]]
1100
1100
  name = "magnus"
1101
- version = "0.6.4"
1101
+ version = "0.8.2"
1102
1102
  source = "registry+https://github.com/rust-lang/crates.io-index"
1103
- checksum = "b1597ef40aa8c36be098249e82c9a20cf7199278ac1c1a1a995eeead6a184479"
1103
+ checksum = "3b36a5b126bbe97eb0d02d07acfeb327036c6319fd816139a49824a83b7f9012"
1104
1104
  dependencies = [
1105
1105
  "magnus-macros",
1106
1106
  "rb-sys",
@@ -1110,9 +1110,9 @@ dependencies = [
1110
1110
 
1111
1111
  [[package]]
1112
1112
  name = "magnus-macros"
1113
- version = "0.6.0"
1113
+ version = "0.8.0"
1114
1114
  source = "registry+https://github.com/rust-lang/crates.io-index"
1115
- checksum = "5968c820e2960565f647819f5928a42d6e874551cab9d88d75e3e0660d7f71e3"
1115
+ checksum = "47607461fd8e1513cb4f2076c197d8092d921a1ea75bd08af97398f593751892"
1116
1116
  dependencies = [
1117
1117
  "proc-macro2",
1118
1118
  "quote",
@@ -1266,18 +1266,18 @@ dependencies = [
1266
1266
 
1267
1267
  [[package]]
1268
1268
  name = "rb-sys"
1269
- version = "0.9.97"
1269
+ version = "0.9.123"
1270
1270
  source = "registry+https://github.com/rust-lang/crates.io-index"
1271
- checksum = "47d30bcad206b51f2f66121190ca678dce1fdf3a2eae0ac5d838d1818b19bdf5"
1271
+ checksum = "45fb1a185af97ee456f1c9e56dbe6e2e662bec4fdeaf83c4c28e0e6adfb18816"
1272
1272
  dependencies = [
1273
1273
  "rb-sys-build",
1274
1274
  ]
1275
1275
 
1276
1276
  [[package]]
1277
1277
  name = "rb-sys-build"
1278
- version = "0.9.97"
1278
+ version = "0.9.123"
1279
1279
  source = "registry+https://github.com/rust-lang/crates.io-index"
1280
- checksum = "3cbd92f281615f3c2dcb9dcb0f0576624752afbf9a7f99173b37c4b55b62dd8a"
1280
+ checksum = "a58ebd02d7a6033e6a5f6f8d150c1e9f16506039092b84a73e6bedce6d3adf41"
1281
1281
  dependencies = [
1282
1282
  "bindgen",
1283
1283
  "lazy_static",
@@ -1290,9 +1290,9 @@ dependencies = [
1290
1290
 
1291
1291
  [[package]]
1292
1292
  name = "rb-sys-env"
1293
- version = "0.1.2"
1293
+ version = "0.2.2"
1294
1294
  source = "registry+https://github.com/rust-lang/crates.io-index"
1295
- checksum = "a35802679f07360454b418a5d1735c89716bde01d35b1560fc953c1415a0b3bb"
1295
+ checksum = "08f8d2924cf136a1315e2b4c7460a39f62ef11ee5d522df9b2750fab55b868b6"
1296
1296
 
1297
1297
  [[package]]
1298
1298
  name = "regex"
data/README.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # Lingua
2
2
 
3
+ [![Gem Version](https://badge.fury.io/rb/lingua_rb.svg)](https://badge.fury.io/rb/lingua_rb)
4
+ ![CI](https://github.com/ShallmentMo/lingua_rb/actions/workflows/main.yml/badge.svg)
5
+ ![License](https://img.shields.io/github/license/ShallmentMo/lingua_rb)
6
+ ![Gems](https://img.shields.io/gem/dt/lingua_rb)
7
+
3
8
  Lingua is an [Ruby][0] wrapper for the [Rust][1] [lingua][2] crate with [magnus][3].
4
9
 
5
10
  ## Installation
@@ -17,8 +22,19 @@ If bundler is not being used to manage dependencies, install the gem by executin
17
22
  ```ruby
18
23
  irb> Lingua.detect("this is definitely English")
19
24
  => "English"
25
+
26
+ irb> Lingua.detect("וזה בעברית")
27
+ => "Hebrew"
28
+
29
+ irb> Lingua.detect("państwowych", languages: %w[english russian polish])
30
+ => "Polish"
31
+
32
+ irb> Lingua.detect("כלב", languages: %w[english russian polish])
33
+ => nil
20
34
  ```
21
35
 
36
+ **Note:** The value of `languages` option should be an array of String. An array of symbols will be ignored.
37
+
22
38
  ## Development
23
39
 
24
40
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "lingua"
3
- version = "0.1.0"
3
+ version = "0.2.0"
4
4
  edition = "2021"
5
5
  authors = ["ShallmentMo <shallmentmo@gmail.com>"]
6
6
  license = "MIT"
@@ -10,5 +10,5 @@ publish = false
10
10
  crate-type = ["cdylib"]
11
11
 
12
12
  [dependencies]
13
- magnus = { version = "0.6.2" }
13
+ magnus = { version = "0.8.2" }
14
14
  lingua = "1.6.2"
@@ -1,16 +1,83 @@
1
+ use std::str::FromStr;
2
+
1
3
  use lingua::{Language, LanguageDetector, LanguageDetectorBuilder};
2
- use magnus::{function, prelude::*, Error, Ruby};
4
+ use magnus::{function, prelude::*, Error, Ruby, Symbol};
5
+
6
+ fn detect(arguments: magnus::RArray) -> Option<String> {
7
+ match arguments.len() {
8
+ 1 => {
9
+ let subject = arguments.shift::<String>().unwrap();
10
+ let detector: LanguageDetector = LanguageDetectorBuilder::from_all_languages().build();
11
+ let detected_language: Option<Language> = detector.detect_language_of(subject);
3
12
 
4
- fn detect(subject: String) -> Option<String> {
5
- let detector: LanguageDetector = LanguageDetectorBuilder::from_all_languages().build();
6
- let detected_language: Option<Language> = detector.detect_language_of(subject);
13
+ detected_language.map(|language| language.to_string())
14
+ }
15
+ 2 => {
16
+ let subject = arguments.shift::<String>().unwrap();
17
+ let options = arguments.shift::<magnus::RHash>().unwrap();
18
+ let mut builder = match options.fetch::<Symbol, Vec<String>>(Symbol::new("languages")) {
19
+ Ok(languages) => {
20
+ let languages: Vec<Language> = languages
21
+ .into_iter()
22
+ .filter_map(|l| Language::from_str(&l).ok())
23
+ .collect();
24
+ Some(LanguageDetectorBuilder::from_languages(&languages))
25
+ }
26
+ Err(_) => None,
27
+ };
28
+ if builder.is_none() {
29
+ builder = match options.fetch::<&str, Vec<String>>("languages") {
30
+ Ok(languages) => {
31
+ let languages: Vec<Language> = languages
32
+ .into_iter()
33
+ .filter_map(|l| Language::from_str(&l).ok())
34
+ .collect();
35
+ Some(LanguageDetectorBuilder::from_languages(&languages))
36
+ }
37
+ Err(_) => None,
38
+ };
39
+ }
40
+ let mut builder = builder.unwrap_or_else(LanguageDetectorBuilder::from_all_languages);
41
+ if let Ok(minimum_relative_distance) =
42
+ options.fetch::<&str, f64>("minimum_relative_distance")
43
+ {
44
+ builder.with_minimum_relative_distance(minimum_relative_distance);
45
+ };
46
+ if let Ok(minimum_relative_distance) =
47
+ options.fetch::<Symbol, f64>(Symbol::new("minimum_relative_distance"))
48
+ {
49
+ builder.with_minimum_relative_distance(minimum_relative_distance);
50
+ };
51
+ if options
52
+ .fetch::<&str, bool>("is_every_language_model_preloaded")
53
+ .unwrap_or(false)
54
+ || options
55
+ .fetch::<Symbol, bool>(Symbol::new("is_every_language_model_preloaded"))
56
+ .unwrap_or(false)
57
+ {
58
+ builder.with_preloaded_language_models();
59
+ };
60
+ if options
61
+ .fetch::<&str, bool>("is_low_accuracy_mode_enabled")
62
+ .unwrap_or(false)
63
+ || options
64
+ .fetch::<Symbol, bool>(Symbol::new("is_low_accuracy_mode_enabled"))
65
+ .unwrap_or(false)
66
+ {
67
+ builder.with_low_accuracy_mode();
68
+ };
69
+ let detector = builder.build();
70
+ let detected_language: Option<Language> = detector.detect_language_of(subject);
7
71
 
8
- detected_language.map(|language| language.to_string())
72
+ detected_language.map(|language| language.to_string())
73
+ }
74
+ _ => None,
75
+ }
9
76
  }
10
77
 
11
78
  #[magnus::init]
12
79
  fn init(ruby: &Ruby) -> Result<(), Error> {
13
80
  let module = ruby.define_module("Lingua")?;
14
- module.define_singleton_method("detect", function!(detect, 1))?;
81
+ module.define_singleton_method("detect", function!(detect, -2))?;
15
82
  Ok(())
16
83
  }
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Lingua
4
- VERSION = "0.1.0"
4
+ VERSION = "0.3.0"
5
5
  end
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lingua_rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - ShallmentMo
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2024-05-21 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies: []
13
12
  description: An Ruby wrapper around the Rust Lingua language detection library.
14
13
  email:
@@ -39,7 +38,6 @@ metadata:
39
38
  homepage_uri: https://github.com/ShallmentMo/lingua_rb
40
39
  source_code_uri: https://github.com/ShallmentMo/lingua_rb
41
40
  changelog_uri: https://github.com/ShallmentMo/lingua_rb/blob/main/CHANGELOG.md
42
- post_install_message:
43
41
  rdoc_options: []
44
42
  require_paths:
45
43
  - lib
@@ -54,8 +52,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
54
52
  - !ruby/object:Gem::Version
55
53
  version: 3.3.11
56
54
  requirements: []
57
- rubygems_version: 3.5.3
58
- signing_key:
55
+ rubygems_version: 4.0.3
59
56
  specification_version: 4
60
57
  summary: An Ruby wrapper around the Rust Lingua language detection library.
61
58
  test_files: []