faster_path 0.1.11 → 0.1.12
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/Cargo.lock +7 -0
- data/Cargo.toml +1 -0
- data/README.md +1 -1
- data/Rakefile +34 -2
- data/lib/faster_path/optional/monkeypatches.rb +10 -3
- data/lib/faster_path/optional/refinements.rb +6 -0
- data/lib/faster_path/version.rb +1 -1
- data/src/basename.rs +8 -2
- 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: c5bfc3ff4266b588930207d414eeb0eb1ae7b8d7
|
4
|
+
data.tar.gz: 58191c69400ca14fdbdd0ce4d5c8ed7666e9674e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: af28e5efb74251311e18af3991b99d08550f40961116738641f39b1c883d4ac0248547563210cd32c67ff87705da21ef7de7a7fbf02783c66625867bec79b0d3
|
7
|
+
data.tar.gz: 763bc9c1199eec48b708f00e5f68d4dba2e110c17d587b627a6148cfd06f2a134ea1e9a5a3f7d2db8574cce5ee3de1438527496d5f0b72bd30a3c02fe0272d83
|
data/Cargo.lock
CHANGED
@@ -2,13 +2,20 @@
|
|
2
2
|
name = "faster_path"
|
3
3
|
version = "0.0.1"
|
4
4
|
dependencies = [
|
5
|
+
"array_tool 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
5
6
|
"libc 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
6
7
|
]
|
7
8
|
|
9
|
+
[[package]]
|
10
|
+
name = "array_tool"
|
11
|
+
version = "0.3.8"
|
12
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
13
|
+
|
8
14
|
[[package]]
|
9
15
|
name = "libc"
|
10
16
|
version = "0.2.11"
|
11
17
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
12
18
|
|
13
19
|
[metadata]
|
20
|
+
"checksum array_tool 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "10ef6b307cf6a0a6c1a7e3dbb4e9315cc79d2e2d27c2d9674413738686b63e62"
|
14
21
|
"checksum libc 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "c96061f0c8a2dc27482e394d82e23073569de41d73cd736672ccd3e5c7471bfd"
|
data/Cargo.toml
CHANGED
data/README.md
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
[](https://travis-ci.org/danielpclark/faster_path)
|
4
4
|
[](https://ci.appveyor.com/project/danielpclark/faster-path/branch/master)
|
5
5
|
[](https://github.com/danielpclark/faster_path/tags)
|
6
|
-
[](https://github.com/danielpclark/faster_path/pulse)
|
7
7
|
[](https://github.com/danielpclark/faster_path/releases)
|
8
8
|
[](https://coveralls.io/github/danielpclark/faster_path)
|
9
9
|
[](http://inch-ci.org/github/danielpclark/faster_path)
|
data/Rakefile
CHANGED
@@ -2,6 +2,28 @@ require "bundler/gem_tasks"
|
|
2
2
|
require "rake/testtask"
|
3
3
|
require 'fileutils'
|
4
4
|
|
5
|
+
desc 'System Details'
|
6
|
+
task :sysinfo do
|
7
|
+
puts "faster_path #{FasterPath::VERSION}"
|
8
|
+
puts
|
9
|
+
puts `rustc -Vv`
|
10
|
+
puts `cargo -Vv`
|
11
|
+
IO.read('Cargo.toml').split('[dependencies]').last.split("\n").
|
12
|
+
select {|line| line =~ /=/ }.
|
13
|
+
each {|line| puts "%s\t%s" % line.match(/(\S+)[ ="']{1,4}([\d.]+)["']?/).captures }
|
14
|
+
puts
|
15
|
+
puts RUBY_DESCRIPTION
|
16
|
+
puts "bundler\t#{Bundler::VERSION}"
|
17
|
+
puts "rake\t#{Rake::VERSION}"
|
18
|
+
require 'ffi/version';
|
19
|
+
puts "ffi\t#{FFI::VERSION}"
|
20
|
+
begin
|
21
|
+
puts "%s\t%s" % IO.read('Gemfile.lock').match(/(mspec) \(([\d\.]+)\)/).captures
|
22
|
+
rescue Errno::ENOENT => _
|
23
|
+
puts "\nNo Gemfile.lock"
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
5
27
|
desc "Build Rust extension"
|
6
28
|
task :build_src do
|
7
29
|
puts "Building extension..."
|
@@ -45,13 +67,23 @@ task test: [:minitest, :lint] do |_t|
|
|
45
67
|
exec 'mspec --format spec core/file/basename core/file/extname core/file/dirname library/pathname'
|
46
68
|
end
|
47
69
|
|
70
|
+
desc "Full mspec results w/o encoding"
|
71
|
+
task :mspec_full do
|
72
|
+
exec %(bash -c "TEST_MONKEYPATCHES=true WITH_REGRESSION=true mspec --format spec core/file/basename core/file/extname core/file/dirname library/pathname")
|
73
|
+
end
|
74
|
+
|
75
|
+
desc "Full mspec results w/ encoding"
|
76
|
+
task :mspec_encoding_full do
|
77
|
+
exec %(bash -c "ENCODING=1 TEST_MONKEYPATCHES=true WITH_REGRESSION=true mspec --format spec core/file/basename core/file/extname core/file/dirname library/pathname")
|
78
|
+
end
|
79
|
+
|
48
80
|
Rake::TestTask.new(bench: :build_lib) do |t|
|
49
|
-
t.libs = %w
|
81
|
+
t.libs = %w[lib test]
|
50
82
|
t.pattern = 'test/**/*_benchmark.rb'
|
51
83
|
end
|
52
84
|
|
53
85
|
Rake::TestTask.new(pbench: :build_lib) do |t|
|
54
|
-
t.libs = %w
|
86
|
+
t.libs = %w[lib test test/pbench]
|
55
87
|
t.pattern = 'test/pbench/pbench_suite.rb'
|
56
88
|
end
|
57
89
|
|
@@ -2,20 +2,27 @@ require 'pathname'
|
|
2
2
|
|
3
3
|
module FasterPath
|
4
4
|
module MonkeyPatches
|
5
|
+
# rubocop:disable Metrics/CyclomaticComplexity
|
5
6
|
def self._ruby_core_file!
|
6
7
|
::File.class_eval do
|
7
8
|
def self.basename(pth, ext = '')
|
9
|
+
pth = pth.to_path if pth.respond_to? :to_path
|
10
|
+
raise TypeError unless pth.is_a? String
|
8
11
|
FasterPath.basename(pth, ext)
|
9
12
|
end
|
10
13
|
|
11
14
|
def self.extname(pth)
|
15
|
+
pth = pth.to_path if pth.respond_to? :to_path
|
16
|
+
raise TypeError unless pth.is_a? String
|
12
17
|
FasterPath.extname(pth)
|
13
18
|
end
|
14
19
|
|
15
20
|
def self.dirname(pth)
|
21
|
+
pth = pth.to_path if pth.respond_to? :to_path
|
22
|
+
raise TypeError unless pth.is_a? String
|
16
23
|
FasterPath.dirname(pth)
|
17
24
|
end
|
18
|
-
end
|
25
|
+
end
|
19
26
|
end
|
20
27
|
|
21
28
|
def self._ruby_library_pathname!
|
@@ -55,8 +62,8 @@ module FasterPath
|
|
55
62
|
end
|
56
63
|
private_constant :MonkeyPatches
|
57
64
|
|
58
|
-
def self.sledgehammer_everything!
|
59
|
-
MonkeyPatches._ruby_core_file!
|
65
|
+
def self.sledgehammer_everything!(include_file = !!ENV['WITH_REGRESSION'])
|
66
|
+
MonkeyPatches._ruby_core_file! if include_file # SLOW; DON'T AUTO INCLUDE
|
60
67
|
MonkeyPatches._ruby_library_pathname!
|
61
68
|
"CAUTION: Monkey patching effects everything! Be very sure you want this!"
|
62
69
|
end
|
@@ -4,14 +4,20 @@ module FasterPath
|
|
4
4
|
module RefineFile
|
5
5
|
refine File do
|
6
6
|
def self.basename(pth, ext = '')
|
7
|
+
pth = pth.to_path if pth.respond_to? :to_path
|
8
|
+
raise TypeError unless pth.is_a? String
|
7
9
|
FasterPath.basename(pth, ext)
|
8
10
|
end
|
9
11
|
|
10
12
|
def self.extname(pth)
|
13
|
+
pth = pth.to_path if pth.respond_to? :to_path
|
14
|
+
raise TypeError unless pth.is_a? String
|
11
15
|
FasterPath.extname(pth)
|
12
16
|
end
|
13
17
|
|
14
18
|
def self.dirname(pth)
|
19
|
+
pth = pth.to_path if pth.respond_to? :to_path
|
20
|
+
raise TypeError unless pth.is_a? String
|
15
21
|
FasterPath.dirname(pth)
|
16
22
|
end
|
17
23
|
end
|
data/lib/faster_path/version.rb
CHANGED
data/src/basename.rs
CHANGED
@@ -1,17 +1,23 @@
|
|
1
|
+
extern crate array_tool;
|
1
2
|
use libc::c_char;
|
2
3
|
use std::ffi::{CStr, CString};
|
3
4
|
use path_parsing::extract_last_path_segment;
|
5
|
+
use self::array_tool::string::Squeeze;
|
4
6
|
|
5
7
|
#[no_mangle]
|
6
8
|
pub extern "C" fn basename(c_pth: *const c_char, c_ext: *const c_char) -> *const c_char {
|
7
|
-
// TODO: rb_raise on type or encoding errors
|
8
|
-
// TODO: support objects that respond to `to_path`
|
9
9
|
if c_pth.is_null() || c_ext.is_null() {
|
10
10
|
return c_pth;
|
11
11
|
}
|
12
12
|
let pth = unsafe { CStr::from_ptr(c_pth) }.to_str().unwrap();
|
13
13
|
let ext = unsafe { CStr::from_ptr(c_ext) }.to_str().unwrap();
|
14
14
|
|
15
|
+
// Known edge case
|
16
|
+
match &pth.squeeze("/")[..] {
|
17
|
+
"/" => { return CString::new("/").unwrap().into_raw() }
|
18
|
+
_ => {}
|
19
|
+
}
|
20
|
+
|
15
21
|
let mut name = extract_last_path_segment(pth);
|
16
22
|
|
17
23
|
if ext == ".*" {
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: faster_path
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.12
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel P. Clark
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-05-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -211,7 +211,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
211
211
|
version: '0'
|
212
212
|
requirements: []
|
213
213
|
rubyforge_project:
|
214
|
-
rubygems_version: 2.6.
|
214
|
+
rubygems_version: 2.6.11
|
215
215
|
signing_key:
|
216
216
|
specification_version: 4
|
217
217
|
summary: Reimplementation of Pathname for better performance
|