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 +4 -4
- data/.gitignore +3 -3
- data/CHANGELOG.md +7 -0
- data/Gemfile +0 -2
- data/README.md +14 -0
- data/Rakefile +22 -14
- data/ext/{whatlang-rb/Cargo.lock → Cargo.lock} +9 -8
- data/ext/Cargo.toml +14 -0
- data/ext/{whatlang-rb/src → src}/lib.rs +14 -4
- data/test/test_package.rb +2 -1
- data/test/test_whatlang.rb +9 -3
- data/whatlang.gemspec +4 -2
- metadata +33 -7
- data/ext/whatlang-rb/Cargo.toml +0 -12
- data/lib/whatlang.rb +0 -1
- data/test/helper.rb +0 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: e5b245173c946709df258efa77b2e253d062ecd79087cde657919f488d3f08b8
|
|
4
|
+
data.tar.gz: ec4cd29f02a29bfd44c66b31ee8cd5e2aec9b5be6db126897dbf7214ccb7ad73
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e13e54ad577c1949673739ab8a02dab3405dd19f7ac3602d47232cf5f746576be8c0d23de36efc02ac1837e8bbaeb41a21fff9a7eecf6170bf0a6b782fbb246f
|
|
7
|
+
data.tar.gz: 89832e91d3b3be94a019416f95627c5fe8e46981a0066a85a0b3a758bae333a72572dba8a31197ef3665c0ec8fe61a5b601792beb18367c306ad17f07c6ac37c
|
data/.gitignore
CHANGED
data/CHANGELOG.md
CHANGED
data/Gemfile
CHANGED
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::
|
|
12
|
-
|
|
10
|
+
GEMSPEC = Gem::Specification.load("whatlang.gemspec")
|
|
11
|
+
MANIFEST = GEMSPEC.extensions.first
|
|
13
12
|
|
|
14
|
-
CARGO_LOCK = "ext/
|
|
15
|
-
file CARGO_LOCK =>
|
|
16
|
-
|
|
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
|
-
|
|
20
|
-
|
|
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
|
|
24
|
+
Gem::Ext::CargoBuilder.new.build MANIFEST, ".", results, [], "lib", File.expand_path("ext")
|
|
23
25
|
end
|
|
24
|
-
CLEAN.include
|
|
25
|
-
CLOBBER.include
|
|
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:
|
|
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",
|
|
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.
|
|
310
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
311
|
-
checksum = "f5e8f38b596e2a359b755342473520a99421e43658548c79489ee221b728c107"
|
|
309
|
+
version = "0.2.0"
|
|
312
310
|
dependencies = [
|
|
313
|
-
"
|
|
311
|
+
"magnus",
|
|
312
|
+
"rb-sys",
|
|
313
|
+
"whatlang 0.18.0",
|
|
314
314
|
]
|
|
315
315
|
|
|
316
316
|
[[package]]
|
|
317
|
-
name = "whatlang
|
|
318
|
-
version = "0.
|
|
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
|
-
"
|
|
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
|
|
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
|
|
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
|
|
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
|
|
36
|
+
assert_path_exist File.join(dir, "gems/whatlang-#{version}/lib", "whatlang.#{RbConfig::CONFIG["DLEXT"]}")
|
|
36
37
|
end
|
|
37
38
|
end
|
|
38
39
|
end
|
data/test/test_whatlang.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
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/
|
|
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/
|
|
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.
|
|
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/
|
|
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/
|
|
86
|
-
- ext/
|
|
87
|
-
- ext/
|
|
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
|
data/ext/whatlang-rb/Cargo.toml
DELETED
data/lib/whatlang.rb
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
require "whatlang-rb/whatlang_rb"
|
data/test/helper.rb
DELETED