faster_path 0.2.1 → 0.2.2
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 +1 -0
- data/Cargo.toml +1 -0
- data/README.md +1 -1
- data/Rakefile +1 -1
- data/faster_path.gemspec +1 -1
- data/lib/faster_path/optional/monkeypatches.rb +8 -8
- data/lib/faster_path/optional/refinements.rb +8 -6
- data/lib/faster_path/version.rb +1 -1
- data/lib/faster_path.rb +4 -2
- data/src/helpers.rs +21 -0
- data/src/lib.rs +13 -17
- data/src/pathname.rs +77 -25
- metadata +6 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9d4375a359961afcc5baa61ac3c67569797e7f2f
|
4
|
+
data.tar.gz: b73c128d729d3fd37d5b125f584149466463a83b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 42ab2f7cf2f3d45acf871b1169722905bc7bc7081048fc8ec23d74f5163dc4a25c65247c01ca97edd9cb2202886e8a482a9c40518301a59a216c58ed76125ccd
|
7
|
+
data.tar.gz: 1800e1268585ef4970508199ea494be7aaf5382229dc7d4f1f5486bda8b94c3576144f5afb9783400a555509b8ac485a5d7e1a924049e9baa46ccb8470053958
|
data/Cargo.lock
CHANGED
@@ -3,6 +3,7 @@ name = "faster_path"
|
|
3
3
|
version = "0.0.1"
|
4
4
|
dependencies = [
|
5
5
|
"array_tool 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
6
|
+
"ruby-sys 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)",
|
6
7
|
"ruru 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
7
8
|
]
|
8
9
|
|
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
@@ -98,7 +98,7 @@ Rake::TestTask.new(minitest: :build_lib) do |t|
|
|
98
98
|
t.test_files = FileList['test/**/*_test.rb']
|
99
99
|
end
|
100
100
|
|
101
|
-
task test: [:cargo, :minitest, :lint] do |_t|
|
101
|
+
task test: [:cargo, :minitest, :lint, :pbench] do |_t|
|
102
102
|
exec 'spec/mspec/bin/mspec --format spec core/file/basename core/file/extname core/file/dirname library/pathname'
|
103
103
|
end
|
104
104
|
|
data/faster_path.gemspec
CHANGED
@@ -27,7 +27,7 @@ Gem::Specification.new do |spec|
|
|
27
27
|
spec.add_dependency "bundler", "~> 1.12"
|
28
28
|
spec.add_dependency "rake", "~> 12.0"
|
29
29
|
spec.add_dependency "ffi", "~> 1.9"
|
30
|
-
spec.add_development_dependency "
|
30
|
+
spec.add_development_dependency "read_source", "~> 0.2.6"
|
31
31
|
spec.add_development_dependency "minitest", "~> 5.10"
|
32
32
|
spec.add_development_dependency "minitest-reporters", "~> 1.1"
|
33
33
|
spec.add_development_dependency "color_pound_spec_reporter", "~> 0.0.9"
|
@@ -25,8 +25,6 @@ module FasterPath
|
|
25
25
|
end
|
26
26
|
end
|
27
27
|
end
|
28
|
-
|
29
|
-
# rubocop:disable Metrics/MethodLength
|
30
28
|
def self._ruby_library_pathname!
|
31
29
|
::Pathname.class_eval do
|
32
30
|
def absolute?
|
@@ -38,9 +36,10 @@ module FasterPath
|
|
38
36
|
end
|
39
37
|
private :add_trailing_separator
|
40
38
|
|
41
|
-
|
42
|
-
|
43
|
-
|
39
|
+
# Do NOT remove; waiting for fix in ruru
|
40
|
+
# def children(with_dir=true)
|
41
|
+
# FasterPathname::Public.allocate.send(:children_compat, @path, with_dir)
|
42
|
+
# end if !!ENV['WITH_REGRESSION']
|
44
43
|
|
45
44
|
def chop_basename(pth)
|
46
45
|
FasterPath.chop_basename(pth)
|
@@ -51,9 +50,10 @@ module FasterPath
|
|
51
50
|
FasterPath.directory?(@path)
|
52
51
|
end
|
53
52
|
|
54
|
-
|
55
|
-
|
56
|
-
|
53
|
+
# Do NOT remove; waiting for fix in ruru
|
54
|
+
# def entries
|
55
|
+
# FasterPathname::Public.allocate.send(:entries_compat, @path)
|
56
|
+
# end if !!ENV['WITH_REGRESSION']
|
57
57
|
|
58
58
|
def has_trailing_separator?(pth)
|
59
59
|
FasterPath.has_trailing_separator?(pth)
|
@@ -34,9 +34,10 @@ module FasterPath
|
|
34
34
|
end
|
35
35
|
private :add_trailing_separator
|
36
36
|
|
37
|
-
|
38
|
-
|
39
|
-
|
37
|
+
# Do NOT remove; waiting for fix in ruru
|
38
|
+
# def children(with_dir=true)
|
39
|
+
# FasterPathname::Public.allocate.send(:children_compat, @path, with_dir)
|
40
|
+
# end if !!ENV['WITH_REGRESSION']
|
40
41
|
|
41
42
|
def chop_basename(pth)
|
42
43
|
FasterPath.chop_basename(pth)
|
@@ -47,9 +48,10 @@ module FasterPath
|
|
47
48
|
FasterPath.directory?(@path)
|
48
49
|
end
|
49
50
|
|
50
|
-
|
51
|
-
|
52
|
-
|
51
|
+
# Do NOT remove; waiting for fix in ruru
|
52
|
+
# def entries
|
53
|
+
# FasterPathname::Public.allocate.send(:entries_compat, @path)
|
54
|
+
# end if !!ENV['WITH_REGRESSION']
|
53
55
|
|
54
56
|
def has_trailing_separator?(pth)
|
55
57
|
FasterPath.has_trailing_separator?(pth)
|
data/lib/faster_path/version.rb
CHANGED
data/lib/faster_path.rb
CHANGED
@@ -18,11 +18,13 @@ module FasterPath
|
|
18
18
|
private :absolute?
|
19
19
|
private :add_trailing_separator
|
20
20
|
private :basename
|
21
|
-
private :children
|
21
|
+
private :children # String results
|
22
|
+
private :children_compat # wrap Pathname on each
|
22
23
|
private :chop_basename
|
23
24
|
private :directory?
|
24
25
|
private :dirname
|
25
|
-
private :entries
|
26
|
+
private :entries # String results
|
27
|
+
private :entries_compat # wrap Pathname on each
|
26
28
|
private :extname
|
27
29
|
private :has_trailing_separator?
|
28
30
|
private :plus
|
data/src/helpers.rs
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
extern crate ruby_sys;
|
2
|
+
use self::ruby_sys::string;
|
3
|
+
|
4
|
+
use ruru::{AnyObject, Class};
|
5
|
+
use ruru::types::{c_char, c_long, Value};
|
6
|
+
|
7
|
+
#[inline]
|
8
|
+
pub fn str_to_value(string: &str) -> Value {
|
9
|
+
let str_ptr = string.as_ptr() as *const c_char;
|
10
|
+
let len = string.len() as c_long;
|
11
|
+
|
12
|
+
unsafe { string::rb_str_new(str_ptr, len) }
|
13
|
+
}
|
14
|
+
|
15
|
+
pub fn str_to_any_obj(str_var: &str) -> AnyObject {
|
16
|
+
AnyObject::from(str_to_value(str_var))
|
17
|
+
}
|
18
|
+
|
19
|
+
pub fn class_new(klass: &str, params: Vec<AnyObject>) -> AnyObject {
|
20
|
+
Class::from_existing(klass).new_instance(params)
|
21
|
+
}
|
data/src/lib.rs
CHANGED
@@ -9,6 +9,7 @@ extern crate ruru;
|
|
9
9
|
|
10
10
|
class!(FasterPathname);
|
11
11
|
|
12
|
+
mod helpers;
|
12
13
|
mod pathname;
|
13
14
|
mod basename;
|
14
15
|
mod chop_basename;
|
@@ -26,23 +27,6 @@ methods!(
|
|
26
27
|
FasterPathname,
|
27
28
|
_itself,
|
28
29
|
|
29
|
-
// TOPATH = :to_path
|
30
|
-
|
31
|
-
// SAME_PATHS = if File::FNM_SYSCASE.nonzero?
|
32
|
-
// # Avoid #zero? here because #casecmp can return nil.
|
33
|
-
// proc {|a, b| a.casecmp(b) == 0}
|
34
|
-
// else
|
35
|
-
// proc {|a, b| a == b}
|
36
|
-
// end
|
37
|
-
|
38
|
-
// if File::ALT_SEPARATOR
|
39
|
-
// SEPARATOR_LIST = "#{Regexp.quote File::ALT_SEPARATOR}#{Regexp.quote File::SEPARATOR}"
|
40
|
-
// SEPARATOR_PAT = /[#{SEPARATOR_LIST}]/
|
41
|
-
// else
|
42
|
-
// SEPARATOR_LIST = "#{Regexp.quote File::SEPARATOR}"
|
43
|
-
// SEPARATOR_PAT = /#{Regexp.quote File::SEPARATOR}/
|
44
|
-
// end
|
45
|
-
|
46
30
|
fn pub_add_trailing_separator(pth: RString) -> RString {
|
47
31
|
pathname::pn_add_trailing_separator(pth)
|
48
32
|
}
|
@@ -61,6 +45,10 @@ methods!(
|
|
61
45
|
pathname::pn_children(pth, with_dir)
|
62
46
|
}
|
63
47
|
|
48
|
+
fn pub_children_compat(pth: RString, with_dir: Boolean) -> Array {
|
49
|
+
pathname::pn_children_compat(pth, with_dir)
|
50
|
+
}
|
51
|
+
|
64
52
|
fn pub_chop_basename(pth: RString) -> Array {
|
65
53
|
pathname::pn_chop_basename(pth)
|
66
54
|
}
|
@@ -91,10 +79,16 @@ methods!(
|
|
91
79
|
// pathname::pn_each_filename(pth)
|
92
80
|
// }
|
93
81
|
|
82
|
+
// pub_entries returns an array of String objects
|
94
83
|
fn pub_entries(pth: RString) -> Array {
|
95
84
|
pathname::pn_entries(pth)
|
96
85
|
}
|
97
86
|
|
87
|
+
// pub_entries_compat returns an array of Pathname objects
|
88
|
+
fn pub_entries_compat(pth: RString) -> Array {
|
89
|
+
pathname::pn_entries_compat(pth)
|
90
|
+
}
|
91
|
+
|
98
92
|
fn pub_extname(pth: RString) -> RString {
|
99
93
|
pathname::pn_extname(pth)
|
100
94
|
}
|
@@ -157,10 +151,12 @@ pub extern "C" fn Init_faster_pathname(){
|
|
157
151
|
itself.def("add_trailing_separator", pub_add_trailing_separator);
|
158
152
|
itself.def("basename", pub_basename);
|
159
153
|
itself.def("children", pub_children);
|
154
|
+
itself.def("children_compat", pub_children_compat);
|
160
155
|
itself.def("chop_basename", pub_chop_basename);
|
161
156
|
itself.def("directory?", pub_is_directory);
|
162
157
|
itself.def("dirname", pub_dirname);
|
163
158
|
itself.def("entries", pub_entries);
|
159
|
+
itself.def("entries_compat", pub_entries_compat);
|
164
160
|
itself.def("extname", pub_extname);
|
165
161
|
itself.def("has_trailing_separator?", pub_has_trailing_separator);
|
166
162
|
itself.def("plus", pub_plus);
|
data/src/pathname.rs
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
use helpers::*;
|
1
2
|
use basename;
|
2
3
|
use chop_basename;
|
3
4
|
use dirname;
|
@@ -9,7 +10,10 @@ use ruru::{RString, Boolean, Array};
|
|
9
10
|
use std::path::{MAIN_SEPARATOR,Path};
|
10
11
|
use std::fs;
|
11
12
|
|
12
|
-
|
13
|
+
type MaybeString = Result<ruru::RString, ruru::result::Error>;
|
14
|
+
type MaybeBoolean = Result<ruru::Boolean, ruru::result::Error>;
|
15
|
+
|
16
|
+
pub fn pn_add_trailing_separator(pth: MaybeString) -> RString {
|
13
17
|
let p = pth.ok().unwrap();
|
14
18
|
let x = format!("{}{}", p.to_str(), "a");
|
15
19
|
match x.rsplit_terminator(MAIN_SEPARATOR).next() {
|
@@ -18,7 +22,7 @@ pub fn pn_add_trailing_separator(pth: Result<ruru::RString, ruru::result::Error>
|
|
18
22
|
}
|
19
23
|
}
|
20
24
|
|
21
|
-
pub fn pn_is_absolute(pth:
|
25
|
+
pub fn pn_is_absolute(pth: MaybeString) -> Boolean {
|
22
26
|
Boolean::new(match pth.ok().unwrap_or(RString::new("")).to_str().chars().next() {
|
23
27
|
Some(c) => c == MAIN_SEPARATOR,
|
24
28
|
None => false
|
@@ -27,7 +31,7 @@ pub fn pn_is_absolute(pth: Result<ruru::RString, ruru::result::Error>) -> Boolea
|
|
27
31
|
|
28
32
|
// pub fn pn_ascend(){}
|
29
33
|
|
30
|
-
pub fn pn_basename(pth:
|
34
|
+
pub fn pn_basename(pth: MaybeString, ext: MaybeString) -> RString {
|
31
35
|
RString::new(
|
32
36
|
&basename::basename(
|
33
37
|
pth.ok().unwrap_or(RString::new("")).to_str(),
|
@@ -36,7 +40,7 @@ pub fn pn_basename(pth: Result<ruru::RString, ruru::result::Error>, ext: Result<
|
|
36
40
|
)
|
37
41
|
}
|
38
42
|
|
39
|
-
pub fn pn_children(pth:
|
43
|
+
pub fn pn_children(pth: MaybeString, with_dir: MaybeBoolean) -> Array {
|
40
44
|
let rstring = pth.ok().unwrap_or(RString::new("."));
|
41
45
|
let val = rstring.to_str();
|
42
46
|
let mut with_directory = with_dir.ok().unwrap_or(Boolean::new(true)).to_bool();
|
@@ -63,7 +67,40 @@ pub fn pn_children(pth: Result<ruru::RString, ruru::result::Error>, with_dir: Re
|
|
63
67
|
arr
|
64
68
|
}
|
65
69
|
|
66
|
-
pub fn
|
70
|
+
pub fn pn_children_compat(pth: MaybeString, with_dir: MaybeBoolean) -> Array {
|
71
|
+
let rstring = pth.ok().unwrap_or(RString::new("."));
|
72
|
+
let val = rstring.to_str();
|
73
|
+
let mut with_directory = with_dir.ok().unwrap_or(Boolean::new(true)).to_bool();
|
74
|
+
if val == "." {
|
75
|
+
with_directory = false;
|
76
|
+
}
|
77
|
+
let mut arr = Array::new();
|
78
|
+
|
79
|
+
if let Ok(entries) = fs::read_dir(val) {
|
80
|
+
for entry in entries {
|
81
|
+
if with_directory {
|
82
|
+
match entry {
|
83
|
+
Ok(v) => { arr.push(
|
84
|
+
class_new("Pathname", vec![str_to_any_obj(v.path().to_str().unwrap())])
|
85
|
+
);
|
86
|
+
},
|
87
|
+
_ => {}
|
88
|
+
};
|
89
|
+
} else {
|
90
|
+
match entry {
|
91
|
+
Ok(v) => { arr.push(
|
92
|
+
class_new("Pathname", vec![str_to_any_obj(v.file_name().to_str().unwrap())])
|
93
|
+
);
|
94
|
+
},
|
95
|
+
_ => {}
|
96
|
+
};
|
97
|
+
}
|
98
|
+
}
|
99
|
+
}
|
100
|
+
arr
|
101
|
+
}
|
102
|
+
|
103
|
+
pub fn pn_chop_basename(pth: MaybeString) -> Array {
|
67
104
|
let mut arr = Array::with_capacity(2);
|
68
105
|
let results = chop_basename::chop_basename(pth.ok().unwrap_or(RString::new("")).to_str());
|
69
106
|
match results {
|
@@ -76,17 +113,17 @@ pub fn pn_chop_basename(pth: Result<ruru::RString, ruru::result::Error>) -> Arra
|
|
76
113
|
}
|
77
114
|
}
|
78
115
|
|
79
|
-
// pub fn pn_cleanpath(pth:
|
116
|
+
// pub fn pn_cleanpath(pth: MaybeString){}
|
80
117
|
|
81
|
-
// pub fn pn_cleanpath_aggressive(pth:
|
118
|
+
// pub fn pn_cleanpath_aggressive(pth: MaybeString){}
|
82
119
|
|
83
|
-
// pub fn pn_cleanpath_conservative(pth:
|
120
|
+
// pub fn pn_cleanpath_conservative(pth: MaybeString){}
|
84
121
|
|
85
|
-
// pub fn pn_del_trailing_separator(pth:
|
122
|
+
// pub fn pn_del_trailing_separator(pth: MaybeString){}
|
86
123
|
|
87
124
|
// pub fn pn_descend(){}
|
88
125
|
|
89
|
-
pub fn pn_is_directory(pth:
|
126
|
+
pub fn pn_is_directory(pth: MaybeString) -> Boolean {
|
90
127
|
Boolean::new(
|
91
128
|
Path::new(
|
92
129
|
pth.ok().unwrap_or(RString::new("")).to_str()
|
@@ -94,7 +131,7 @@ pub fn pn_is_directory(pth: Result<ruru::RString, ruru::result::Error>) -> Boole
|
|
94
131
|
)
|
95
132
|
}
|
96
133
|
|
97
|
-
pub fn pn_dirname(pth:
|
134
|
+
pub fn pn_dirname(pth: MaybeString) -> RString {
|
98
135
|
RString::new(
|
99
136
|
&dirname::dirname(
|
100
137
|
pth.ok().unwrap_or(RString::new("")).to_str()
|
@@ -104,11 +141,11 @@ pub fn pn_dirname(pth: Result<ruru::RString, ruru::result::Error>) -> RString {
|
|
104
141
|
|
105
142
|
// pub fn pn_each_child(){}
|
106
143
|
|
107
|
-
// pub fn pn_each_filename(pth:
|
144
|
+
// pub fn pn_each_filename(pth: MaybeString) -> NilClass {
|
108
145
|
// NilClass::new()
|
109
146
|
// }
|
110
147
|
|
111
|
-
pub fn pn_entries(pth:
|
148
|
+
pub fn pn_entries(pth: MaybeString) -> Array {
|
112
149
|
let files = fs::read_dir(pth.ok().unwrap_or(RString::new("")).to_str()).unwrap();
|
113
150
|
let mut arr = Array::new();
|
114
151
|
|
@@ -123,15 +160,30 @@ pub fn pn_entries(pth: Result<ruru::RString, ruru::result::Error>) -> Array {
|
|
123
160
|
arr
|
124
161
|
}
|
125
162
|
|
126
|
-
pub fn
|
163
|
+
pub fn pn_entries_compat(pth: MaybeString) -> Array {
|
164
|
+
let files = fs::read_dir(pth.ok().unwrap_or(RString::new("")).to_str()).unwrap();
|
165
|
+
let mut arr = Array::new();
|
166
|
+
|
167
|
+
arr.push(class_new("Pathname", vec![str_to_any_obj(&"."[..])]));
|
168
|
+
arr.push(class_new("Pathname", vec![str_to_any_obj(&".."[..])]));
|
169
|
+
|
170
|
+
for file in files {
|
171
|
+
let file_name_str = file.unwrap().file_name().into_string().unwrap();
|
172
|
+
arr.push(class_new("Pathname", vec![str_to_any_obj(&file_name_str[..])]));
|
173
|
+
}
|
174
|
+
|
175
|
+
arr
|
176
|
+
}
|
177
|
+
|
178
|
+
pub fn pn_extname(pth: MaybeString) -> RString {
|
127
179
|
RString::new(
|
128
180
|
&extname::extname(pth.ok().unwrap_or(RString::new("")).to_str())[..]
|
129
181
|
)
|
130
182
|
}
|
131
183
|
|
132
|
-
// pub fn pn_find(pth:
|
184
|
+
// pub fn pn_find(pth: MaybeString ,ignore_error: Boolean){}
|
133
185
|
|
134
|
-
pub fn pn_has_trailing_separator(pth:
|
186
|
+
pub fn pn_has_trailing_separator(pth: MaybeString) -> Boolean {
|
135
187
|
let v = pth.ok().unwrap_or(RString::new(""));
|
136
188
|
match chop_basename::chop_basename(v.to_str()) {
|
137
189
|
Some((a,b)) => {
|
@@ -143,22 +195,22 @@ pub fn pn_has_trailing_separator(pth: Result<ruru::RString, ruru::result::Error>
|
|
143
195
|
|
144
196
|
// pub fn pn_join(args: Array){}
|
145
197
|
|
146
|
-
// pub fn pn_mkpath(pth:
|
198
|
+
// pub fn pn_mkpath(pth: MaybeString) -> NilClass {
|
147
199
|
// NilClass::new()
|
148
200
|
// }
|
149
201
|
|
150
|
-
// pub fn pn_is_mountpoint(pth:
|
202
|
+
// pub fn pn_is_mountpoint(pth: MaybeString){}
|
151
203
|
|
152
|
-
// pub fn pn_parent(pth:
|
204
|
+
// pub fn pn_parent(pth: MaybeString){}
|
153
205
|
|
154
206
|
// also need impl +
|
155
|
-
pub fn pn_plus(pth1:
|
207
|
+
pub fn pn_plus(pth1: MaybeString, pth2: MaybeString) -> RString {
|
156
208
|
RString::new(&plus::plus_paths(pth1.ok().unwrap().to_str(), pth2.ok().unwrap().to_str())[..])
|
157
209
|
}
|
158
210
|
|
159
|
-
// pub fn pn_prepend_prefix(prefix:
|
211
|
+
// pub fn pn_prepend_prefix(prefix: MaybeString, relpath: MaybeString){}
|
160
212
|
|
161
|
-
pub fn pn_is_relative(pth:
|
213
|
+
pub fn pn_is_relative(pth: MaybeString) -> Boolean {
|
162
214
|
Boolean::new(
|
163
215
|
match pth.ok().unwrap_or(RString::new(&MAIN_SEPARATOR.to_string()[..])).to_str().chars().next() {
|
164
216
|
Some(c) => c != MAIN_SEPARATOR,
|
@@ -167,13 +219,13 @@ pub fn pn_is_relative(pth: Result<ruru::RString, ruru::result::Error>) -> Boolea
|
|
167
219
|
)
|
168
220
|
}
|
169
221
|
|
170
|
-
// pub fn pn_root(pth:
|
222
|
+
// pub fn pn_root(pth: MaybeString){}
|
171
223
|
|
172
|
-
// pub fn pn_split_names(pth:
|
224
|
+
// pub fn pn_split_names(pth: MaybeString){}
|
173
225
|
|
174
226
|
// pub fn pn_relative_path_from(){}
|
175
227
|
|
176
|
-
// pub fn pn_rmtree(pth:
|
228
|
+
// pub fn pn_rmtree(pth: MaybeString) -> NilClass {
|
177
229
|
// NilClass::new()
|
178
230
|
// }
|
179
231
|
|
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.2.
|
4
|
+
version: 0.2.2
|
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-09-
|
11
|
+
date: 2017-09-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -53,19 +53,19 @@ dependencies:
|
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '1.9'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: read_source
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 0.
|
61
|
+
version: 0.2.6
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: 0.
|
68
|
+
version: 0.2.6
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: minitest
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -177,6 +177,7 @@ files:
|
|
177
177
|
- src/chop_basename.rs
|
178
178
|
- src/dirname.rs
|
179
179
|
- src/extname.rs
|
180
|
+
- src/helpers.rs
|
180
181
|
- src/lib.rs
|
181
182
|
- src/path_parsing.rs
|
182
183
|
- src/pathname.rs
|