faster_path 0.1.1 → 0.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: db825eef6d7393b150a108c97a668088a0d403e7
4
- data.tar.gz: 54ed210ae569bd548c3f6233e4f11b9d6d678688
3
+ metadata.gz: aa3f9dba549d669279573d0241b6d2c682f79662
4
+ data.tar.gz: aa054bab991c3002071a7ec48d73088294f2b01d
5
5
  SHA512:
6
- metadata.gz: 0425ba04eb0e8579dc55b3d1c8b9a9ab30cbba96d548d7d8f52fe97ea2bcb2c66fa8a092ff1883c260ddefa071beb9453b6a2f99d54b1cf6a529a08837055c22
7
- data.tar.gz: 3c4bcf0268e0ac6e74f487880081e60f367f56b8919e0b12348b9a194374bea01cb9c86c55ca8e5ec4c92a5c57ade1365b1021f23a34d7fb93f60568dace080a
6
+ metadata.gz: ea433ac9b113962f898e229af0a466f0b6c37136fcc709ed9ff0c07659c5515537c3747fffd518a88051c919c08757aada3b1b47f714af42aee15e85eccd9d6a
7
+ data.tar.gz: e813af21a48a83b4b278663a2e2ef4c7ce9874e682651ce3ef529165c923a4a84830c53341d9725757573e75e63ff0e6f1c921d5382d8ed67bd957fbcaf4d7a7
data/.gitignore CHANGED
@@ -10,3 +10,4 @@
10
10
  /tmp/
11
11
  mkmf.log
12
12
  **/*.swp
13
+ **/*.gem
data/Cargo.toml CHANGED
@@ -14,4 +14,4 @@ crate-type = ["dylib"]
14
14
 
15
15
  [dependencies]
16
16
  libc = "0.2.11"
17
- #regex = "0.1.71"
17
+ #regex = "0.1"
@@ -11,9 +11,9 @@ unless find_executable('cargo')
11
11
  END { puts "Exiting..."}
12
12
  end
13
13
 
14
- Dir.chdir('../../') do
14
+ Dir.chdir(File.expand_path("../../", File.dirname(__FILE__))) do
15
15
  system("rake build_src")
16
16
  system("rake clean_src")
17
17
  end
18
18
 
19
- create_makefile('faster_path/dummy')
19
+ create_makefile('faster_path/dummy')
data/faster_path.gemspec CHANGED
@@ -19,9 +19,11 @@ Gem::Specification.new do |spec|
19
19
  spec.extensions << "ext/faster_path/extconf.rb"
20
20
  spec.require_paths = ["lib"]
21
21
 
22
- spec.add_dependency "ffi"
22
+ spec.add_dependency "ffi", "~> 1.9"
23
23
  spec.add_development_dependency "bundler", "~> 1.12"
24
24
  spec.add_development_dependency "method_source", "~> 0.8.2"
25
25
  spec.add_development_dependency "rake", "~> 11.1"
26
26
  spec.add_development_dependency "minitest", "~> 5.8"
27
+ spec.add_development_dependency "minitest-reporters", "~> 1.1"
28
+ spec.add_development_dependency "color_pound_spec_reporter", "~> 0.0.5"
27
29
  end
@@ -1,10 +1,16 @@
1
1
  module FasterPath
2
2
  def self.sledgehammer_everything!
3
+ ::File.class_eval do
4
+ def basename(pth)
5
+ FasterPath.basename(pth)
6
+ end if FasterPath.respond_to? :basename
7
+ end unless true # No need to open class when we're not using it yet
8
+
3
9
  ::Pathname.class_eval do
4
10
  def absolute?
5
11
  FasterPath.absolute?(@path)
6
12
  end
7
-
13
+
8
14
  def chop_basename(pth)
9
15
  FasterPath.chop_basename(pth)
10
16
  end
@@ -1,4 +1,12 @@
1
1
  module FasterPath
2
+ module RefineFile
3
+ refine File do
4
+ def basename(pth)
5
+ FasterPath.basename(pth)
6
+ end if FasterPath.respond_to? :basename
7
+ end
8
+ end unless true # No need to open class when we're not using it yet
9
+
2
10
  module RefinePathname
3
11
  refine Pathname do
4
12
  def absolute?
@@ -1,3 +1,3 @@
1
1
  module FasterPath
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
data/lib/faster_path.rb CHANGED
@@ -26,6 +26,10 @@ module FasterPath
26
26
  Rust.is_blank(str)
27
27
  end
28
28
 
29
+ def self.basename(pth, ext="")
30
+ Rust.basename(pth, ext)
31
+ end unless true # WAY_TOO_SLOW! 5600X slower
32
+
29
33
  # EXAMPLE
30
34
  #def self.one_and_two
31
35
  # Rust.one_and_two.to_a
@@ -52,7 +56,7 @@ module FasterPath
52
56
  attach_function :is_relative, [ :string ], :bool
53
57
  attach_function :is_blank, [ :string ], :bool
54
58
  attach_function :both_are_blank, [ :string, :string ], :bool
55
- attach_function :basename, [ :string ], :string
59
+ #attach_function :basename, [ :string, :string ], :string
56
60
  attach_function :dirname, [ :string ], :string
57
61
  attach_function :basename_for_chop, [ :string ], :string # decoupling behavior
58
62
  attach_function :dirname_for_chop, [ :string ], :string # decoupling behavior
data/src/basename.rs CHANGED
@@ -1,14 +1,21 @@
1
1
  #[no_mangle]
2
- pub extern fn basename(string: *const c_char) -> *const c_char {
3
- let c_str = unsafe {
2
+ pub extern fn basename(string: *const c_char, comp_ext: *const c_char) -> *const c_char {
3
+ let c_str1 = unsafe {
4
4
  assert!(!string.is_null());
5
-
6
5
  CStr::from_ptr(string)
7
6
  };
7
+ let c_str2 = unsafe {
8
+ assert!(!comp_ext.is_null());
9
+ CStr::from_ptr(comp_ext)
10
+ };
11
+ let r_str = str::from_utf8(c_str1.to_bytes()).unwrap();
12
+ let r_str_chomp = str::from_utf8(c_str2.to_bytes()).unwrap();
8
13
 
9
- let r_str = str::from_utf8(c_str.to_bytes()).unwrap();
14
+ let r_str = if !r_str_chomp.is_empty() {
15
+ chomp_pathish_regex(r_str, r_str_chomp)
16
+ } else { r_str.to_string() };
10
17
 
11
- let part = Path::new(r_str).file_name().unwrap_or(OsStr::new("")).to_str();
18
+ let part = Path::new(&r_str[..]).file_name().unwrap_or(OsStr::new("")).to_str();
12
19
 
13
20
  let output = CString::new(format!("{}", part.unwrap())).unwrap();
14
21
  output.into_raw()
data/src/lib.rs CHANGED
@@ -1,10 +1,11 @@
1
- // Copyright 2015-2016 Daniel P. Clark & Other Combinatorics Developers
1
+ // Copyright 2015-2016 Daniel P. Clark & Other FasterPath Developers
2
2
  //
3
3
  // Licensed under the Apache License, Version 2.0, <LICENSE-APACHE or
4
4
  // http://apache.org/licenses/LICENSE-2.0> or the MIT license <LICENSE-MIT or
5
5
  // http://opensource.org/licenses/MIT>, at your option. This file may not be
6
6
  // copied, modified, or distributed except according to those terms.
7
7
  extern crate libc;
8
+ //extern crate regex;
8
9
 
9
10
  use std::path::{Path,MAIN_SEPARATOR};
10
11
  use libc::c_char;
@@ -12,13 +13,18 @@ use std::ffi::{CStr,CString,OsStr};
12
13
  use std::str;
13
14
  use std::mem;
14
15
 
16
+ // Not including regex in current build so chomp_pathish_regex
17
+ // and basename will be excluded in build
18
+ //include!("tools/chomp_pathish_regex.rs");
19
+ //include!("basename.rs");
20
+
21
+
15
22
  include!("ruby_string.rs");
16
23
  include!("ruby_array.rs");
17
24
  include!("is_absolute.rs");
18
25
  include!("is_relative.rs");
19
26
  include!("is_blank.rs");
20
27
  include!("both_are_blank.rs");
21
- include!("basename.rs");
22
28
  include!("dirname.rs");
23
29
  include!("basename_for_chop.rs");
24
30
  include!("dirname_for_chop.rs");
@@ -0,0 +1,38 @@
1
+ fn chomp_pathish_regex(string: &str, globish_string: &str) -> String {
2
+ use regex::Regex;
3
+ // Keep first match of Regex pattern
4
+ // \A(?:(.*)(?:\.{1}\w+)|(.*))\z
5
+ let mut reg_builder: String = String::with_capacity(globish_string.len()+30); // need 29 chars + gs
6
+ reg_builder.push_str(r"\A(?:(.*)");
7
+ if globish_string.len() != 0 {
8
+ let mut gs = globish_string.chars();
9
+ loop {
10
+ match gs.next() {
11
+ Some('.') => { reg_builder.push_str(r"(?:\.{1}") },
12
+ Some('*') => { reg_builder.push_str(r"\w+") },
13
+ Some(x) => { reg_builder.push(x) },
14
+ None => {
15
+ reg_builder.push_str(r")|(.*)");
16
+ break
17
+ },
18
+ }
19
+ }
20
+ }
21
+ reg_builder.push_str(r")\z");
22
+
23
+ let re = Regex::new(&reg_builder[..]).unwrap();
24
+ let caps = re.captures(string).unwrap();
25
+ caps.at(1).unwrap_or(caps.at(0).unwrap_or("")).to_string()
26
+ }
27
+
28
+ #[test]
29
+ fn it_chomps_strings_correctly(){
30
+ assert_eq!(chomp_pathish_regex("",""), "");
31
+ assert_eq!(chomp_pathish_regex("ruby",""), "ruby");
32
+ assert_eq!(chomp_pathish_regex("ruby.rb",".rb"), "ruby");
33
+ assert_eq!(chomp_pathish_regex("ruby.rb",".*"), "ruby");
34
+ assert_eq!(chomp_pathish_regex(".ruby/ruby.rb",".rb"), ".ruby/ruby");
35
+ assert_eq!(chomp_pathish_regex(".ruby/ruby.rb.swp",".rb"), ".ruby/ruby.rb.swp");
36
+ assert_eq!(chomp_pathish_regex(".ruby/ruby.rb.swp",".swp"), ".ruby/ruby.rb");
37
+ assert_eq!(chomp_pathish_regex(".ruby/ruby.rb.swp",".*"), ".ruby/ruby.rb");
38
+ }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: faster_path
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel P. Clark
@@ -14,16 +14,16 @@ dependencies:
14
14
  name: ffi
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: '1.9'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: '1.9'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -80,6 +80,34 @@ dependencies:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: '5.8'
83
+ - !ruby/object:Gem::Dependency
84
+ name: minitest-reporters
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1.1'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '1.1'
97
+ - !ruby/object:Gem::Dependency
98
+ name: color_pound_spec_reporter
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: 0.0.5
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: 0.0.5
83
111
  description: FasterPath is a reimplementation of Pathname for better performance.
84
112
  email:
85
113
  - 6ftdan@gmail.com
@@ -115,6 +143,7 @@ files:
115
143
  - src/lib.rs
116
144
  - src/ruby_array.rs
117
145
  - src/ruby_string.rs
146
+ - src/tools/chomp_pathish_regex.rs
118
147
  homepage: https://github.com/danielpclark/faster_path
119
148
  licenses:
120
149
  - MIT OR Apache-2.0