sanscript 0.7.2 → 0.8.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/.travis.yml +4 -4
- data/Cargo.toml +4 -4
- data/lib/sanscript.rb +2 -4
- data/lib/sanscript/rust.rb +11 -19
- data/lib/sanscript/version.rb +1 -1
- data/src/detect/ruby.rs +4 -3
- data/src/rb.rs +10 -13
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4abcaa011331a5fcdcb8e27184883850c6815b1e
|
4
|
+
data.tar.gz: 213abc61320426da678cabe812b59902c2d8833b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ef7b9677ab085c54cbd0511a15d212b85776c43190bb82ca9a51000a83dbfecd257fbed6a347a31bd585407b32fddb2941c7c92bc06f8ebec7d1ac32f169933d
|
7
|
+
data.tar.gz: f158c34ec94e52d29b66caf5e6914f2c94db14d6e0523b791b1c0a739c4c53fcbb60d8f649f9b8c1d1a5d7c1b706546c3bab7ca7947613df64067cf108cd42d6
|
data/.travis.yml
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
sudo: false
|
2
2
|
language: ruby
|
3
3
|
rvm:
|
4
|
-
- 2.3.
|
4
|
+
- 2.3.3
|
5
5
|
- 2.2
|
6
|
-
- 2.4.0-
|
6
|
+
- 2.4.0-preview3
|
7
7
|
matrix:
|
8
8
|
allow_failures:
|
9
|
-
- rvm: 2.4.0-
|
9
|
+
- rvm: 2.4.0-preview3
|
10
10
|
|
11
|
-
before_install: gem install bundler -v 1.13.
|
11
|
+
before_install: gem install bundler -v 1.13.6
|
12
12
|
script: bundle exec rake spec SPEC_OPTS="--format p"
|
13
13
|
addons:
|
14
14
|
code_climate:
|
data/Cargo.toml
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
[package]
|
2
2
|
name = "rusty_sanscript"
|
3
|
-
version = "0.
|
3
|
+
version = "0.4.0"
|
4
4
|
authors = ["Tim Bellefleur <nomoon@phoebus.ca>"]
|
5
5
|
publish = false
|
6
6
|
|
7
7
|
[dependencies]
|
8
|
-
lazy_static = "^0.2.
|
9
|
-
ruby-sys = "^0.2.
|
10
|
-
regex = "^0.1.
|
8
|
+
lazy_static = "^0.2.2"
|
9
|
+
ruby-sys = "^0.2.17"
|
10
|
+
regex = "^0.1.80"
|
11
11
|
|
12
12
|
[lib]
|
13
13
|
crate-type = ["cdylib"]
|
data/lib/sanscript.rb
CHANGED
@@ -10,11 +10,9 @@ require "sanscript/benchmark"
|
|
10
10
|
|
11
11
|
# Sanscript.rb detection/transliteration module for Sanskrit.
|
12
12
|
module Sanscript
|
13
|
-
# Whether Rust extension is available.
|
14
|
-
RUST_AVAILABLE = load_rust!
|
15
|
-
|
16
13
|
# Load rust if available.
|
17
|
-
|
14
|
+
RUST_AVAILABLE = rust_load!
|
15
|
+
rust_enable! if RUST_AVAILABLE
|
18
16
|
|
19
17
|
module_function
|
20
18
|
|
data/lib/sanscript/rust.rb
CHANGED
@@ -4,14 +4,14 @@ module Sanscript
|
|
4
4
|
|
5
5
|
# Attempts to load Rust native extension.
|
6
6
|
# @return [bool] whether the extension loaded.
|
7
|
-
def
|
7
|
+
def rust_load!
|
8
8
|
return RUST_AVAILABLE if defined?(RUST_AVAILABLE)
|
9
9
|
require "thermite/fiddle"
|
10
10
|
Thermite::Fiddle.load_module("init_rusty_sanscript",
|
11
11
|
cargo_project_path: GEM_ROOT,
|
12
12
|
ruby_project_path: GEM_ROOT)
|
13
13
|
#:nocov:#
|
14
|
-
defined?(Sanscript::
|
14
|
+
defined?(Sanscript::Rust) ? true : false
|
15
15
|
rescue Fiddle::DLError
|
16
16
|
false
|
17
17
|
#:nocov:#
|
@@ -19,34 +19,26 @@ module Sanscript
|
|
19
19
|
|
20
20
|
# @return [bool] the enabled status of the Rust extension
|
21
21
|
def rust_enabled?
|
22
|
-
@rust_enabled
|
22
|
+
@rust_enabled ||= false
|
23
23
|
end
|
24
24
|
|
25
25
|
# Turns on Rust extension, if available.
|
26
26
|
# @return [bool] the enabled status of the Rust extension
|
27
27
|
def rust_enable!
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
alias_method :detect_scheme, :rust_detect_scheme
|
33
|
-
end
|
34
|
-
end
|
35
|
-
@rust_enabled = true
|
36
|
-
else
|
37
|
-
@rust_enabled = false
|
38
|
-
# :nocov:
|
28
|
+
return false unless RUST_AVAILABLE
|
29
|
+
# :nocov:
|
30
|
+
Detect.singleton_class.class_eval do
|
31
|
+
alias_method :detect_scheme, :rust_detect_scheme
|
39
32
|
end
|
40
|
-
@rust_enabled
|
33
|
+
@rust_enabled = true
|
34
|
+
# :nocov:
|
41
35
|
end
|
42
36
|
|
43
37
|
# Turns off Rust native extension.
|
44
38
|
# @return [bool] the enabled status of the Rust extension
|
45
39
|
def rust_disable!
|
46
|
-
Detect.
|
47
|
-
|
48
|
-
alias_method :detect_scheme, :ruby_detect_scheme
|
49
|
-
end
|
40
|
+
Detect.singleton_class.class_eval do
|
41
|
+
alias_method :detect_scheme, :ruby_detect_scheme
|
50
42
|
end
|
51
43
|
@rust_enabled = false
|
52
44
|
end
|
data/lib/sanscript/version.rb
CHANGED
data/src/detect/ruby.rs
CHANGED
@@ -36,8 +36,9 @@ fn rbstr_detect_scheme(_rself: Value, s: Value) -> Value {
|
|
36
36
|
pub extern fn init_rusty_sanscript() {
|
37
37
|
let m_sanscript = rb::define_module("Sanscript");
|
38
38
|
let m_detect = rb::define_module_under(&m_sanscript, "Detect");
|
39
|
-
let m_rust = rb::define_module_under(&
|
40
|
-
rb::
|
39
|
+
let m_rust = rb::define_module_under(&m_sanscript, "Rust");
|
40
|
+
let m_rust_detect = rb::define_module_under(&m_rust, "Detect");
|
41
|
+
rb::define_method(&m_rust_detect, "rust_detect_scheme",
|
41
42
|
rbstr_detect_scheme as CallbackPtr, 1);
|
42
|
-
rb::extend_object(&m_detect, &
|
43
|
+
rb::extend_object(&m_detect, &m_rust_detect);
|
43
44
|
}
|
data/src/rb.rs
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
use std::ffi::{CStr, CString};
|
2
2
|
|
3
3
|
use ruby_sys::{class, string, symbol, util};
|
4
|
-
use ruby_sys::types::c_char;
|
5
4
|
use ruby_sys::value::RubySpecialConsts::Nil;
|
6
5
|
|
7
6
|
pub use ruby_sys::types::{CallbackPtr, Value};
|
@@ -11,12 +10,10 @@ pub const RB_NIL: Value = Value { value: Nil as usize };
|
|
11
10
|
// Helper functions for dealing with Ruby and CStrings
|
12
11
|
//
|
13
12
|
|
14
|
-
|
15
|
-
|
16
|
-
CString::new(s).unwrap().as_ptr()
|
13
|
+
fn str_to_cstr(s: &str) -> CString {
|
14
|
+
CString::new(s).unwrap()
|
17
15
|
}
|
18
16
|
|
19
|
-
#[inline]
|
20
17
|
pub fn rbstr_to_str<'a>(s: *const Value) -> &'a str {
|
21
18
|
unsafe {
|
22
19
|
let c_strp = string::rb_string_value_cstr(s);
|
@@ -25,26 +22,26 @@ pub fn rbstr_to_str<'a>(s: *const Value) -> &'a str {
|
|
25
22
|
}
|
26
23
|
|
27
24
|
pub fn str_to_sym(s: &str) -> Value {
|
28
|
-
let
|
25
|
+
let c_str = str_to_cstr(s);
|
29
26
|
unsafe {
|
30
|
-
let id = util::rb_intern(
|
27
|
+
let id = util::rb_intern(c_str.as_ptr());
|
31
28
|
symbol::rb_id2sym(id)
|
32
29
|
}
|
33
30
|
}
|
34
31
|
|
35
32
|
pub fn define_module(name: &str) -> Value {
|
36
|
-
let
|
37
|
-
unsafe { class::rb_define_module(
|
33
|
+
let c_str = str_to_cstr(name);
|
34
|
+
unsafe { class::rb_define_module(c_str.as_ptr()) }
|
38
35
|
}
|
39
36
|
|
40
37
|
pub fn define_module_under(parent: &Value, name: &str) -> Value {
|
41
|
-
let
|
42
|
-
unsafe { class::rb_define_module_under(*parent,
|
38
|
+
let c_str = str_to_cstr(name);
|
39
|
+
unsafe { class::rb_define_module_under(*parent, c_str.as_ptr()) }
|
43
40
|
}
|
44
41
|
|
45
42
|
pub fn define_method(module: &Value, name: &str, method: CallbackPtr, argc: i32) {
|
46
|
-
let
|
47
|
-
unsafe { class::rb_define_method(*module,
|
43
|
+
let c_str = str_to_cstr(name);
|
44
|
+
unsafe { class::rb_define_method(*module, c_str.as_ptr(), method, argc) }
|
48
45
|
}
|
49
46
|
|
50
47
|
pub fn extend_object(object: &Value, module: &Value) {
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sanscript
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tim Bellefleur
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-11-
|
11
|
+
date: 2016-11-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -221,7 +221,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
221
221
|
version: '0'
|
222
222
|
requirements: []
|
223
223
|
rubyforge_project:
|
224
|
-
rubygems_version: 2.
|
224
|
+
rubygems_version: 2.6.8
|
225
225
|
signing_key:
|
226
226
|
specification_version: 4
|
227
227
|
summary: Ruby port and extension of Sanscript.js transliterator by learnsanskrit.org
|