akr
78dc3da299
Pathname#relative_path_from uses is_a?
...
I reconsidered because simpler code would have better maintainablity.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66431 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-18 03:09:54 +00:00
akr
4cf828632f
Pathname#relative_path_from compatible with mock.
...
[Fix GH-2049]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66416 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-16 12:26:52 +00:00
marcandre
dde0e30c2d
Pathname: Have #relative_path_from accept String argument.
...
[Fix GH-1975]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65706 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-13 06:20:06 +00:00
nobu
74325360d3
Pathname: Simplified Pathname#mountpoint?
...
Removed unnecessary comparison in mountpoint?
[Fix GH-1927]
From: John Whitson <john.whitson@gmail.com>
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64273 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-08-10 12:04:24 +00:00
watson1978
ccc2576514
Improve Pathname performance
...
If it will not use special variables (like $1, $&, $`...),
it can improve the performance by using Regexp#match? instead of Regexp#=~.
Because Regexp#=~ will generate the objects to special variables by pattern matching.
This patch will replace Regexp#=~ without special variables to Regexp#match?.
(Excludes https://github.com/ruby/ruby/blob/trunk/ext/pathname/lib/pathname.rb#L144-L153 )
[Fix GH-1836] [ruby-core:86093] [Bug #14599 ]
## Environment
* OS : Ubuntu 17.10
* Compiler : gcc version 7.2.0
* CPU : Intel(R) Core(TM) i5-3210M CPU @ 2.50GHz
* Memory : 16 GB
## TL;DR
| Before | After | Speed up
--------------------------- | ------ | ------ | --------
Pathname#absolute? | 142836 | 198487 | 39.0%
Pathname#cleanpath | 60706 | 79415 | 30.8%
Pathname#root? | 603806 | 759157 | 25.7%
Pathname#absolute? | 142592 | 197859 | 38.8%
Pathname#each_filename | 115600 | 152982 | 32.3%
Pathname#ascend | 50494 | 63606 | 26.0%
Pathname#+ | 100550 | 130372 | 29.7%
Pathname#join | 46673 | 60994 | 30.7%
Pathname#relative_path_from | 28362 | 37494 | 32.2%
## Before
```
Calculating -------------------------------------
Pathname#absolute? 142.836k (± 0.1%) i/s - 722.304k in 5.056884s
Pathname#cleanpath 60.706k (± 0.1%) i/s - 306.764k in 5.053305s
Pathname#root? 603.806k (± 0.3%) i/s - 3.062M in 5.071696s
Pathname#absolute? 142.592k (± 0.1%) i/s - 720.846k in 5.055301s
Pathname#each_filename
115.600k (± 0.1%) i/s - 586.818k in 5.076292s
Pathname#ascend 50.494k (± 0.1%) i/s - 255.301k in 5.056049s
Pathname#+ 100.550k (± 0.1%) i/s - 509.630k in 5.068433s
Pathname#join 46.673k (± 0.1%) i/s - 236.433k in 5.065696s
Pathname#relative_path_from
28.362k (± 0.0%) i/s - 143.728k in 5.067640s
```
## After
```
Calculating -------------------------------------
Pathname#absolute? 198.487k (± 0.1%) i/s - 995.665k in 5.016272s
Pathname#cleanpath 79.415k (± 0.1%) i/s - 404.406k in 5.092344s
Pathname#root? 759.157k (± 0.0%) i/s - 3.800M in 5.005072s
Pathname#absolute? 197.859k (± 0.1%) i/s - 995.720k in 5.032494s
Pathname#each_filename
152.982k (± 0.1%) i/s - 775.555k in 5.069607s
Pathname#ascend 63.606k (± 0.0%) i/s - 320.862k in 5.044560s
Pathname#+ 130.372k (± 0.1%) i/s - 660.856k in 5.068991s
Pathname#join 60.994k (± 0.1%) i/s - 305.068k in 5.001626s
Pathname#relative_path_from
37.494k (± 0.4%) i/s - 189.124k in 5.044146s
```
## Benchmark code
```ruby
require 'pathname'
require 'benchmark/ips'
Benchmark.ips do |x|
root = Pathname.new('/')
path1 = Pathname.new('/path/to/some/file1.rb')
path2 = Pathname.new('/path/to/some/file2.rb')
x.report("Pathname#absolute?") do
path1.absolute?
end
x.report("Pathname#cleanpath") do
Pathname.new('/path/to/some/file.rb').cleanpath
end
x.report("Pathname#root?") do
path1.root?
end
x.report("Pathname#absolute?") do
path1.absolute?
end
x.report("Pathname#each_filename") do
path1.each_filename { |file| }
end
x.report("Pathname#ascend") do
path1.ascend { |path| }
end
x.report("Pathname#+") do
path1 + path2
end
x.report("Pathname#join") do
path1.join("../file3.rb")
end
x.report("Pathname#relative_path_from") do
path1.relative_path_from(root)
end
end
```
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62740 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-03-13 09:15:10 +00:00
nobu
4f8107a4ba
disable rdoc for internal constants [ci skip]
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59484 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-08-03 08:11:57 +00:00
nobu
2875337533
pathname.rb: UNC root pathname needs a separator
...
* ext/pathname/lib/pathname.rb (Pathname#plus): UNC root pathname
needs a separator. File.basename returns "/" on UNC root, as
well as sole drive letter, even if it does not end with a
separator. [ruby-core:80900] [Bug #13515 ]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59102 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-06-16 14:44:01 +00:00
akr
68ebbbfebe
* lib/open-uri.rb: Remove indicator for "frozen_string_literal: true".
...
* lib/pp.rb: Ditto.
* lib/prettyprint.rb: Ditto.
* lib/resolv.rb: Ditto.
* lib/securerandom.rb: Ditto.
* lib/tmpdir.rb: Ditto.
* lib/unicode_normalize/tables.rb: Ditto.
* test/net/ftp/test_buffered_socket.rb: Ditto.
* test/net/ftp/test_mlsx_entry.rb: Ditto.
* test/open-uri/test_open-uri.rb: Ditto.
* test/open-uri/test_ssl.rb: Ditto.
* test/pathname/test_pathname.rb: Ditto.
* test/test_pp.rb: Ditto.
* test/test_prettyprint.rb: Ditto.
* tool/transcode-tblgen.rb: Ditto.
* ext/pathname/lib/pathname.rb: Ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52526 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-10 11:48:14 +00:00
akr
36ca18b847
Put an line before "frozen_string_literal: true" for emacs.
...
https://bugs.ruby-lang.org/issues/8976#note-49
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52052 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-05 22:22:56 +00:00
akr
7ab70c3548
* ext/pathname/lib/pathname.rb: freeze string literals for
...
reduced object allocation.
patch by schneems.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52023 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-04 13:05:32 +00:00
akr
8bb581f8dd
* ext/pathname/lib/pathname.rb (descend): Blockless form supported.
...
(ascend): Ditto.
[ruby-core:68820] [Feature #11052 ] Patch by Piotr Szotkowski.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50897 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-14 15:14:46 +00:00
hsbt
180293ac89
* ext/pathname/lib/pathname.rb: Remove condition of RUBY_VERSION <= 1.9.
...
[Feature #11082 ]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50490 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-05-14 06:54:22 +00:00
nobu
8ae989f6b6
pathname.rb: fix a Pathname#relative_path_from crash on
...
* ext/pathname/lib/pathname.rb (SAME_PATHS):
Pathname#relative_path_from uses String#casecmp to compare strings
on case-insensitive filesystem platforms (e.g., Windows). This can
return nil for strings with different encodings, and the code
previously assumed that it always returned a Fixnum. [Fix GH-713]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47591 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-09-15 01:29:21 +00:00
akr
edacb3a94a
* ext/pathname/lib/pathname.rb (cleanpath_aggressive): make all
...
separators File::SEPARATOR from File::ALT_SEPARATOR.
Reported by Daniel Rikowski.
Fixed by Nobuyoshi Nakada. [Bug #9618 ]
* ext/pathname/lib/pathname.rb (cleanpath_conservative): ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45827 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-05-05 13:09:58 +00:00
akr
391fc2eeec
* ext/pathname/lib/pathname.rb (Pathname#/): Aliased to Pathname#+.
...
Suggested by Alexey Muranov. [ruby-core:61432] [Feature #9625 ]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45826 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-05-05 12:49:27 +00:00
kazu
60d4fc9f68
Fix error with empty args.
...
* ext/pathname/lib/pathname.rb (Pathname#join): Fix error with
empty args. Reported by ko1 via IRC.
* test/pathname/test_pathname.rb (TestPathname#test_join): Add the
test for above case.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45499 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-04-02 02:51:20 +00:00
kazu
6df5f314ac
remove unnecessary unshift
...
* ext/pathname/lib/pathname.rb (Pathname#join): remove unnecessary unshift.
* test/pathname/test_pathname.rb (TestPathname#test_join): add tests.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45407 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-03-25 14:42:36 +00:00
ktsj
df0991f34b
* ext/pathname/lib/pathname.rb (Pathname#find): add "ignore_error"
...
keyword argument defaulted to true as well as Find#find.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45269 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-03-04 15:44:53 +00:00
drbrain
d5ba73e0d9
* ext/pathname/lib/pathname.rb: Hide private methods from RDoc.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38310 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-12-11 06:25:56 +00:00
zzak
b5c38622b1
* ext/pathname/lib/pathname.rb: Documentation for Pathname.
...
* ext/pathname/pathname.c: ditto.
[Bug #6947 ] [ruby-core:47354]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36950 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-09-12 13:54:08 +00:00
akr
54f282c2c4
* lib/pathname.rb (Pathname#find): return an enumerator if
...
no block is given.
* test/pathname/test_pathname.rb: add tests for above.
[ruby-dev:44797] [Feature #5572 ]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33792 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-11-19 12:52:37 +00:00
ktsj
c3749b6a6d
* ext/pathname/lib/pathname.rb, ext/tk/lib/multi-tk.rb,
...
ext/tk/sample/demos-en/widget, lib/benchmark.rb, lib/irb/cmd/fork.rb,
lib/mkmf.rb, lib/net/ftp.rb, lib/net/smtp.rb, lib/open3.rb,
lib/pstore.rb, lib/rexml/element.rb, lib/rexml/light/node.rb,
lib/rinda/tuplespace.rb, lib/rss/maker/base.rb,
lib/rss/maker/entry.rb, lib/scanf.rb, lib/set.rb, lib/shell.rb,
lib/shell/command-processor.rb, lib/shell/process-controller.rb,
lib/shell/system-command.rb, lib/uri/common.rb: remove unused block
arguments to avoid creating Proc objects.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33638 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-11-05 07:37:47 +00:00
drbrain
ca96541149
* ext/pathname/lib/pathname.rb: Fix typos and grammar mistakes. Patch
...
by Luke Gruber. [#5203 ]
* ext/pty/lib/expect.rb: ditto
* lib/mathn.rb: ditto
* lib/net/http.rb: ditto
* lib/open-uri.rb: ditto
* lib/ostruct.rb: ditto
* lib/tempfile.rb: ditto
* lib/thread.rb: ditto
* lib/weakref.rb: ditto
* sample/webrick/httpproxy.rb: ditto
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33086 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-08-26 22:22:37 +00:00
akr
a5a51abfc5
* ext/pathname/pathname.c (path_f_pathname): Pathname() translated
...
from pathname.rb.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29310 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-09-21 15:01:11 +00:00
akr
c7caeda5ed
* ext/pathname/pathname.c (Init_pathname): Pathname#=~ undefinition
...
translated from pathname.rb.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29305 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-09-20 02:26:30 +00:00
akr
f9f7376848
* ext/pathname/pathname.c (path_unlink): Pathname#unlink and
...
Pathname#delete translated from pathname.rb.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29296 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-09-18 22:49:34 +00:00
akr
9dffbcfc09
* ext/pathname/pathname.c (path_each_entry): Pathname#each_entry
...
translated from pathname.rb.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29292 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-09-18 11:10:36 +00:00
akr
08c467330b
* ext/pathname/pathname.c (path_opendir): Pathname#opendir translated
...
from pathname.rb.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29277 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-09-16 14:48:20 +00:00
akr
d0e9ac151e
* ext/pathname/pathname.c (path_rmdir): Pathname#rmdir translated
...
from pathname.rb.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29267 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-09-15 21:08:19 +00:00
akr
363ed27fa7
* ext/pathname/pathname.c (path_mkdir): Pathname#mkdir translated
...
from pathname.rb.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29261 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-09-15 12:07:43 +00:00
akr
f84f164413
* ext/pathname/pathname.c (path_entries): Pathname#entries translated
...
from pathname.rb.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29253 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-09-14 22:23:09 +00:00
akr
bf77099923
* ext/pathname/pathname.c (path_s_getwd): Pathname.getwd and
...
Pathname.pwd translated from pathname.rb.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29248 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-09-14 11:18:37 +00:00
akr
6d9b5fdffc
* ext/pathname/pathname.c (path_s_glob): Pathname.glob translated
...
from pathname.rb.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29247 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-09-13 20:14:04 +00:00
akr
878747437c
* ext/pathname/pathname.c (path_zero_p): Pathname#zero? translated
...
from pathname.rb.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29244 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-09-13 11:48:58 +00:00
akr
a335ded4c9
* ext/pathname/pathname.c (path_writable_real_p):
...
Pathname#writable_real? translated from pathname.rb.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29235 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-09-12 21:46:04 +00:00
akr
5cc5e1c5be
* ext/pathname/pathname.c (path_world_writable_p):
...
Pathname#world_writable? translated from pathname.rb.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29233 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-09-12 10:31:01 +00:00
akr
a42f6882c8
* ext/pathname/pathname.c (path_writable_p): Pathname#writable?
...
translated from pathname.rb.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29232 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-09-12 00:26:19 +00:00
akr
0f070a1f4b
* ext/pathname/pathname.c (path_symlink_p): Pathname#symlink?
...
translated from pathname.rb.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29220 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-09-10 21:54:24 +00:00
akr
1a8a6580e9
* ext/pathname/pathname.c (path_sticky_p): Pathname#sticky? translated
...
from pathname.rb.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29219 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-09-10 14:04:07 +00:00
akr
e7ab96f6ed
* ext/pathname/pathname.c (path_size_p): Pathname#size? translated from
...
pathname.rb.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29208 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-09-09 22:04:22 +00:00
akr
eb0c31b1ad
* ext/pathname/pathname.c (path_size): Pathname#size translated from
...
pathname.rb.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29204 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-09-09 13:43:37 +00:00
akr
bafa881327
* ext/pathname/pathname.c (path_setgid_p): Pathname#setgid? translated
...
from pathname.rb.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29196 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-09-08 11:57:34 +00:00
akr
c37ec5c9d2
* ext/pathname/pathname.c (path_setuid_p): Pathname#setuid? translated
...
from pathname.rb.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29194 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-09-07 21:26:33 +00:00
akr
b9f2ea847e
* ext/pathname/pathname.c (path_readable_real_p):
...
Pathname#readable_real? translated from pathname.rb.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29192 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-09-07 12:04:17 +00:00
akr
746f85beb4
* ext/pathname/pathname.c (path_world_readable_p):
...
Pathname#world_readable? translated from pathname.rb.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29191 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-09-06 14:08:08 +00:00
akr
efe86e6c0d
* ext/pathname/pathname.c (path_readable_p): Pathname#readable?
...
translated from pathname.rb.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29184 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-09-05 21:17:54 +00:00
akr
5e620bdd65
* ext/pathname/pathname.c (path_owned_p): Pathname#owned?
...
translated from pathname.rb.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29182 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-09-05 14:03:06 +00:00
akr
0c5b7fd01b
* ext/pathname/pathname.c (path_socket_p): Pathname#socket?
...
translated from pathname.rb.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29176 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-09-03 14:51:51 +00:00
akr
163b4dee96
* ext/pathname/pathname.c (path_pipe_p): Pathname#pipe?
...
translated from pathname.rb.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29170 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-09-02 21:17:31 +00:00
akr
d878c51357
* ext/pathname/pathname.c (path_file_p): Pathname#file?
...
translated from pathname.rb.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29168 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-09-02 13:11:13 +00:00