recls-ruby 2.12.0 → 2.12.0.1
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/LICENSE +27 -24
- data/README.md +242 -1
- data/examples/find_files_and_directories.md +33 -30
- data/examples/find_files_and_directories.recursive.md +255 -254
- data/examples/show_hidden_files.md +4 -1
- data/examples/show_hidden_files.rb +1 -1
- data/examples/show_readonly_files.md +4 -1
- data/examples/show_readonly_files.rb +1 -1
- data/lib/recls/api.rb +76 -73
- data/lib/recls/combine_paths_1.rb +26 -23
- data/lib/recls/combine_paths_2plus.rb +32 -29
- data/lib/recls/entry.rb +277 -273
- data/lib/recls/file_search.rb +194 -193
- data/lib/recls/flags.rb +48 -45
- data/lib/recls/foreach.rb +105 -98
- data/lib/recls/obsolete.rb +85 -79
- data/lib/recls/recls.rb +19 -24
- data/lib/recls/stat.rb +137 -134
- data/lib/recls/util.rb +95 -92
- data/lib/recls/version.rb +22 -17
- data/lib/recls/ximpl/os.rb +49 -48
- data/lib/recls/ximpl/unix.rb +41 -38
- data/lib/recls/ximpl/util.rb +600 -599
- data/lib/recls/ximpl/windows.rb +142 -139
- data/lib/recls.rb +10 -9
- data/test/scratch/test_display_parts.rb +33 -33
- data/test/scratch/test_entry.rb +6 -6
- data/test/scratch/test_files_and_directories.rb +8 -8
- data/test/scratch/test_foreach.rb +10 -10
- data/test/scratch/test_module_function.rb +33 -33
- data/test/scratch/test_pattern_arrays.rb +5 -5
- 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_entries.rb +31 -31
- data/test/unit/tc_recls_entry.rb +19 -19
- data/test/unit/tc_recls_file_search.rb +32 -32
- data/test/unit/tc_recls_module.rb +25 -25
- data/test/unit/tc_recls_util.rb +161 -161
- data/test/unit/tc_recls_ximpl_util.rb +676 -676
- data/test/unit/test_all_separately.sh +1 -1
- data/test/unit/ts_all.rb +4 -4
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b7ad41cfec6d08d5ba41ef9c6bc47f5b151d61a232f9f7a04ce389ca49487f51
|
4
|
+
data.tar.gz: 9cb9cff1104388001437470dbd6cb82566313f78d82b0a5b323689573f57f5d9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5c61cd03d38a8d459d9bbfc3f150e0fed22182abef92da86dd135040690088f070d69f55cfa3ccf4312f7d1b122d921eb72b48e2137fa8801e1360d29aec4dfe
|
7
|
+
data.tar.gz: fb1603cbf0f8ffd86c1c679ac08f0d5bf5c770d8d4348a24b74bab1e5440b28f6f35a7e8ef4368252eaf9ab0d5f081935814ebd48ade0c26939340a964b748e0
|
data/LICENSE
CHANGED
@@ -1,31 +1,34 @@
|
|
1
|
-
recls.Ruby
|
1
|
+
recls.Ruby - BSD 3-Clause License
|
2
|
+
|
3
|
+
Copyright (c) 2019-2024, Matthew Wilson and Synesis Information Systems
|
4
|
+
Copyright (c) 2003-2019, Matthew Wilson and Synesis Software
|
2
5
|
|
3
|
-
Copyright (c) 2003-2016, Matthew Wilson and Synesis Software
|
4
6
|
All rights reserved.
|
5
7
|
|
6
8
|
Redistribution and use in source and binary forms, with or without
|
7
9
|
modification, are permitted provided that the following conditions are met:
|
8
10
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
22
|
-
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
23
|
-
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
24
|
-
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
25
|
-
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
26
|
-
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
27
|
-
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
28
|
-
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
29
|
-
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
30
|
-
OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
11
|
+
1. Redistributions of source code must retain the above copyright notice,
|
12
|
+
this list of conditions and the following disclaimer.
|
13
|
+
|
14
|
+
2. Redistributions in binary form must reproduce the above copyright notice,
|
15
|
+
this list of conditions and the following disclaimer in the documentation
|
16
|
+
and/or other materials provided with the distribution.
|
17
|
+
|
18
|
+
3. Neither the names of recls, recls-Ruby,
|
19
|
+
recls.Ruby, nor the name of the copyright holder nor the names of
|
20
|
+
its contributors may be used to endorse or promote products derived from
|
21
|
+
this software without specific prior written permission.
|
22
|
+
|
23
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
24
|
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
25
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
26
|
+
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
27
|
+
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
28
|
+
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
29
|
+
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
30
|
+
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
31
|
+
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
32
|
+
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
33
|
+
POSSIBILITY OF SUCH DAMAGE.
|
31
34
|
|
data/README.md
CHANGED
@@ -1,14 +1,17 @@
|
|
1
1
|
# recls.Ruby
|
2
|
+
|
2
3
|
**rec**ursive **ls**, for Ruby
|
3
4
|
|
4
5
|
[](https://badge.fury.io/rb/recls-ruby)
|
5
6
|
|
7
|
+
|
6
8
|
## Introduction
|
7
9
|
|
8
10
|
**recls** stands for **rec**ursive **ls**. The first recls library was a C
|
9
11
|
library with a C++ wrapper. There have been several implementations in other
|
10
12
|
languages. **recls.Ruby** is the Ruby version.
|
11
13
|
|
14
|
+
|
12
15
|
## Table of Contents
|
13
16
|
|
14
17
|
1. [Introduction](#introduction)
|
@@ -17,14 +20,17 @@ languages. **recls.Ruby** is the Ruby version.
|
|
17
20
|
4. [Examples](#examples)
|
18
21
|
5. [Project Information](#project-information)
|
19
22
|
|
23
|
+
|
20
24
|
## Introduction
|
21
25
|
|
22
26
|
T.B.C.
|
23
27
|
|
28
|
+
|
24
29
|
## Installation & usage
|
25
30
|
|
26
31
|
Install using `gem install recls-ruby` or add it to your `Gemfile`.
|
27
32
|
|
33
|
+
|
28
34
|
## Components
|
29
35
|
|
30
36
|
The main components of **recls.Ruby** are:
|
@@ -32,36 +38,267 @@ The main components of **recls.Ruby** are:
|
|
32
38
|
* the ``Recls`` module; and
|
33
39
|
* the ``Recls::Entry`` class
|
34
40
|
|
41
|
+
|
35
42
|
### The ``Recls`` module
|
36
43
|
|
37
44
|
T.B.C.
|
38
45
|
|
46
|
+
|
39
47
|
### The ``Recls::Entry`` class
|
40
48
|
|
41
|
-
|
49
|
+
This class represents a file-system entry, and is created either by the `Recls.stat()` method, or is returned from the searches (see above). It has the following (simplified) interface:
|
50
|
+
|
51
|
+
```Ruby
|
52
|
+
module Recls
|
53
|
+
|
54
|
+
# A file-system entry
|
55
|
+
class Entry
|
56
|
+
|
57
|
+
# ##########################
|
58
|
+
# Name-related attributes
|
59
|
+
|
60
|
+
# (+String+) A normalised form of #path that can be used in comparisons
|
61
|
+
attr_reader :compare_path
|
62
|
+
|
63
|
+
# (+String+) The full-path of the instance
|
64
|
+
attr_reader :path
|
65
|
+
# (+String+) The (Windows) short-form of #path, or +nil+ if not on Windows
|
66
|
+
attr_reader :short_path
|
67
|
+
# (+String+) The (Windows) drive. +nil+ if does not exist
|
68
|
+
attr_reader :drive
|
69
|
+
# (+String+) The full path of the entry's directory (taking into account the
|
70
|
+
# #drive if on Windows)
|
71
|
+
attr_reader :directory_path
|
72
|
+
alias_method :dirname, :directory_path
|
73
|
+
# (+String+) The entry's directory (excluding the #drive if on Windows)
|
74
|
+
attr_reader :directory
|
75
|
+
# (+[ String ]+) An array of directory parts, where each part ends in Recls::PATH_NAME_SEPARATOR
|
76
|
+
attr_reader :directory_parts
|
77
|
+
# (+String+) The entry's file name (combination of #stem + #extension)
|
78
|
+
attr_reader :file_full_name
|
79
|
+
# (+String+) The (Windows) short-form of #basename, or +nil+ if not on Windows
|
80
|
+
attr_reader :file_short_name
|
81
|
+
alias_method :basename, :file_full_name
|
82
|
+
# (+String+) The entry's file stem
|
83
|
+
attr_reader :file_name_only
|
84
|
+
alias_method :stem, :file_name_only
|
85
|
+
# (+String+) The entry's file extension
|
86
|
+
attr_reader :file_extension
|
87
|
+
alias_method :extension, :file_extension
|
88
|
+
# (+String+) The search directory if specified; +nil+ otherwise
|
89
|
+
attr_reader :search_directory
|
90
|
+
# (+String+) The #path relative to #search_directory; +nil+ if no search directory specified
|
91
|
+
attr_reader :search_relative_path
|
92
|
+
# (+String+) The #directory relative to #search_directory; +nil+ if no search directory specified
|
93
|
+
attr_reader :search_relative_directory
|
94
|
+
# (+String+) The #directory_path relative to #search_directory; +nil+ if no search directory specified
|
95
|
+
attr_reader :search_relative_directory_path
|
96
|
+
# (+[ String ]+) The #directory_parts relative to #search_directory; +nil+ if no search directory specified
|
97
|
+
attr_reader :search_relative_directory_parts
|
98
|
+
|
99
|
+
# ##########################
|
100
|
+
# Nature attributes
|
101
|
+
|
102
|
+
# indicates whether the given entry existed at the time the entry
|
103
|
+
# instance was created
|
104
|
+
def exist?
|
105
|
+
. . .
|
106
|
+
end
|
107
|
+
|
108
|
+
# indicates whether the given entry is hidden
|
109
|
+
def hidden?
|
110
|
+
. . .
|
111
|
+
end
|
112
|
+
|
113
|
+
# indicates whether the given entry is readonly
|
114
|
+
def readonly?
|
115
|
+
. . .
|
116
|
+
end
|
117
|
+
|
118
|
+
if Recls::Ximpl::OS::OS_IS_WINDOWS
|
119
|
+
|
120
|
+
# [WINDOWS-ONLY] Indicates whether the entry has the *system* bit
|
121
|
+
def system?
|
122
|
+
. . .
|
123
|
+
end
|
124
|
+
|
125
|
+
# [WINDOWS-ONLY] Indicates whether the entry has the *archive* bit
|
126
|
+
def archive?
|
127
|
+
. . .
|
128
|
+
end
|
129
|
+
|
130
|
+
# [WINDOWS-ONLY] Indicates whether the entry is a device
|
131
|
+
def device?
|
132
|
+
. . .
|
133
|
+
end
|
134
|
+
|
135
|
+
# [WINDOWS-ONLY] Indicates whether the entry is *normal*
|
136
|
+
def normal?
|
137
|
+
. . .
|
138
|
+
end
|
139
|
+
|
140
|
+
# [WINDOWS-ONLY] Indicates whether the entry has the *temporary* bit
|
141
|
+
def temporary?
|
142
|
+
. . .
|
143
|
+
end
|
144
|
+
|
145
|
+
# [WINDOWS-ONLY] Indicates whether the entry has the *compressed* bit
|
146
|
+
def compressed?
|
147
|
+
. . .
|
148
|
+
end
|
149
|
+
|
150
|
+
# [WINDOWS-ONLY] Indicates whether the entry has the *encrypted* bit
|
151
|
+
def encrypted?
|
152
|
+
. . .
|
153
|
+
end
|
154
|
+
end
|
155
|
+
|
156
|
+
# indicates whether the given entry represents a directory
|
157
|
+
def directory?
|
158
|
+
. . .
|
159
|
+
end
|
160
|
+
|
161
|
+
alias_method :dir?, :directory?
|
162
|
+
|
163
|
+
# indicates whether the given entry represents a file
|
164
|
+
def file?
|
165
|
+
. . .
|
166
|
+
end
|
167
|
+
|
168
|
+
# indicates whether the given entry represents a link
|
169
|
+
def link?
|
170
|
+
. . .
|
171
|
+
end
|
172
|
+
|
173
|
+
# indicates whether the given entry represents a socket
|
174
|
+
def socket?
|
175
|
+
. . .
|
176
|
+
end
|
177
|
+
|
178
|
+
# ##########################
|
179
|
+
# Size attributes
|
180
|
+
|
181
|
+
# indicates the size of the given entry
|
182
|
+
def size
|
183
|
+
. . .
|
184
|
+
end
|
185
|
+
|
186
|
+
# ##########################
|
187
|
+
# File-system entry attributes
|
188
|
+
|
189
|
+
# indicates the device of the given entry
|
190
|
+
#
|
191
|
+
# On Windows, this will be 0 if the entry cannot be
|
192
|
+
# opened
|
193
|
+
def dev
|
194
|
+
. . .
|
195
|
+
end
|
196
|
+
|
197
|
+
# indicates the ino of the given entry
|
198
|
+
#
|
199
|
+
# On Windows, this will be 0 if the entry cannot be
|
200
|
+
# opened
|
201
|
+
def ino
|
202
|
+
. . .
|
203
|
+
end
|
204
|
+
|
205
|
+
# number of links to the given entry
|
206
|
+
#
|
207
|
+
# On Windows, this will be 0 if the entry cannot be
|
208
|
+
# opened
|
209
|
+
def nlink
|
210
|
+
. . .
|
211
|
+
end
|
212
|
+
|
213
|
+
# ##########################
|
214
|
+
# Time attributes
|
215
|
+
|
216
|
+
# indicates the last access time of the entry
|
217
|
+
def last_access_time
|
218
|
+
. . .
|
219
|
+
end
|
220
|
+
|
221
|
+
# indicates the modification time of the entry
|
222
|
+
def modification_time
|
223
|
+
. . .
|
224
|
+
end
|
225
|
+
|
226
|
+
# ##########################
|
227
|
+
# Comparison
|
228
|
+
|
229
|
+
# determines whether rhs is an instance of Entry and
|
230
|
+
# refers to the same path
|
231
|
+
def eql?(rhs)
|
232
|
+
. . .
|
233
|
+
end
|
234
|
+
|
235
|
+
# determines whether rhs refers to the same path
|
236
|
+
def ==(rhs)
|
237
|
+
. . .
|
238
|
+
end
|
239
|
+
|
240
|
+
# compares this instance with rhs
|
241
|
+
def <=>(rhs)
|
242
|
+
. . .
|
243
|
+
end
|
244
|
+
|
245
|
+
# the hash
|
246
|
+
def hash
|
247
|
+
. . .
|
248
|
+
end
|
249
|
+
|
250
|
+
# ##########################
|
251
|
+
# Conversion
|
252
|
+
|
253
|
+
# represents the entry as a string (in the form of
|
254
|
+
# the full path)
|
255
|
+
def to_s
|
256
|
+
. . .
|
257
|
+
end
|
258
|
+
|
259
|
+
# represents the entry as a string (in the form of
|
260
|
+
# the full path)
|
261
|
+
def to_str
|
262
|
+
. . .
|
263
|
+
end
|
264
|
+
end # class Entry
|
265
|
+
end # module Recls
|
266
|
+
|
267
|
+
|
268
|
+
# ############################## end of file ############################# #
|
269
|
+
|
270
|
+
|
271
|
+
```
|
272
|
+
|
42
273
|
|
43
274
|
## Examples
|
44
275
|
|
45
276
|
Examples are provided in the ```examples``` directory, along with a markdown description for each. A detailed list TOC of them is provided in [EXAMPLES.md](./EXAMPLES.md).
|
46
277
|
|
278
|
+
|
47
279
|
## Project Information
|
48
280
|
|
281
|
+
|
49
282
|
### Where to get help
|
50
283
|
|
51
284
|
[GitHub Page](https://github.com/synesissoftware/recls.Ruby "GitHub Page")
|
52
285
|
|
286
|
+
|
53
287
|
### Contribution guidelines
|
54
288
|
|
55
289
|
Defect reports, feature requests, and pull requests are welcome on https://github.com/synesissoftware/recls.Ruby.
|
56
290
|
|
291
|
+
|
57
292
|
### Dependencies
|
58
293
|
|
59
294
|
None
|
60
295
|
|
296
|
+
|
61
297
|
### Dependents
|
62
298
|
|
63
299
|
**recls.Ruby** is used in the **[libCLImate.Ruby](https://github.com/synesissoftware/libCLImate.Ruby)** library.
|
64
300
|
|
301
|
+
|
65
302
|
### Related projects
|
66
303
|
|
67
304
|
* [**recls**](https://github.com/synesissoftware/recls/)
|
@@ -69,13 +306,17 @@ None
|
|
69
306
|
* [**recls.NET**](https://github.com/synesissoftware/recls.NET/)
|
70
307
|
* [**recls.Python**](https://github.com/synesissoftware/recls.Python/)
|
71
308
|
|
309
|
+
|
72
310
|
### License
|
73
311
|
|
74
312
|
**recls.Ruby** is released under the 3-clause BSD license. See [LICENSE](./LICENSE) for details.
|
75
313
|
|
314
|
+
|
76
315
|
### Compatibility
|
77
316
|
|
78
317
|
For v2.8.x onwards, recls.Ruby is compatible only with Ruby 2.0+; all other
|
79
318
|
past and current versions work with Ruby 1.9.3+.
|
80
319
|
|
81
320
|
|
321
|
+
<!-- ########################### end of file ########################### -->
|
322
|
+
|
@@ -39,39 +39,42 @@ attribute is used to display the relative path.
|
|
39
39
|
|
40
40
|
```
|
41
41
|
files in current directory:
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
42
|
+
build_gem.cmd
|
43
|
+
build_gem.sh
|
44
|
+
CHANGES.md
|
45
|
+
EXAMPLES.md
|
46
|
+
generate_rdoc.sh
|
47
|
+
LICENSE
|
48
|
+
Rakefile
|
49
|
+
README.md
|
50
|
+
recls.gemspec
|
51
|
+
run_all_unit_tests.sh
|
52
52
|
|
53
53
|
directories in current directory:
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
54
|
+
doc
|
55
|
+
examples
|
56
|
+
lib
|
57
|
+
old-gems
|
58
|
+
test
|
59
59
|
|
60
60
|
files and directories in current directory:
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
61
|
+
build_gem.cmd
|
62
|
+
build_gem.sh
|
63
|
+
CHANGES.md
|
64
|
+
doc
|
65
|
+
examples
|
66
|
+
EXAMPLES.md
|
67
|
+
generate_rdoc.sh
|
68
|
+
lib
|
69
|
+
LICENSE
|
70
|
+
old-gems
|
71
|
+
Rakefile
|
72
|
+
README.md
|
73
|
+
recls.gemspec
|
74
|
+
run_all_unit_tests.sh
|
75
|
+
test
|
76
76
|
```
|
77
77
|
|
78
|
+
|
79
|
+
<!-- ########################### end of file ########################### -->
|
80
|
+
|