recls-ruby 2.8.2 → 2.11.0
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/README.md +57 -10
- data/examples/find_files_and_directories.md +77 -0
- data/examples/find_files_and_directories.rb +19 -0
- data/examples/find_files_and_directories.recursive.md +304 -0
- data/examples/find_files_and_directories.recursive.rb +19 -0
- data/examples/show_hidden_files.md +39 -0
- data/examples/show_hidden_files.rb +2 -2
- data/examples/show_readonly_files.md +35 -0
- data/examples/show_readonly_files.rb +2 -2
- data/lib/recls.rb +2 -0
- data/lib/recls/api.rb +70 -3
- data/lib/recls/combine_paths_1.rb +70 -0
- data/lib/recls/combine_paths_2plus.rb +76 -0
- data/lib/recls/entry.rb +40 -4
- data/lib/recls/file_search.rb +48 -14
- data/lib/recls/flags.rb +21 -4
- data/lib/recls/foreach.rb +45 -6
- data/lib/recls/obsolete.rb +119 -0
- data/lib/recls/recls.rb +27 -56
- data/lib/recls/stat.rb +96 -24
- data/lib/recls/util.rb +74 -23
- data/lib/recls/version.rb +10 -4
- data/lib/recls/ximpl/os.rb +29 -15
- data/lib/recls/ximpl/unix.rb +29 -16
- data/lib/recls/ximpl/util.rb +141 -39
- data/lib/recls/ximpl/windows.rb +56 -25
- data/test/fixtures/readonly/file-1 +0 -0
- data/test/fixtures/readonly/file-2 +0 -0
- data/test/scratch/test_display_parts.rb +9 -9
- data/test/scratch/test_entry.rb +11 -9
- data/test/scratch/test_files_and_directories.rb +17 -14
- data/test/scratch/test_foreach.rb +0 -3
- data/test/scratch/test_module_function.rb +10 -10
- data/test/scratch/test_pattern_arrays.rb +32 -0
- data/test/scratch/test_show_dev_and_ino.rb +1 -1
- data/test/scratch/test_show_hidden.rb +3 -3
- data/test/unit/tc_recls_util.rb +6 -0
- data/test/unit/tc_recls_ximpl_util.rb +156 -101
- data/test/unit/ts_all.rb +11 -9
- metadata +36 -11
@@ -0,0 +1,19 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
|
3
|
+
$:.unshift File.join(File.dirname(__FILE__), '..', 'lib')
|
4
|
+
|
5
|
+
require 'recls'
|
6
|
+
|
7
|
+
puts "files under current directory:"
|
8
|
+
Recls.file_rsearch(nil, nil, Recls::FILES).each { |fe| puts "\t#{fe.search_relative_path}" }
|
9
|
+
puts
|
10
|
+
|
11
|
+
puts "directories under current directory:"
|
12
|
+
Recls.file_rsearch(nil, nil, Recls::DIRECTORIES | Recls::MARK_DIRECTORIES).each { |fe| puts "\t#{fe.search_relative_path}" }
|
13
|
+
puts
|
14
|
+
|
15
|
+
puts "files and directories under current directory:"
|
16
|
+
Recls.file_rsearch(nil, nil, Recls::DIRECTORIES | Recls::FILES | Recls::MARK_DIRECTORIES).each { |fe| puts "\t#{fe.search_relative_path}" }
|
17
|
+
puts
|
18
|
+
|
19
|
+
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# recls.Ruby Example - **show_hidden_files**
|
2
|
+
|
3
|
+
## Summary
|
4
|
+
|
5
|
+
TBC
|
6
|
+
|
7
|
+
## Source
|
8
|
+
|
9
|
+
```ruby
|
10
|
+
#! /usr/bin/env ruby
|
11
|
+
|
12
|
+
$:.unshift File.join(File.dirname(__FILE__), '..', 'lib')
|
13
|
+
|
14
|
+
require 'recls'
|
15
|
+
|
16
|
+
# To find only hidden files, need to:
|
17
|
+
#
|
18
|
+
# 1. Ensure that they are returned in search, by including Recls::SHOW_HIDDEN
|
19
|
+
# 2. Filter returned entries by hidden? attribute
|
20
|
+
Recls.file_rsearch('.', Recls::WILDCARDS_ALL, Recls::FILES | Recls::SHOW_HIDDEN).each do |fe|
|
21
|
+
|
22
|
+
puts fe.path if fe.hidden?
|
23
|
+
end
|
24
|
+
```
|
25
|
+
|
26
|
+
## Discussion
|
27
|
+
|
28
|
+
TBC
|
29
|
+
|
30
|
+
## Example results
|
31
|
+
|
32
|
+
```
|
33
|
+
/Users/matthewwilson/dev/freelibs/recls/100/recls.Ruby/trunk/.gitignore
|
34
|
+
/Users/matthewwilson/dev/freelibs/recls/100/recls.Ruby/trunk/.ruby-version
|
35
|
+
/Users/matthewwilson/dev/freelibs/recls/100/recls.Ruby/trunk/.ruby-version-exclusions
|
36
|
+
/Users/matthewwilson/dev/freelibs/recls/100/recls.Ruby/trunk/test/fixtures/hidden/.file-1
|
37
|
+
/Users/matthewwilson/dev/freelibs/recls/100/recls.Ruby/trunk/test/fixtures/hidden/.file-2
|
38
|
+
```
|
39
|
+
|
@@ -1,3 +1,4 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
1
2
|
|
2
3
|
$:.unshift File.join(File.dirname(__FILE__), '..', 'lib')
|
3
4
|
|
@@ -7,9 +8,8 @@ require 'recls'
|
|
7
8
|
#
|
8
9
|
# 1. Ensure that they are returned in search, by including Recls::SHOW_HIDDEN
|
9
10
|
# 2. Filter returned entries by hidden? attribute
|
10
|
-
Recls
|
11
|
+
Recls.file_rsearch('.', Recls::WILDCARDS_ALL, Recls::FILES | Recls::SHOW_HIDDEN).each do |fe|
|
11
12
|
|
12
13
|
puts fe.path if fe.hidden?
|
13
|
-
|
14
14
|
end
|
15
15
|
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# recls.Ruby Example - **show_hidden_files**
|
2
|
+
|
3
|
+
## Summary
|
4
|
+
|
5
|
+
TBC
|
6
|
+
|
7
|
+
## Source
|
8
|
+
|
9
|
+
```ruby
|
10
|
+
#! /usr/bin/env ruby
|
11
|
+
|
12
|
+
$:.unshift File.join(File.dirname(__FILE__), '..', 'lib')
|
13
|
+
|
14
|
+
require 'recls'
|
15
|
+
|
16
|
+
# To find only readonly files, need to:
|
17
|
+
#
|
18
|
+
# 1. Filter returned entries by readonly? attribute
|
19
|
+
Recls.file_rsearch('.', Recls::WILDCARDS_ALL, Recls::FILES).each do |fe|
|
20
|
+
|
21
|
+
puts fe.path if fe.readonly?
|
22
|
+
end
|
23
|
+
```
|
24
|
+
|
25
|
+
## Discussion
|
26
|
+
|
27
|
+
TBC
|
28
|
+
|
29
|
+
## Example results
|
30
|
+
|
31
|
+
```
|
32
|
+
/Users/matthewwilson/dev/freelibs/recls/100/recls.Ruby/trunk/test/fixtures/readonly/file-1
|
33
|
+
/Users/matthewwilson/dev/freelibs/recls/100/recls.Ruby/trunk/test/fixtures/readonly/file-2
|
34
|
+
```
|
35
|
+
|
@@ -1,3 +1,4 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
1
2
|
|
2
3
|
$:.unshift File.join(File.dirname(__FILE__), '..', 'lib')
|
3
4
|
|
@@ -6,9 +7,8 @@ require 'recls'
|
|
6
7
|
# To find only readonly files, need to:
|
7
8
|
#
|
8
9
|
# 1. Filter returned entries by readonly? attribute
|
9
|
-
Recls
|
10
|
+
Recls.file_rsearch('.', Recls::WILDCARDS_ALL, Recls::FILES).each do |fe|
|
10
11
|
|
11
12
|
puts fe.path if fe.readonly?
|
12
|
-
|
13
13
|
end
|
14
14
|
|
data/lib/recls.rb
CHANGED
data/lib/recls/api.rb
CHANGED
@@ -4,11 +4,11 @@
|
|
4
4
|
# Purpose: Defines Recls module search functions
|
5
5
|
#
|
6
6
|
# Created: 9th June 2016
|
7
|
-
# Updated:
|
7
|
+
# Updated: 14th April 2019
|
8
8
|
#
|
9
9
|
# Author: Matthew Wilson
|
10
10
|
#
|
11
|
-
# Copyright (c) 2016, Matthew Wilson and Synesis Software
|
11
|
+
# Copyright (c) 2016-2019, Matthew Wilson and Synesis Software
|
12
12
|
# All rights reserved.
|
13
13
|
#
|
14
14
|
# Redistribution and use in source and binary forms, with or without
|
@@ -37,14 +37,81 @@
|
|
37
37
|
|
38
38
|
|
39
39
|
require 'recls/file_search'
|
40
|
+
require 'recls/flags'
|
41
|
+
|
42
|
+
=begin
|
43
|
+
=end
|
44
|
+
|
45
|
+
class Object; end # :nodoc:
|
40
46
|
|
41
47
|
module Recls
|
42
48
|
|
49
|
+
# [DEPRECATED] Use Recls::file_search()
|
43
50
|
def self.FileSearch(search_root, patterns, options = {})
|
44
51
|
|
45
52
|
Recls::FileSearch.new(search_root, patterns, options)
|
46
53
|
end
|
47
|
-
|
54
|
+
|
55
|
+
# Initialises a +FileSearch+ instance, which acts recursively, as an
|
56
|
+
# +Enumerable+ of Recls::Entry
|
57
|
+
#
|
58
|
+
# === Signature
|
59
|
+
#
|
60
|
+
# * *Parameters:*
|
61
|
+
# - +search_root+ (String, Recls::Entry) The root directory of the search. May be +nil+, in which case the current directory is assumed
|
62
|
+
# - +patterns+ (String, Array) The pattern(s) for which to search. May be +nil+, in which case Recls::WILDCARDS_ALL is assumed
|
63
|
+
# - +options+ (Hash, Integer) Combination of flags (with behaviour as described below for the +flags+ option), or an options hash
|
64
|
+
#
|
65
|
+
# * *Options:*
|
66
|
+
# - +flags+ (Integer) Combination of flags - FILES, DIRECTORIES, etc. If the value modulo TYPEMASK is 0, then FILES is assumed. The value RECURSIVE is added by the function, and so need not be added by the caller; it cannot be removed
|
67
|
+
#
|
68
|
+
# === Return
|
69
|
+
# An instance of a class implementing ::Enumerable whose value type is
|
70
|
+
# Recls::Entry
|
71
|
+
def self.file_rsearch(search_root, patterns, options = {})
|
72
|
+
|
73
|
+
case options
|
74
|
+
when ::NilClass
|
75
|
+
|
76
|
+
options = { flags: RECURSIVE }
|
77
|
+
when ::Integer
|
78
|
+
|
79
|
+
options |= RECURSIVE
|
80
|
+
when ::Hash
|
81
|
+
|
82
|
+
flags = options[:flags] || 0
|
83
|
+
flags |= RECURSIVE
|
84
|
+
|
85
|
+
options[:flags] = flags
|
86
|
+
else
|
87
|
+
|
88
|
+
# this is handled by the FileSearch initialiser
|
89
|
+
end
|
90
|
+
|
91
|
+
Recls::FileSearch.new(search_root, patterns, options)
|
92
|
+
end
|
93
|
+
|
94
|
+
# Initialises a +FileSearch+ instance, which acts as an +Enumerable+
|
95
|
+
# of Recls::Entry
|
96
|
+
#
|
97
|
+
# === Signature
|
98
|
+
#
|
99
|
+
# * *Parameters:*
|
100
|
+
# - +search_root+ (String, Recls::Entry) The root directory of the search. May be +nil+, in which case the current directory is assumed
|
101
|
+
# - +patterns+ (String, Array) The pattern(s) for which to search. May be +nil+, in which case Recls::WILDCARDS_ALL is assumed
|
102
|
+
# - +options+ (Hash, Integer) Combination of flags (with behaviour as described below for the +flags+ option), or an options hash
|
103
|
+
#
|
104
|
+
# * *Options:*
|
105
|
+
# - +flags+ (Integer) Combination of flags - FILES, DIRECTORIES, RECURSIVE, etc. If the value modulo TYPEMASK is 0, then FILES is assumed
|
106
|
+
#
|
107
|
+
# === Return
|
108
|
+
# An instance of a class implementing ::Enumerable whose value type is
|
109
|
+
# Recls::Entry
|
110
|
+
def self.file_search(search_root, patterns, options = {})
|
111
|
+
|
112
|
+
Recls::FileSearch.new(search_root, patterns, options)
|
113
|
+
end
|
114
|
+
end # module Recls
|
48
115
|
|
49
116
|
# ############################## end of file ############################# #
|
50
117
|
|
@@ -0,0 +1,70 @@
|
|
1
|
+
# ######################################################################### #
|
2
|
+
# File: recls/compare_paths_1.rb
|
3
|
+
#
|
4
|
+
# Purpose: Definition of Recls::compare_paths() for Ruby 1.x
|
5
|
+
#
|
6
|
+
# Created: 17th February 2014
|
7
|
+
# Updated: 14th April 2019
|
8
|
+
#
|
9
|
+
# Author: Matthew Wilson
|
10
|
+
#
|
11
|
+
# Copyright (c) 2014-2019, Matthew Wilson and Synesis Software
|
12
|
+
# All rights reserved.
|
13
|
+
#
|
14
|
+
# Redistribution and use in source and binary forms, with or without
|
15
|
+
# modification, are permitted provided that the following conditions are met:
|
16
|
+
#
|
17
|
+
# * Redistributions of source code must retain the above copyright notice,
|
18
|
+
# this list of conditions and the following disclaimer.
|
19
|
+
#
|
20
|
+
# * Redistributions in binary form must reproduce the above copyright notice,
|
21
|
+
# this list of conditions and the following disclaimer in the documentation
|
22
|
+
# and/or other materials provided with the distribution.
|
23
|
+
#
|
24
|
+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
25
|
+
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
26
|
+
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
27
|
+
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
28
|
+
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
29
|
+
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
30
|
+
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
31
|
+
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
32
|
+
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
33
|
+
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
34
|
+
# POSSIBILITY OF SUCH DAMAGE.
|
35
|
+
#
|
36
|
+
# ######################################################################### #
|
37
|
+
|
38
|
+
|
39
|
+
require 'recls/ximpl/util'
|
40
|
+
|
41
|
+
=begin
|
42
|
+
=end
|
43
|
+
|
44
|
+
class Object; end # :nodoc:
|
45
|
+
|
46
|
+
module Recls
|
47
|
+
|
48
|
+
# Combines paths
|
49
|
+
#
|
50
|
+
# === Signature
|
51
|
+
#
|
52
|
+
# * *Parameters:*
|
53
|
+
# - +paths+ ([ (::String, ::Recls::Entry) ]) Array of 1 or more path elements to be combined
|
54
|
+
#
|
55
|
+
# === Return
|
56
|
+
# (String) The combined path
|
57
|
+
def self.combine_paths(*paths)
|
58
|
+
|
59
|
+
paths = paths.reject { |p| p.nil? }
|
60
|
+
paths = paths.map { |p| 'Recls::Entry' == p.class.to_s ? p.path : p }
|
61
|
+
|
62
|
+
raise ArgumentError, 'must specify one or more path elements' if paths.empty?
|
63
|
+
|
64
|
+
return Recls::Ximpl.combine_paths paths, {}
|
65
|
+
end
|
66
|
+
end # module Recls
|
67
|
+
|
68
|
+
# ############################## end of file ############################# #
|
69
|
+
|
70
|
+
|
@@ -0,0 +1,76 @@
|
|
1
|
+
# ######################################################################### #
|
2
|
+
# File: recls/compare_paths_2plus.rb
|
3
|
+
#
|
4
|
+
# Purpose: Definition of Recls::compare_paths() for Ruby 2+
|
5
|
+
#
|
6
|
+
# Created: 17th February 2014
|
7
|
+
# Updated: 14th April 2019
|
8
|
+
#
|
9
|
+
# Author: Matthew Wilson
|
10
|
+
#
|
11
|
+
# Copyright (c) 2014-2019, Matthew Wilson and Synesis Software
|
12
|
+
# All rights reserved.
|
13
|
+
#
|
14
|
+
# Redistribution and use in source and binary forms, with or without
|
15
|
+
# modification, are permitted provided that the following conditions are met:
|
16
|
+
#
|
17
|
+
# * Redistributions of source code must retain the above copyright notice,
|
18
|
+
# this list of conditions and the following disclaimer.
|
19
|
+
#
|
20
|
+
# * Redistributions in binary form must reproduce the above copyright notice,
|
21
|
+
# this list of conditions and the following disclaimer in the documentation
|
22
|
+
# and/or other materials provided with the distribution.
|
23
|
+
#
|
24
|
+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
25
|
+
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
26
|
+
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
27
|
+
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
28
|
+
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
29
|
+
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
30
|
+
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
31
|
+
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
32
|
+
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
33
|
+
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
34
|
+
# POSSIBILITY OF SUCH DAMAGE.
|
35
|
+
#
|
36
|
+
# ######################################################################### #
|
37
|
+
|
38
|
+
|
39
|
+
require 'recls/ximpl/util'
|
40
|
+
|
41
|
+
=begin
|
42
|
+
=end
|
43
|
+
|
44
|
+
class Object; end # :nodoc:
|
45
|
+
|
46
|
+
module Recls
|
47
|
+
|
48
|
+
# Combines paths, optionally canonicalising them
|
49
|
+
#
|
50
|
+
# === Signature
|
51
|
+
#
|
52
|
+
# * *Parameters:*
|
53
|
+
# - +paths+ ([ (::String, ::Recls::Entry) ]) Array of 1 or more path elements to be combined
|
54
|
+
# - +options+ (::Hash) Options that moderate the combination
|
55
|
+
#
|
56
|
+
# * *Options:*
|
57
|
+
# - +:canonicalise+ (boolean) Causes the evaluated path to be canonicalised - with +Recls.canonicalise_path+ - before it is returned
|
58
|
+
# - +:clean+ (boolean) Causes the evaluated path to be cleaned (i.e. sent to +cleanpath+) before it is returned. Ignored if +:canonicalise+ is specified
|
59
|
+
# - +:clean_path+ (boolean) Equivalent to +:clean+, but deprecated and may be removed in a future version
|
60
|
+
#
|
61
|
+
# === Return
|
62
|
+
# (String) The combined path
|
63
|
+
def self.combine_paths(*paths, **options)
|
64
|
+
|
65
|
+
paths = paths.reject { |p| p.nil? }
|
66
|
+
paths = paths.map { |p| 'Recls::Entry' == p.class.to_s ? p.path : p }
|
67
|
+
|
68
|
+
raise ArgumentError, 'must specify one or more path elements' if paths.empty?
|
69
|
+
|
70
|
+
return Recls::Ximpl.combine_paths paths, options
|
71
|
+
end
|
72
|
+
end # module Recls
|
73
|
+
|
74
|
+
# ############################## end of file ############################# #
|
75
|
+
|
76
|
+
|
data/lib/recls/entry.rb
CHANGED
@@ -4,11 +4,12 @@
|
|
4
4
|
# Purpose: Defines the Recls::Entry class for the recls.Ruby library.
|
5
5
|
#
|
6
6
|
# Created: 24th July 2012
|
7
|
-
# Updated:
|
7
|
+
# Updated: 25th May 2020
|
8
8
|
#
|
9
9
|
# Author: Matthew Wilson
|
10
10
|
#
|
11
|
-
# Copyright (c)
|
11
|
+
# Copyright (c) 2019-2020, Matthew Wilson and Synesis Information Systems
|
12
|
+
# Copyright (c) 2012-2019, Matthew Wilson and Synesis Software
|
12
13
|
# All rights reserved.
|
13
14
|
#
|
14
15
|
# Redistribution and use in source and binary forms, with or without
|
@@ -41,11 +42,18 @@ require 'recls/ximpl/' + (Recls::Ximpl::OS::OS_IS_WINDOWS ? 'windows' : 'unix')
|
|
41
42
|
require 'recls/ximpl/util'
|
42
43
|
require 'recls/flags'
|
43
44
|
|
45
|
+
=begin
|
46
|
+
=end
|
47
|
+
|
48
|
+
class Object; end # :nodoc:
|
49
|
+
|
44
50
|
module Recls
|
45
51
|
|
52
|
+
# A file-system entry
|
46
53
|
class Entry
|
47
54
|
|
48
55
|
private
|
56
|
+
# @!visibility private
|
49
57
|
def self.get_compare_path_(path)
|
50
58
|
return path.upcase if Recls::Ximpl::OS::OS_IS_WINDOWS
|
51
59
|
path
|
@@ -90,6 +98,7 @@ module Recls
|
|
90
98
|
@nlink = @file_stat.nlink if @file_stat
|
91
99
|
|
92
100
|
if Recls::Ximpl::OS::OS_IS_WINDOWS && @file_stat
|
101
|
+
|
93
102
|
@dev = @file_stat.by_handle_information.volume_id
|
94
103
|
@ino = @file_stat.by_handle_information.file_index
|
95
104
|
@nlink = @file_stat.by_handle_information.num_links
|
@@ -102,26 +111,43 @@ module Recls
|
|
102
111
|
# ##########################
|
103
112
|
# Name-related attributes
|
104
113
|
|
114
|
+
# (String) A normalised form of #path that can be used in comparisons
|
105
115
|
attr_reader :compare_path
|
106
116
|
|
117
|
+
# (String) The full-path of the instance
|
107
118
|
attr_reader :path
|
119
|
+
# (String) The (Windows) short-form of #path, or +nil+ if not on Windows
|
108
120
|
attr_reader :short_path
|
121
|
+
# (String) The (Windows) drive. +nil+ if does not exist
|
109
122
|
attr_reader :drive
|
123
|
+
# (String) The full path of the entry's directory (taking into account the
|
124
|
+
# #drive if on Windows)
|
110
125
|
attr_reader :directory_path
|
111
126
|
alias_method :dirname, :directory_path
|
127
|
+
# (String) The entry's directory (excluding the #drive if on Windows)
|
112
128
|
attr_reader :directory
|
129
|
+
# ([String]) An array of directory parts, where each part ends in Recls::PATH_NAME_SEPARATOR
|
113
130
|
attr_reader :directory_parts
|
131
|
+
# (String) The entry's file name (combination of #stem + #extension)
|
114
132
|
attr_reader :file_full_name
|
133
|
+
# (String) The (Windows) short-form of #basename, or +nil+ if not on Windows
|
115
134
|
attr_reader :file_short_name
|
116
135
|
alias_method :basename, :file_full_name
|
136
|
+
# (String) The entry's file stem
|
117
137
|
attr_reader :file_name_only
|
118
138
|
alias_method :stem, :file_name_only
|
139
|
+
# (String) The entry's file extension
|
119
140
|
attr_reader :file_extension
|
120
141
|
alias_method :extension, :file_extension
|
142
|
+
# (String) The search directory if specified; +nil+ otherwise
|
121
143
|
attr_reader :search_directory
|
144
|
+
# (String) The #path relative to #search_directory; +nil+ if no search directory specified
|
122
145
|
attr_reader :search_relative_path
|
146
|
+
# (String) The #directory relative to #search_directory; +nil+ if no search directory specified
|
123
147
|
attr_reader :search_relative_directory
|
148
|
+
# (String) The #directory_path relative to #search_directory; +nil+ if no search directory specified
|
124
149
|
attr_reader :search_relative_directory_path
|
150
|
+
# ([String]) The #directory_parts relative to #search_directory; +nil+ if no search directory specified
|
125
151
|
attr_reader :search_relative_directory_parts
|
126
152
|
|
127
153
|
# ##########################
|
@@ -157,6 +183,7 @@ module Recls
|
|
157
183
|
|
158
184
|
if Recls::Ximpl::OS::OS_IS_WINDOWS
|
159
185
|
|
186
|
+
# [WINDOWS-ONLY] Indicates whether the entry has the *system* bit
|
160
187
|
def system?
|
161
188
|
|
162
189
|
return false if @file_stat.nil?
|
@@ -164,6 +191,7 @@ module Recls
|
|
164
191
|
@file_stat.system?
|
165
192
|
end
|
166
193
|
|
194
|
+
# [WINDOWS-ONLY] Indicates whether the entry has the *archive* bit
|
167
195
|
def archive?
|
168
196
|
|
169
197
|
return false if @file_stat.nil?
|
@@ -171,6 +199,7 @@ module Recls
|
|
171
199
|
@file_stat.archive?
|
172
200
|
end
|
173
201
|
|
202
|
+
# [WINDOWS-ONLY] Indicates whether the entry is a device
|
174
203
|
def device?
|
175
204
|
|
176
205
|
return false if @file_stat.nil?
|
@@ -178,6 +207,7 @@ module Recls
|
|
178
207
|
@file_stat.device?
|
179
208
|
end
|
180
209
|
|
210
|
+
# [WINDOWS-ONLY] Indicates whether the entry is *normal*
|
181
211
|
def normal?
|
182
212
|
|
183
213
|
return false if @file_stat.nil?
|
@@ -185,6 +215,7 @@ module Recls
|
|
185
215
|
@file_stat.normal?
|
186
216
|
end
|
187
217
|
|
218
|
+
# [WINDOWS-ONLY] Indicates whether the entry has the *temporary* bit
|
188
219
|
def temporary?
|
189
220
|
|
190
221
|
return false if @file_stat.nil?
|
@@ -192,6 +223,7 @@ module Recls
|
|
192
223
|
@file_stat.temporary?
|
193
224
|
end
|
194
225
|
|
226
|
+
# [WINDOWS-ONLY] Indicates whether the entry has the *compressed* bit
|
195
227
|
def compressed?
|
196
228
|
|
197
229
|
return false if @file_stat.nil?
|
@@ -199,6 +231,7 @@ module Recls
|
|
199
231
|
@file_stat.compressed?
|
200
232
|
end
|
201
233
|
|
234
|
+
# [WINDOWS-ONLY] Indicates whether the entry has the *encrypted* bit
|
202
235
|
def encrypted?
|
203
236
|
|
204
237
|
return false if @file_stat.nil?
|
@@ -215,6 +248,8 @@ module Recls
|
|
215
248
|
@file_stat.directory?
|
216
249
|
end
|
217
250
|
|
251
|
+
alias_method :dir?, :directory?
|
252
|
+
|
218
253
|
# indicates whether the given entry represents a file
|
219
254
|
def file?
|
220
255
|
|
@@ -355,8 +390,9 @@ module Recls
|
|
355
390
|
|
356
391
|
path
|
357
392
|
end
|
358
|
-
end
|
359
|
-
end
|
393
|
+
end # class Entry
|
394
|
+
end # module Recls
|
360
395
|
|
361
396
|
# ############################## end of file ############################# #
|
362
397
|
|
398
|
+
|