Skip to content

Commit 648d62b

Browse files
committed
switch from helix to ruru
1 parent 92537e5 commit 648d62b

File tree

7 files changed

+74
-103
lines changed

7 files changed

+74
-103
lines changed

Cargo.toml

Lines changed: 0 additions & 21 deletions
This file was deleted.

Gemfile.lock

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ PATH
88
remote: .
99
specs:
1010
case_transform (0.1)
11-
helix_runtime
11+
thermite
1212

1313
GEM
1414
remote: https://rubygems.org/
@@ -22,6 +22,7 @@ GEM
2222
docile (1.1.5)
2323
json (2.0.2)
2424
method_source (0.8.2)
25+
minitar (0.5.4)
2526
minitest (5.9.0)
2627
parser (2.3.1.2)
2728
ast (~> 2.2)
@@ -48,6 +49,11 @@ GEM
4849
simplecov-html (~> 0.10.0)
4950
simplecov-html (0.10.0)
5051
slop (3.6.0)
52+
thermite (0.6.0)
53+
minitar (~> 0.5)
54+
rake (>= 10)
55+
tomlrb (~> 1.2)
56+
tomlrb (1.2.3)
5157
unicode-display_width (1.1.1)
5258

5359
PLATFORMS

Rakefile

Lines changed: 6 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@ require 'bundler/gem_tasks'
33
require 'rake/clean'
44
require 'rake/testtask'
55
require 'bundler/setup'
6+
require 'thermite/tasks'
7+
8+
Thermite::Tasks.new
69

710
# rubocop config copied from AMS
811
begin
@@ -35,44 +38,13 @@ else
3538
end
3639
end
3740

38-
39-
40-
directory 'target'
41-
directory 'lib/turbo_blank'
42-
43-
task :cargo_build do
44-
sh 'cargo build --release'
45-
sh 'gcc ' \
46-
'-Wl,-force_load,target/release/libcase_transform.a ' \
47-
'--shared -Wl,-undefined,dynamic_lookup -o lib/case_transform/native.bundle'
48-
end
49-
CLEAN.include('target')
50-
51-
file 'lib/case_transform/native.bundle' => ['lib/case_transform', :cargo_build] do
52-
sh 'gcc ' \
53-
'-Wl,-force_load,target/release/libcase_transform.a ' \
54-
'--shared -Wl,-undefined,dynamic_lookup -o lib/case_transform/native.bundle'
55-
56-
end
57-
CLOBBER.include('lib/case_transform/native.bundle')
58-
59-
task irb: 'lib/case_transform/native.bundle' do
60-
exec 'irb -Ilib -rcase_transform'
61-
end
62-
63-
task benchmark: 'lib/case_transform/native.bundle' do
64-
exec 'ruby -Ilib benchmark.rb'
65-
end
66-
6741
Rake::TestTask.new(:test) do |t|
68-
t.libs << "test"
69-
t.libs << "lib"
42+
t.libs << 'test'
43+
t.libs << 'lib'
7044
t.test_files = FileList['test/**/*_test.rb']
7145
end
72-
#
73-
task :test => "lib/case_transform/native.bundle"
74-
task default: [:test, :rubocop]
7546

47+
task default: [:test, :rubocop]
7648

7749
desc 'CI test task'
7850
task ci: [:default]

case_transform.gemspec

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,10 @@ Gem::Specification.new do |s|
2525

2626
s.required_ruby_version = '>= 2.0'
2727

28-
s.add_development_dependency 'rake'
29-
3028
# Rust
31-
s.add_runtime_dependency 'helix_runtime'
29+
s.add_runtime_dependency 'thermite'
30+
31+
s.add_development_dependency 'rake'
3232

3333
# Quality Control
3434
s.add_development_dependency 'rubocop'

ext/case_transform/Cargo.toml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
[package]
2+
name = "case_transform"
3+
version = "0.1.0"
4+
authors = ["L. Preston Sego III <[email protected]>"]
5+
6+
[lib]
7+
name = "case_transform"
8+
crate-type = ["dylib"]
9+
10+
[dependencies]
11+
Inflector = "0.3.1"
12+
ruru = "0.8.0"

ext/case_transform/src/lib.rs

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
#[macro_use]
2+
extern crate ruru;
3+
extern crate inflector;
4+
5+
use ruru::{Class,RString};
6+
7+
// // dash: kebab-case
8+
// use inflector::cases::kebabcase::to_kebab_case;
9+
// // underscore: snake_case
10+
// use inflector::cases::snakecase::to_snake_case;
11+
// // camel_lower: camelCase
12+
// use inflector::cases::camelcase::to_camel_case;
13+
// // camel: ClassCase (PascalCase)
14+
// use inflector::cases::classcase::to_class_case;
15+
use inflector::Inflector;
16+
17+
methods! (
18+
RString,
19+
itself,
20+
21+
fn toSnakeCase(self) -> RString {
22+
self.to_string().to_snake_case()
23+
}
24+
25+
fn toCamelCase(self) -> RString {
26+
self.to_string().to_camel_case()
27+
}
28+
29+
fn toClassCase(self) -> RString {
30+
self.to_string().to_class_case()
31+
}
32+
33+
fn toKebabCase(self) -> RString {
34+
self.to_string().to_kebab_case()
35+
}
36+
)
37+
38+
#[no_mangle]
39+
pub extern fn initialize_string() {
40+
Class::from_existing("String").define(|itself| {
41+
itself.def("to_snake_case", toSnakeCase);
42+
itself.def("to_camel_case", toCamelCase);
43+
itself.def("to_class_case", toClassCase);
44+
itself.def("to_kebab_case", toKebabCase);
45+
});
46+
}

src/lib.rs

Lines changed: 0 additions & 44 deletions
This file was deleted.

0 commit comments

Comments
 (0)