whatlang 0.1.9 → 0.2.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: 55268aaa58b8de25fa16334a7368ab9f31e6edbf47f92eba67e034e4df9bdf16
4
- data.tar.gz: a4291e86623078494e32971d0a244cf2b0bf56f69021d3ac19461c3991ef6c75
3
+ metadata.gz: e5b245173c946709df258efa77b2e253d062ecd79087cde657919f488d3f08b8
4
+ data.tar.gz: ec4cd29f02a29bfd44c66b31ee8cd5e2aec9b5be6db126897dbf7214ccb7ad73
5
5
  SHA512:
6
- metadata.gz: 1447f03d89a8ea35050612a701614c27d5bcdc6b573180489f76cc073c4376c8950635625d57d52710dc89004e8449959e8949ef81c6a0c72424c685f1bff22f
7
- data.tar.gz: 1e515f8ed244e0b0b103360d0e23934d4735fb4b0b237fa6eafef78feb79630446e47ef337cc3d84f73e745c693fbe6865dae7bac3b861756aa5afd491c8c781
6
+ metadata.gz: e13e54ad577c1949673739ab8a02dab3405dd19f7ac3602d47232cf5f746576be8c0d23de36efc02ac1837e8bbaeb41a21fff9a7eecf6170bf0a6b782fbb246f
7
+ data.tar.gz: 89832e91d3b3be94a019416f95627c5fe8e46981a0066a85a0b3a758bae333a72572dba8a31197ef3665c0ec8fe61a5b601792beb18367c306ad17f07c6ac37c
data/.gitignore CHANGED
@@ -7,6 +7,6 @@
7
7
  /spec/reports/
8
8
  /tmp/
9
9
  Gemfile.lock
10
- /lib/whatlang-rb/whatlang_rb.bundle
11
- /whatlang-rb/
12
- /ext/whatlang-rb/target/
10
+ /lib/whatlang.bundle
11
+ /whatlang.bundle
12
+ /ext/target/
data/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ 0.2.0
2
+ =====
3
+
4
+ * Implement all lib code in Rust
5
+ * Add rb-sys/stable-api-compiled-fallback for some environment
6
+ * Implement `Whatlang::Lang.all`
7
+
1
8
  0.1.9
2
9
  =====
3
10
 
data/Gemfile CHANGED
@@ -4,5 +4,3 @@ source "https://rubygems.org"
4
4
 
5
5
  # Specify your gem's dependencies in whatlang.gemspec
6
6
  gemspec
7
-
8
- gem "fiddle", "~> 1.1"
data/README.md CHANGED
@@ -64,6 +64,20 @@ Usage
64
64
  Whatlang.detect(text, allowlist: list).lang.code # => "ita"
65
65
  Whatlang.detect(text, denylist: list).lang.code # => "epo"
66
66
 
67
+ If you need available languages, use `Whatlang::Lang.all`:
68
+
69
+ puts Whatlang::Lang.all.collect {|lang| "#{lang.code}: #{lang.eng_name}"}
70
+ # epo: Esperanto
71
+ # eng: English
72
+ # rus: Russian
73
+ # cmn: Mandarin
74
+ # spa: Spanish
75
+ # por: Portuguese
76
+ # :
77
+ # :
78
+
79
+ Use `Whatlang::Lang#code` for allow and deny list.
80
+
67
81
  If you're interested in only language information, use `detect_lang` function:
68
82
 
69
83
  lang = Whatlang.detect_lang(text)
data/Rakefile CHANGED
@@ -1,32 +1,40 @@
1
- # frozen_string_literal: true
2
-
3
1
  require "rake/clean"
4
2
  require "rubygems/ext"
5
3
  require "rubygems/tasks"
6
4
  require "rake/testtask"
7
5
  require "yard"
6
+ require "shellwords"
8
7
 
9
8
  task default: :test
10
9
 
11
- Gem::Tasks.new
12
- YARD::Rake::YardocTask.new
10
+ GEMSPEC = Gem::Specification.load("whatlang.gemspec")
11
+ MANIFEST = GEMSPEC.extensions.first
13
12
 
14
- CARGO_LOCK = "ext/whatlang-rb/Cargo.lock"
15
- file CARGO_LOCK => "ext/whatlang-rb/Cargo.toml" do |t|
16
- system "cargo", "update", "--manifest-path", t.source, "whatlang-rb", exception: true
13
+ CARGO_LOCK = "ext/Cargo.lock"
14
+ file CARGO_LOCK => MANIFEST do |t|
15
+ pkgid = `cargo pkgid --manifest-path=#{t.source.shellescape}`.chomp
16
+ system "cargo", "update", "--manifest-path", t.source, pkgid, exception: true
17
17
  end
18
18
 
19
- EXTENSION = "lib/whatlang-rb/whatlang_rb.#{RbConfig::CONFIG["DLEXT"]}"
20
- file EXTENSION => CARGO_LOCK do
19
+ SO_NAME = "#{GEMSPEC.name}.#{RbConfig::CONFIG["DLEXT"]}"
20
+ SO_PATH = File.join("lib", SO_NAME)
21
+ SRC = FileList["ext/src/**/*.rs"]
22
+ file SO_PATH => [CARGO_LOCK] + SRC do
21
23
  results = Rake.verbose == true ? $stdout : []
22
- Gem::Ext::CargoBuilder.new.build "ext/whatlang-rb/Cargo.toml", ".", results, [], "lib", File.expand_path("ext/whatlang-rb")
24
+ Gem::Ext::CargoBuilder.new.build MANIFEST, ".", results, [], "lib", File.expand_path("ext")
23
25
  end
24
- CLEAN.include "whatlang-rb"
25
- CLOBBER.include EXTENSION
26
+ CLEAN.include SO_NAME
27
+ CLOBBER.include SO_PATH
28
+
29
+ Gem::Tasks.new
30
+ task build: CARGO_LOCK
31
+ CLOBBER.include("pkg/#{GEMSPEC.file_name}")
26
32
 
27
33
  Rake::TestTask.new
28
- task test: EXTENSION
34
+ task test: SO_PATH
29
35
 
36
+ YARD::Rake::YardocTask.new
37
+ desc "Generate Ruby and Rust documentation"
30
38
  task doc: :yard do
31
- system "cargo", "doc", "--manifest-path", "ext/whatlang-rb/Cargo.toml", exception: true
39
+ system "cargo", "doc", "--manifest-path", MANIFEST, exception: true
32
40
  end
@@ -306,19 +306,20 @@ checksum = "462eeb75aeb73aea900253ce739c8e18a67423fadf006037cd3ff27e82748a06"
306
306
 
307
307
  [[package]]
308
308
  name = "whatlang"
309
- version = "0.18.0"
310
- source = "registry+https://github.com/rust-lang/crates.io-index"
311
- checksum = "f5e8f38b596e2a359b755342473520a99421e43658548c79489ee221b728c107"
309
+ version = "0.2.0"
312
310
  dependencies = [
313
- "hashbrown",
311
+ "magnus",
312
+ "rb-sys",
313
+ "whatlang 0.18.0",
314
314
  ]
315
315
 
316
316
  [[package]]
317
- name = "whatlang-rb"
318
- version = "0.1.9"
317
+ name = "whatlang"
318
+ version = "0.18.0"
319
+ source = "registry+https://github.com/rust-lang/crates.io-index"
320
+ checksum = "f5e8f38b596e2a359b755342473520a99421e43658548c79489ee221b728c107"
319
321
  dependencies = [
320
- "magnus",
321
- "whatlang",
322
+ "hashbrown",
322
323
  ]
323
324
 
324
325
  [[package]]
data/ext/Cargo.toml ADDED
@@ -0,0 +1,14 @@
1
+ [package]
2
+ name = "whatlang"
3
+ version = "0.2.0"
4
+ authors = ["Kitaiti Makoto <KitaitiMakoto@gmail.com>"]
5
+ edition = "2024"
6
+ publish = false
7
+
8
+ [dependencies]
9
+ magnus = "0.8"
10
+ whatlang-rs = { package = "whatlang", version = "0.18.0", registry = "crates-io" }
11
+ rb-sys = { version = "*", features = ["stable-api-compiled-fallback"] }
12
+
13
+ [lib]
14
+ crate-type = ["cdylib"]
@@ -1,14 +1,19 @@
1
1
  use magnus::{
2
- Error, Ruby, Value, function, method,
2
+ Error, RArray, Ruby, Value, function, method,
3
3
  prelude::*,
4
4
  scan_args::{get_kwargs, scan_args},
5
5
  };
6
- use whatlang as wl;
6
+ use whatlang_rs as wl;
7
7
 
8
8
  #[magnus::wrap(class = "Whatlang::Lang")]
9
9
  struct Lang(wl::Lang);
10
10
 
11
11
  impl Lang {
12
+ fn all(ruby: &Ruby) -> RArray {
13
+ let langs = wl::Lang::all();
14
+ ruby.ary_from_iter(langs.iter().map(|&lang| Lang(lang)))
15
+ }
16
+
12
17
  fn code(&self) -> &str {
13
18
  self.0.code()
14
19
  }
@@ -75,17 +80,21 @@ fn detect_without_options(text: String) -> Option<Info> {
75
80
  }
76
81
 
77
82
  fn detect_with_allowlist(text: String, allowlist: Vec<String>) -> Option<Info> {
78
- wl::Detector::with_allowlist(allowlist.iter().filter_map(wl::Lang::from_code).collect())
83
+ wl::Detector::with_allowlist(lang_list(allowlist))
79
84
  .detect(&text)
80
85
  .map(Info)
81
86
  }
82
87
 
83
88
  fn detect_with_denylist(text: String, denylist: Vec<String>) -> Option<Info> {
84
- wl::Detector::with_denylist(denylist.iter().filter_map(wl::Lang::from_code).collect())
89
+ wl::Detector::with_denylist(lang_list(denylist))
85
90
  .detect(&text)
86
91
  .map(Info)
87
92
  }
88
93
 
94
+ fn lang_list(list: Vec<String>) -> Vec<wl::Lang> {
95
+ list.iter().filter_map(wl::Lang::from_code).collect()
96
+ }
97
+
89
98
  fn detect_lang(text: String) -> Option<Lang> {
90
99
  wl::detect_lang(&text).map(Lang)
91
100
  }
@@ -108,6 +117,7 @@ fn init(ruby: &Ruby) -> Result<(), Error> {
108
117
  module.define_singleton_method("detect_script", function!(detect_script, 1))?;
109
118
 
110
119
  let lang = module.define_class("Lang", ruby.class_object())?;
120
+ lang.define_singleton_method("all", function!(Lang::all, 0))?;
111
121
  lang.define_method("code", method!(Lang::code, 0))?;
112
122
  lang.define_method("name", method!(Lang::name, 0))?;
113
123
  lang.define_method("eng_name", method!(Lang::eng_name, 0))?;
data/test/test_package.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require "test/unit"
2
+ require "test/unit/notify"
2
3
  require 'tempfile'
3
4
  require 'tmpdir'
4
5
  require 'shellwords'
@@ -32,7 +33,7 @@ class TestPackage < Test::Unit::TestCase
32
33
  private
33
34
 
34
35
  def assert_installed(dir, version)
35
- assert_path_exist File.join(dir, "gems/whatlang-#{version}/lib/whatlang-rb", "whatlang_rb.#{RbConfig::CONFIG["DLEXT"]}")
36
+ assert_path_exist File.join(dir, "gems/whatlang-#{version}/lib", "whatlang.#{RbConfig::CONFIG["DLEXT"]}")
36
37
  end
37
38
  end
38
39
  end
@@ -1,6 +1,6 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "helper"
1
+ require "test/unit"
2
+ require "test/unit/notify"
3
+ require "whatlang"
4
4
 
5
5
  class TestWhatlang < Test::Unit::TestCase
6
6
  def test_detect
@@ -62,4 +62,10 @@ class TestWhatlang < Test::Unit::TestCase
62
62
  def test_numeric
63
63
  assert_nil Whatlang.detect(1234)
64
64
  end
65
+
66
+ def test_lang_all
67
+ all_langs = Whatlang::Lang.all
68
+ assert_equal 70, all_langs.length
69
+ assert_all(all_langs) {|lang| lang.instance_of? Whatlang::Lang}
70
+ end
65
71
  end
data/whatlang.gemspec CHANGED
@@ -2,7 +2,7 @@ require "json"
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = "whatlang"
5
- spec.version = JSON.parse(`cargo metadata --no-deps --format-version=1 --manifest-path=ext/whatlang-rb/Cargo.toml`)["packages"][0]["version"]
5
+ spec.version = JSON.parse(`cargo metadata --no-deps --format-version=1 --manifest-path=ext/Cargo.toml`)["packages"][0]["version"]
6
6
  spec.license = "Ruby"
7
7
  spec.authors = ["Kitaiti Makoto"]
8
8
  spec.email = ["KitaitiMakoto@gmail.com"]
@@ -18,10 +18,12 @@ Gem::Specification.new do |spec|
18
18
  spec.files = Dir.chdir(File.expand_path(__dir__)) do
19
19
  `git ls-files -z`.split("\x0")
20
20
  end
21
- spec.extensions = ["ext/whatlang-rb/Cargo.toml"]
21
+ spec.extensions = ["ext/Cargo.toml"]
22
22
 
23
23
  spec.add_development_dependency "test-unit"
24
+ spec.add_development_dependency "test-unit-notify"
24
25
  spec.add_development_dependency "rake"
25
26
  spec.add_development_dependency "yard"
26
27
  spec.add_development_dependency "rubygems-tasks"
28
+ spec.add_development_dependency "terminal-notifier"
27
29
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: whatlang
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.9
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kitaiti Makoto
@@ -23,6 +23,20 @@ dependencies:
23
23
  - - ">="
24
24
  - !ruby/object:Gem::Version
25
25
  version: '0'
26
+ - !ruby/object:Gem::Dependency
27
+ name: test-unit-notify
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :development
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
26
40
  - !ruby/object:Gem::Dependency
27
41
  name: rake
28
42
  requirement: !ruby/object:Gem::Requirement
@@ -65,12 +79,26 @@ dependencies:
65
79
  - - ">="
66
80
  - !ruby/object:Gem::Version
67
81
  version: '0'
82
+ - !ruby/object:Gem::Dependency
83
+ name: terminal-notifier
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ type: :development
90
+ prerelease: false
91
+ version_requirements: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
68
96
  description: Ruby bindings for Whatlang, a natural language detection for Rust.
69
97
  email:
70
98
  - KitaitiMakoto@gmail.com
71
99
  executables: []
72
100
  extensions:
73
- - ext/whatlang-rb/Cargo.toml
101
+ - ext/Cargo.toml
74
102
  extra_rdoc_files: []
75
103
  files:
76
104
  - ".gitignore"
@@ -82,11 +110,9 @@ files:
82
110
  - Gemfile
83
111
  - README.md
84
112
  - Rakefile
85
- - ext/whatlang-rb/Cargo.lock
86
- - ext/whatlang-rb/Cargo.toml
87
- - ext/whatlang-rb/src/lib.rs
88
- - lib/whatlang.rb
89
- - test/helper.rb
113
+ - ext/Cargo.lock
114
+ - ext/Cargo.toml
115
+ - ext/src/lib.rs
90
116
  - test/test_package.rb
91
117
  - test/test_whatlang.rb
92
118
  - whatlang.gemspec
@@ -1,12 +0,0 @@
1
- [package]
2
- name = "whatlang-rb"
3
- version = "0.1.9"
4
- authors = ["Kitaiti Makoto <KitaitiMakoto@gmail.com>"]
5
- edition = "2024"
6
-
7
- [dependencies]
8
- magnus = "0.8"
9
- whatlang = "0.18.0"
10
-
11
- [lib]
12
- crate-type = ["cdylib"]
data/lib/whatlang.rb DELETED
@@ -1 +0,0 @@
1
- require "whatlang-rb/whatlang_rb"
data/test/helper.rb DELETED
@@ -1,2 +0,0 @@
1
- require "test/unit"
2
- require "whatlang"