string-utility 2.7.2 → 2.7.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +3 -0
- data/ext/Cargo.toml +16 -0
- data/ext/Makefile +7 -0
- data/ext/extconf.rb +1 -0
- data/ext/src/lib.rs +29 -0
- data/lib/utils.rb +16 -12
- metadata +8 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4a2b5e87c8eacc1c8298288a863648479d79a92b
|
4
|
+
data.tar.gz: ea2d2bfdfefea83ff19aaa28ff851ee037377e85
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6dad12d0aa07187cc0c682b1c9d6242dd89b1494dbf5eeaac50451563044cc4e300c0f7c44eeac2e8be0697e3adf1353f125a31dd2f874133dc86a0152ae90d7
|
7
|
+
data.tar.gz: f786694beb1eba79692b5b1676169d253504ee84dbbd128b1ddae01e738e03af19f7320f65336246e33b31cc3bb86115b62464fe3e606b09689f18fd378b968d
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
# Changelog
|
2
2
|
## Version 2
|
3
|
+
### Version 2.7.3
|
4
|
+
* Optimize underscorify and spacify with native extensions written in Rust, utilizing the ruru crate. These methods are now 2-5x faster. I did attempt to write a Rust extension for random_line, the slowest function in this library, but the performance increase was insignificant.
|
5
|
+
|
3
6
|
### Version 2.7.2
|
4
7
|
* No longer include tests in gem package.
|
5
8
|
* License as MIT
|
data/ext/Cargo.toml
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
[package]
|
2
|
+
name = "string-utility-rb-native"
|
3
|
+
version = "1.0.0"
|
4
|
+
authors = ["Eli Clemente Gordillo Foster <elifosterwy@gmail.com>"]
|
5
|
+
homepage = "https://rubygems.org/gems/string-utility"
|
6
|
+
repository = "https://github.com/elifoster/String-Utility-Ruby"
|
7
|
+
readme = "README.md"
|
8
|
+
license = "MIT"
|
9
|
+
description = "The Rust native extension for the StringUtility Ruby gem."
|
10
|
+
|
11
|
+
[lib]
|
12
|
+
name = "stringutility"
|
13
|
+
crate-type = ["dylib"]
|
14
|
+
|
15
|
+
[dependencies]
|
16
|
+
ruru = "0.7"
|
data/ext/Makefile
ADDED
data/ext/extconf.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
fail 'You have to install Rust with Cargo (https://www.rust-lang.org/)' if !system('cargo --version') || !system('rustc --version')
|
data/ext/src/lib.rs
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
#[macro_use]
|
2
|
+
extern crate ruru;
|
3
|
+
|
4
|
+
use ruru::{AnyObject, Class, RString, VM};
|
5
|
+
use ruru::types::{Argc, Value};
|
6
|
+
use ruru::traits::Object;
|
7
|
+
|
8
|
+
class!(StringUtility);
|
9
|
+
|
10
|
+
methods!(
|
11
|
+
RString,
|
12
|
+
itself,
|
13
|
+
|
14
|
+
fn underscorify() -> RString {
|
15
|
+
RString::new(&str::replace(&itself.to_string(), " ", "_"))
|
16
|
+
}
|
17
|
+
|
18
|
+
fn spacify() -> RString {
|
19
|
+
RString::new(&str::replace(&itself.to_string(), "_", " "))
|
20
|
+
}
|
21
|
+
);
|
22
|
+
|
23
|
+
#[no_mangle]
|
24
|
+
pub extern fn initialize_me() {
|
25
|
+
Class::from_existing("String").define(|itself| {
|
26
|
+
itself.def("underscorify", underscorify);
|
27
|
+
itself.def("spacify", spacify);
|
28
|
+
});
|
29
|
+
}
|
data/lib/utils.rb
CHANGED
@@ -1,4 +1,9 @@
|
|
1
|
+
require 'fiddle'
|
2
|
+
|
3
|
+
LIBRARY = Fiddle.dlopen("#{File.dirname(__FILE__)}/../ext/target/release/libstringutility.dylib")
|
4
|
+
|
1
5
|
module StringUtility
|
6
|
+
Fiddle::Function.new(LIBRARY['initialize_me'], [], Fiddle::TYPE_VOIDP).call
|
2
7
|
refine String do
|
3
8
|
# Separates the string by another string. Useful for converting integers
|
4
9
|
# into human-readable numbers.
|
@@ -18,18 +23,6 @@ module StringUtility
|
|
18
23
|
safely_gsub!(/\D/, '').to_i
|
19
24
|
end
|
20
25
|
|
21
|
-
# Replaces all whitespace with underscores.
|
22
|
-
# @return [String] The string with replaced whitespace.
|
23
|
-
def underscorify
|
24
|
-
safely_gsub!(/\s/, '_')
|
25
|
-
end
|
26
|
-
|
27
|
-
# Replaces all underscores with whitespace.
|
28
|
-
# @return [String] The string with replaced underscores.
|
29
|
-
def spacify
|
30
|
-
safely_gsub!('_', ' ')
|
31
|
-
end
|
32
|
-
|
33
26
|
# Readable shorthand for the only safe, fast way to use gsub! using || operators. Unlike gsub!, safely_gsub! will
|
34
27
|
# NEVER return nil. This method should not be used instead of gsub! when the string replacement is predictable, as
|
35
28
|
# this method is somewhat slower than gsub! (see spec/benchmark).
|
@@ -77,3 +70,14 @@ module StringUtility
|
|
77
70
|
str
|
78
71
|
end
|
79
72
|
end
|
73
|
+
|
74
|
+
# A module that contains stub methods for the Rust native extension methods.
|
75
|
+
module StringUtilityNativeExtensionDocumentationStubs
|
76
|
+
# Replaces all whitespace with underscores.
|
77
|
+
# @return [String] The string with replaced whitespace.
|
78
|
+
def underscorify; end
|
79
|
+
|
80
|
+
# Replaces all underscores with whitespace.
|
81
|
+
# @return [String] The string with replaced underscores.
|
82
|
+
def spacify; end
|
83
|
+
end
|
metadata
CHANGED
@@ -1,22 +1,27 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: string-utility
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.7.
|
4
|
+
version: 2.7.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eli Foster
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-05-16 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: " Some simple but handy methods to interact with string objects.\n"
|
14
14
|
email: elifosterwy@gmail.com
|
15
15
|
executables: []
|
16
|
-
extensions:
|
16
|
+
extensions:
|
17
|
+
- ext/extconf.rb
|
17
18
|
extra_rdoc_files: []
|
18
19
|
files:
|
19
20
|
- CHANGELOG.md
|
21
|
+
- ext/Cargo.toml
|
22
|
+
- ext/Makefile
|
23
|
+
- ext/extconf.rb
|
24
|
+
- ext/src/lib.rs
|
20
25
|
- lib/string-utility.rb
|
21
26
|
- lib/utils.rb
|
22
27
|
homepage: https://github.com/elifoster/string-utility-ruby
|