sanscript 0.7.2 → 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|