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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: de011752bbfc87c08592300330dc0aca37a6b9da
4
- data.tar.gz: 051e4aa36d4fb35a763f04299b4a278d416ff7cd
3
+ metadata.gz: 4abcaa011331a5fcdcb8e27184883850c6815b1e
4
+ data.tar.gz: 213abc61320426da678cabe812b59902c2d8833b
5
5
  SHA512:
6
- metadata.gz: 31cc5709e9eb6ed76a1a43ec365e3ae645e1ca9a8e467c9087b4c2f8bdcb8cb2db4045eb6c5de8f216de97619c137a028ac3d27dd973ba8a37b20a6df173b065
7
- data.tar.gz: 1bab14d866ae4995d5c5b09e489348ff9931ed403fd34949afe9e54bf9275f0ed84e1cfb15f3603d844a01f6cb040ab3efc9a8625652e0602596139e6cd54025
6
+ metadata.gz: ef7b9677ab085c54cbd0511a15d212b85776c43190bb82ca9a51000a83dbfecd257fbed6a347a31bd585407b32fddb2941c7c92bc06f8ebec7d1ac32f169933d
7
+ data.tar.gz: f158c34ec94e52d29b66caf5e6914f2c94db14d6e0523b791b1c0a739c4c53fcbb60d8f649f9b8c1d1a5d7c1b706546c3bab7ca7947613df64067cf108cd42d6
@@ -1,14 +1,14 @@
1
1
  sudo: false
2
2
  language: ruby
3
3
  rvm:
4
- - 2.3.1
4
+ - 2.3.3
5
5
  - 2.2
6
- - 2.4.0-preview2
6
+ - 2.4.0-preview3
7
7
  matrix:
8
8
  allow_failures:
9
- - rvm: 2.4.0-preview2
9
+ - rvm: 2.4.0-preview3
10
10
 
11
- before_install: gem install bundler -v 1.13.1
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.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.1"
9
- ruby-sys = "^0.2.13"
10
- regex = "^0.1.77"
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"]
@@ -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
- rust_enable!
14
+ RUST_AVAILABLE = rust_load!
15
+ rust_enable! if RUST_AVAILABLE
18
16
 
19
17
  module_function
20
18
 
@@ -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 load_rust!
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::Detect::Rust) ? true : false
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
- if RUST_AVAILABLE
29
- # :nocov:
30
- Detect.module_eval do
31
- class << self
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.module_eval do
47
- class << self
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
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
  module Sanscript
3
3
  # The version number
4
- VERSION = "0.7.2"
4
+ VERSION = "0.8.0"
5
5
 
6
6
  GEM_ROOT = Pathname.new(File.realpath(File.join(__dir__, "..", "..")))
7
7
  private_constant :GEM_ROOT
@@ -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(&m_detect, "Rust");
40
- rb::define_method(&m_rust, "rust_detect_scheme",
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, &m_rust);
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
- #[inline(always)]
15
- fn str_to_cstrp(s: &str) -> *const c_char {
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 c_strp = str_to_cstrp(s);
25
+ let c_str = str_to_cstr(s);
29
26
  unsafe {
30
- let id = util::rb_intern(c_strp);
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 c_strp = str_to_cstrp(name);
37
- unsafe { class::rb_define_module(c_strp) }
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 c_strp = str_to_cstrp(name);
42
- unsafe { class::rb_define_module_under(*parent, c_strp) }
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 c_strp = str_to_cstrp(name);
47
- unsafe { class::rb_define_method(*module, c_strp, method, argc) }
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.7.2
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-22 00:00:00.000000000 Z
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.5.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