recls-ruby 2.8.2 → 2.9.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/lib/recls.rb +2 -0
- data/lib/recls/api.rb +84 -2
- data/lib/recls/combine_paths_1.rb +66 -0
- data/lib/recls/combine_paths_2plus.rb +77 -0
- data/lib/recls/entry.rb +1 -0
- data/lib/recls/file_search.rb +31 -6
- data/lib/recls/flags.rb +1 -0
- data/lib/recls/foreach.rb +1 -0
- data/lib/recls/recls.rb +1 -0
- data/lib/recls/stat.rb +32 -3
- data/lib/recls/util.rb +13 -31
- data/lib/recls/version.rb +3 -3
- data/lib/recls/ximpl/util.rb +6 -5
- data/test/scratch/test_display_parts.rb +9 -9
- data/test/scratch/test_entry.rb +10 -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_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 +51 -2
- data/test/unit/ts_all.rb +11 -9
- metadata +13 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c02ac6f3a48f84776ec957cd2642d9b910e5169d
|
4
|
+
data.tar.gz: 3d0b3e9eaffeb82e499279e32befa7ade72bc75f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7f7229fff4e86c2653b0652fdc617824a84aa7a47ac9dbeedfc70523b5bb937b5d182e60f147edb0cf77aeffbdc32027d59474ce7d2f94a41d28e13d52db9ec4
|
7
|
+
data.tar.gz: f30f716243c9b9a19dcf3052561055fc80e89a325368bf8e9058efbb90a2842f7267f78017834a7209c6d6c284ae24a530f7f9cf6869997e26e3aeb8d7096933
|
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: 21st March 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,13 +37,95 @@
|
|
37
37
|
|
38
38
|
|
39
39
|
require 'recls/file_search'
|
40
|
+
require 'recls/flags'
|
40
41
|
|
41
42
|
module Recls
|
42
43
|
|
44
|
+
# [DEPRECATED] Use +Recls.file_search()+
|
45
|
+
#
|
46
|
+
# @deprecated
|
43
47
|
def self.FileSearch(search_root, patterns, options = {})
|
44
48
|
|
45
49
|
Recls::FileSearch.new(search_root, patterns, options)
|
46
50
|
end
|
51
|
+
|
52
|
+
# Initialises a +FileSearch+ instance, which acts recursively, as an
|
53
|
+
# +Enumerable+ of Recls::Entry
|
54
|
+
#
|
55
|
+
# === Signature
|
56
|
+
#
|
57
|
+
# * *Parameters:*
|
58
|
+
# - +search_root+:: (String, Recls::Entry) The root directory of
|
59
|
+
# the search. May be +nil+, in which case the current directory
|
60
|
+
# is assumed
|
61
|
+
# - +patterns+:: (String, Array) The pattern(s) for which to
|
62
|
+
# search. May be +nil+, in which case +Recls::WILDCARDS_ALL+ is
|
63
|
+
# assumed
|
64
|
+
# - +options+:: (Hash, Integer) Combination of flags (with
|
65
|
+
# behaviour as described below for the +flags+ option), or an
|
66
|
+
# options hash
|
67
|
+
#
|
68
|
+
# * *Options:*
|
69
|
+
# - +flags+:: (Integer) Combination of flags - FILES,
|
70
|
+
# DIRECTORIES, etc. If the value modulo TYPEMASK is 0,
|
71
|
+
# then FILES is assumed. The value RECURSIVE is added by the
|
72
|
+
# function, and so need not be added by the caller; it cannot be
|
73
|
+
# removed
|
74
|
+
#
|
75
|
+
# === Return
|
76
|
+
# An instance of +::Recls::FileSearch+
|
77
|
+
#
|
78
|
+
def self.file_rsearch(search_root, patterns, options = {})
|
79
|
+
|
80
|
+
case options
|
81
|
+
when ::NilClass
|
82
|
+
|
83
|
+
options = { flags: RECURSIVE }
|
84
|
+
when ::Integer
|
85
|
+
|
86
|
+
options |= RECURSIVE
|
87
|
+
when ::Hash
|
88
|
+
|
89
|
+
flags = options[:flags] || 0
|
90
|
+
flags |= RECURSIVE
|
91
|
+
|
92
|
+
options[:flags] = flags
|
93
|
+
else
|
94
|
+
|
95
|
+
# this is handled by the FileSearch initialiser
|
96
|
+
end
|
97
|
+
|
98
|
+
Recls::FileSearch.new(search_root, patterns, options)
|
99
|
+
end
|
100
|
+
|
101
|
+
# Initialises a +FileSearch+ instance, which acts as an +Enumerable+
|
102
|
+
# of Recls::Entry
|
103
|
+
#
|
104
|
+
# === Signature
|
105
|
+
#
|
106
|
+
# * *Parameters:*
|
107
|
+
# - +search_root+:: (String, Recls::Entry) The root directory of
|
108
|
+
# the search. May be +nil+, in which case the current directory
|
109
|
+
# is assumed
|
110
|
+
# - +patterns+:: (String, Array) The pattern(s) for which to
|
111
|
+
# search. May be +nil+, in which case +Recls::WILDCARDS_ALL+ is
|
112
|
+
# assumed
|
113
|
+
# - +options+:: (Hash, Integer) Combination of flags (with
|
114
|
+
# behaviour as described below for the +flags+ option), or an
|
115
|
+
# options hash
|
116
|
+
#
|
117
|
+
# * *Options:*
|
118
|
+
# - +flags+:: (Integer) Combination of flags - FILES,
|
119
|
+
# DIRECTORIES, RECURSIVE, etc. If the value modulo TYPEMASK is 0,
|
120
|
+
# then FILES is assumed
|
121
|
+
#
|
122
|
+
# === Return
|
123
|
+
# An instance of +::Recls::FileSearch+
|
124
|
+
#
|
125
|
+
def self.file_search(search_root, patterns, options = {})
|
126
|
+
|
127
|
+
Recls::FileSearch.new(search_root, patterns, options)
|
128
|
+
end
|
47
129
|
end
|
48
130
|
|
49
131
|
# ############################## end of file ############################# #
|
@@ -0,0 +1,66 @@
|
|
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: 21st March 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
|
+
module Recls
|
42
|
+
|
43
|
+
# Combines paths
|
44
|
+
#
|
45
|
+
# === Signature
|
46
|
+
#
|
47
|
+
# * *Parameters:*
|
48
|
+
# - +paths+:: ([ (::String, ::Recls::Entry( ]) Array of 1 or more path
|
49
|
+
# elements to be combined
|
50
|
+
#
|
51
|
+
# === Return
|
52
|
+
# The combined path
|
53
|
+
def self.combine_paths(*paths)
|
54
|
+
|
55
|
+
paths = paths.reject { |p| p.nil? }
|
56
|
+
paths = paths.map { |p| 'Recls::Entry' == p.class.to_s ? p.path : p }
|
57
|
+
|
58
|
+
raise ArgumentError, 'must specify one or more path elements' if paths.empty?
|
59
|
+
|
60
|
+
return Recls::Ximpl.combine_paths paths, {}
|
61
|
+
end
|
62
|
+
end # module Recls
|
63
|
+
|
64
|
+
# ############################## end of file ############################# #
|
65
|
+
|
66
|
+
|
@@ -0,0 +1,77 @@
|
|
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: 21st March 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
|
+
module Recls
|
42
|
+
|
43
|
+
# Combines paths, optionally canonicalising them
|
44
|
+
#
|
45
|
+
# === Signature
|
46
|
+
#
|
47
|
+
# * *Parameters:*
|
48
|
+
# - +paths+:: ([ (::String, ::Recls::Entry( ]) Array of 1 or more path
|
49
|
+
# elements to be combined
|
50
|
+
# - +options+:: (::Hash) Options that moderate the combination
|
51
|
+
#
|
52
|
+
# * *Options:*
|
53
|
+
# - +:canonicalise+:: (boolean) Causes the evaluated path to be
|
54
|
+
# canonicalised - with +Recls.canonicalise_path+ - before it is
|
55
|
+
# returned
|
56
|
+
# - +:clean+:: (boolean) Causes the evaluated path to be cleaned
|
57
|
+
# (i.e. sent to +cleanpath+) before it is returned. Ignored if
|
58
|
+
# +:canonicalise+ is specified
|
59
|
+
# - +:clean_path+:: (boolean) Equivalent to +:clean+, but deprecated
|
60
|
+
# and may be removed in a future version
|
61
|
+
#
|
62
|
+
# === Return
|
63
|
+
# The combined path
|
64
|
+
def self.combine_paths(*paths, **options)
|
65
|
+
|
66
|
+
paths = paths.reject { |p| p.nil? }
|
67
|
+
paths = paths.map { |p| 'Recls::Entry' == p.class.to_s ? p.path : p }
|
68
|
+
|
69
|
+
raise ArgumentError, 'must specify one or more path elements' if paths.empty?
|
70
|
+
|
71
|
+
return Recls::Ximpl.combine_paths paths, options
|
72
|
+
end
|
73
|
+
end # module Recls
|
74
|
+
|
75
|
+
# ############################## end of file ############################# #
|
76
|
+
|
77
|
+
|
data/lib/recls/entry.rb
CHANGED
data/lib/recls/file_search.rb
CHANGED
@@ -4,11 +4,11 @@
|
|
4
4
|
# Purpose: Defines the Recls::FileSearch class for the recls.Ruby library.
|
5
5
|
#
|
6
6
|
# Created: 24th July 2012
|
7
|
-
# Updated:
|
7
|
+
# Updated: 21st March 2019
|
8
8
|
#
|
9
9
|
# Author: Matthew Wilson
|
10
10
|
#
|
11
|
-
# Copyright (c) 2012-
|
11
|
+
# Copyright (c) 2012-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
|
@@ -46,6 +46,30 @@ module Recls
|
|
46
46
|
|
47
47
|
include Enumerable
|
48
48
|
|
49
|
+
# Initialises a +FileSearch+ instance, which acts as an +Enumerable+
|
50
|
+
# of Recls::Entry
|
51
|
+
#
|
52
|
+
# === Signature
|
53
|
+
#
|
54
|
+
# * *Parameters:*
|
55
|
+
# - +search_root+:: (String, Recls::Entry) The root directory of
|
56
|
+
# the search. May be +nil+, in which case the current directory
|
57
|
+
# is assumed
|
58
|
+
# - +patterns+:: (String, Array) The pattern(s) for which to
|
59
|
+
# search. May be +nil+, in which case +Recls::WILDCARDS_ALL+ is
|
60
|
+
# assumed
|
61
|
+
# - +options+:: (Hash, Integer) Combination of flags (with
|
62
|
+
# behaviour as described below for the +flags+ option), or an
|
63
|
+
# options hash
|
64
|
+
#
|
65
|
+
# * *Options:*
|
66
|
+
# - +flags+:: (Integer) Combination of flags - FILES,
|
67
|
+
# DIRECTORIES, RECURSIVE, etc. If the value modulo TYPEMASK is 0,
|
68
|
+
# then FILES is assumed
|
69
|
+
#
|
70
|
+
# === Return
|
71
|
+
# An instance of the class
|
72
|
+
#
|
49
73
|
def initialize(search_root, patterns, options={})
|
50
74
|
|
51
75
|
# for backwards compatibility, we allow for options to
|
@@ -101,12 +125,12 @@ module Recls
|
|
101
125
|
end
|
102
126
|
|
103
127
|
# now de-dup the patterns, to avoid duplicates in search
|
104
|
-
patterns
|
105
|
-
patterns
|
128
|
+
patterns = patterns.flatten
|
129
|
+
patterns = patterns.uniq
|
106
130
|
|
107
131
|
@search_root = search_root
|
108
|
-
@patterns
|
109
|
-
@flags
|
132
|
+
@patterns = patterns
|
133
|
+
@flags = flags
|
110
134
|
end
|
111
135
|
|
112
136
|
attr_reader :search_root
|
@@ -291,3 +315,4 @@ end
|
|
291
315
|
|
292
316
|
# ############################## end of file ############################# #
|
293
317
|
|
318
|
+
|
data/lib/recls/flags.rb
CHANGED
data/lib/recls/foreach.rb
CHANGED
data/lib/recls/recls.rb
CHANGED
data/lib/recls/stat.rb
CHANGED
@@ -4,11 +4,11 @@
|
|
4
4
|
# Purpose: Defines the Recls.stat() method for the recls.Ruby library.
|
5
5
|
#
|
6
6
|
# Created: 24th July 2012
|
7
|
-
# Updated:
|
7
|
+
# Updated: 21st March 2019
|
8
8
|
#
|
9
9
|
# Author: Matthew Wilson
|
10
10
|
#
|
11
|
-
# Copyright (c) 2012-
|
11
|
+
# Copyright (c) 2012-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
|
@@ -41,6 +41,34 @@ require 'recls/flags'
|
|
41
41
|
|
42
42
|
module Recls
|
43
43
|
|
44
|
+
# Performs a +stat()+ but returns +nil+ if an obtained entry is not a
|
45
|
+
# directory
|
46
|
+
def self.directory?(path, *args)
|
47
|
+
|
48
|
+
fe = self.stat(path, *args)
|
49
|
+
|
50
|
+
if fe
|
51
|
+
|
52
|
+
return nil unless fe.directory?
|
53
|
+
end
|
54
|
+
|
55
|
+
fe
|
56
|
+
end
|
57
|
+
|
58
|
+
# Performs a +stat()+ but returns +nil+ if an obtained entry is not a
|
59
|
+
# file
|
60
|
+
def self.file?(path, *args)
|
61
|
+
|
62
|
+
fe = self.stat(path, *args)
|
63
|
+
|
64
|
+
if fe
|
65
|
+
|
66
|
+
return nil unless fe.file?
|
67
|
+
end
|
68
|
+
|
69
|
+
fe
|
70
|
+
end
|
71
|
+
|
44
72
|
# USAGE:
|
45
73
|
#
|
46
74
|
# - stat(path)
|
@@ -100,8 +128,9 @@ module Recls
|
|
100
128
|
nil
|
101
129
|
end
|
102
130
|
end
|
103
|
-
end
|
131
|
+
end
|
104
132
|
end
|
105
133
|
|
106
134
|
# ############################## end of file ############################# #
|
107
135
|
|
136
|
+
|
data/lib/recls/util.rb
CHANGED
@@ -4,11 +4,11 @@
|
|
4
4
|
# Purpose: Utility module functions for recls library
|
5
5
|
#
|
6
6
|
# Created: 17th February 2014
|
7
|
-
# Updated:
|
7
|
+
# Updated: 21st March 2019
|
8
8
|
#
|
9
9
|
# Author: Matthew Wilson
|
10
10
|
#
|
11
|
-
# Copyright (c) 2012-
|
11
|
+
# Copyright (c) 2012-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
|
@@ -44,6 +44,8 @@ module Recls
|
|
44
44
|
# Obtains the absolute form of the given path
|
45
45
|
def self.absolute_path(path)
|
46
46
|
|
47
|
+
return path.path if 'Recls::Entry' === path.class.to_s
|
48
|
+
|
47
49
|
return Recls::Ximpl.absolute_path path
|
48
50
|
end
|
49
51
|
|
@@ -51,6 +53,8 @@ module Recls
|
|
51
53
|
# directories
|
52
54
|
def self.canonicalise_path(path)
|
53
55
|
|
56
|
+
path = path.path if 'Recls::Entry' === path.class.to_s
|
57
|
+
|
54
58
|
return Recls::Ximpl.canonicalise_path path
|
55
59
|
end
|
56
60
|
|
@@ -60,36 +64,14 @@ module Recls
|
|
60
64
|
|
61
65
|
return Recls::Ximpl.derive_relative_path origin, path
|
62
66
|
end
|
67
|
+
end # module Recls
|
63
68
|
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
# elements to be combined
|
71
|
-
# - +options+:: [::Hash] Options that moderate the combination
|
72
|
-
#
|
73
|
-
# * *Parameters:*
|
74
|
-
# - +:canonicalise+:: [boolean] Causes the evaluated path to be
|
75
|
-
# canonicalised - with +Recls.canonicalise_path+ - before it is
|
76
|
-
# returned
|
77
|
-
# - +:clean+:: [boolean] Causes the evaluated path to be cleaned
|
78
|
-
# (i.e. sent to +cleanpath+) before it is returned. Ignored if
|
79
|
-
# +:canonicalise+ is specified
|
80
|
-
# - +:clean_path+:: [boolean] Equivalent to +:clean+, but deprecated
|
81
|
-
# and may be removed in a future version
|
82
|
-
#
|
83
|
-
# === Return
|
84
|
-
# The combined path
|
85
|
-
def self.combine_paths(*paths, **options)
|
86
|
-
|
87
|
-
paths = paths.reject { |p| p.nil? }
|
88
|
-
|
89
|
-
raise ArgumentError, 'must specify one or more path elements' if paths.empty?
|
90
|
-
|
91
|
-
return Recls::Ximpl.combine_paths paths, options
|
92
|
-
end
|
69
|
+
if RUBY_VERSION >= '2'
|
70
|
+
|
71
|
+
require 'recls/combine_paths_2plus'
|
72
|
+
else
|
73
|
+
|
74
|
+
require 'recls/combine_paths_1'
|
93
75
|
end
|
94
76
|
|
95
77
|
# ############################## end of file ############################# #
|
data/lib/recls/version.rb
CHANGED
@@ -4,11 +4,11 @@
|
|
4
4
|
# Purpose: Version for recls library
|
5
5
|
#
|
6
6
|
# Created: 14th February 2014
|
7
|
-
# Updated:
|
7
|
+
# Updated: 21st March 2019
|
8
8
|
#
|
9
9
|
# Author: Matthew Wilson
|
10
10
|
#
|
11
|
-
# Copyright (c) 2012-
|
11
|
+
# Copyright (c) 2012-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
|
@@ -39,7 +39,7 @@
|
|
39
39
|
module Recls
|
40
40
|
|
41
41
|
# Current version of the recls.Ruby library
|
42
|
-
VERSION = '2.
|
42
|
+
VERSION = '2.9.0'
|
43
43
|
|
44
44
|
private
|
45
45
|
VERSION_PARTS_ = VERSION.split(/[.]/).collect { |n| n.to_i } # :nodoc:
|
data/lib/recls/ximpl/util.rb
CHANGED
@@ -4,11 +4,11 @@
|
|
4
4
|
# Purpose: Internal implementation constructs for the recls library.
|
5
5
|
#
|
6
6
|
# Created: 24th July 2012
|
7
|
-
# Updated:
|
7
|
+
# Updated: 21st Jannuary 2019
|
8
8
|
#
|
9
9
|
# Author: Matthew Wilson
|
10
10
|
#
|
11
|
-
# Copyright (c) 2012-
|
11
|
+
# Copyright (c) 2012-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
|
@@ -459,13 +459,14 @@ module Recls
|
|
459
459
|
|
460
460
|
case path
|
461
461
|
when ::NilClass
|
462
|
+
|
462
463
|
return nil
|
463
464
|
when ::String
|
464
|
-
|
465
|
+
|
465
466
|
path = path.to_s
|
466
467
|
else
|
467
468
|
|
468
|
-
raise TypeError, "parameter path ('#{path}') is of type #{path.class} must be an instance of #{::String} or
|
469
|
+
raise TypeError, "parameter path ('#{path}') is of type #{path.class} must be an instance of #{::String} or Recls::Entry"
|
469
470
|
end
|
470
471
|
|
471
472
|
return '' if path.empty?
|
@@ -721,7 +722,7 @@ module Recls
|
|
721
722
|
|
722
723
|
paths = paths[abs_ix..-1]
|
723
724
|
|
724
|
-
r = File.join
|
725
|
+
r = File.join(*paths)
|
725
726
|
|
726
727
|
cap = options[:canonicalise] || options[:canonicalize]
|
727
728
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
#! /usr/bin/ruby
|
2
2
|
#
|
3
|
-
# test Recls entry methods
|
3
|
+
# test Recls entry methods showing parts
|
4
4
|
|
5
5
|
$:.unshift File.join(File.dirname(__FILE__), '../..', 'lib')
|
6
6
|
|
@@ -19,11 +19,11 @@ Recls::FileSearch.new(root_dir, patterns, Recls::FILES | Recls::RECURSIVE).each
|
|
19
19
|
puts fe.short_path
|
20
20
|
puts fe.directory_path
|
21
21
|
puts drive
|
22
|
-
puts "".ljust(drive ? drive.size : 0) + fe.directory
|
23
|
-
puts "".ljust(fe.directory_path.size) + fe.file
|
24
|
-
puts "".ljust(fe.directory_path.size) +
|
25
|
-
puts "".ljust(fe.directory_path.size) + fe.stem
|
26
|
-
puts "".ljust(fe.directory_path.size + fe.stem.size) + fe.extension
|
22
|
+
puts "".ljust(drive ? drive.size : 0) + fe.directory.to_s
|
23
|
+
puts "".ljust(fe.directory_path.size) + fe.file.to_s
|
24
|
+
puts "".ljust(fe.directory_path.size) + fe.file_short_name.to_s
|
25
|
+
puts "".ljust(fe.directory_path.size) + fe.stem.to_s
|
26
|
+
puts "".ljust(fe.directory_path.size + fe.stem.size) + fe.extension.to_s
|
27
27
|
n = drive.size
|
28
28
|
fe.directory_parts.each do |part|
|
29
29
|
|
@@ -32,9 +32,9 @@ Recls::FileSearch.new(root_dir, patterns, Recls::FILES | Recls::RECURSIVE).each
|
|
32
32
|
end
|
33
33
|
|
34
34
|
puts fe.search_directory
|
35
|
-
puts "".ljust(fe.search_directory.size) + fe.search_relative_path
|
36
|
-
puts "".ljust(fe.search_directory.size) + fe.search_relative_directory_path
|
37
|
-
puts "".ljust(fe.search_directory.size) + fe.search_relative_directory
|
35
|
+
puts "".ljust(fe.search_directory.size) + fe.search_relative_path.to_s
|
36
|
+
puts "".ljust(fe.search_directory.size) + fe.search_relative_directory_path.to_s
|
37
|
+
puts "".ljust(fe.search_directory.size) + fe.search_relative_directory.to_s
|
38
38
|
|
39
39
|
n = fe.search_directory.size
|
40
40
|
fe.search_relative_directory_parts.each do |part|
|
data/test/scratch/test_entry.rb
CHANGED
@@ -15,6 +15,7 @@ def show_entry f
|
|
15
15
|
puts "entry:"
|
16
16
|
puts "\t#{'(entry)'.ljust(20)}\t#{f}"
|
17
17
|
puts "\t#{'f.path'.ljust(20)}\t#{f.path}"
|
18
|
+
puts "\t#{'f.compare_path'.ljust(20)}\t#{f.compare_path}"
|
18
19
|
puts "\t#{'f.drive'.ljust(20)}\t#{f.drive}"
|
19
20
|
puts "\t#{'f.directory_path'.ljust(20)}\t#{f.directory_path}"
|
20
21
|
puts "\t#{'f.directory'.ljust(20)}\t#{f.directory}"
|
@@ -23,11 +24,6 @@ puts "\t#{'f.directory_parts'.ljust(20)}\t[#{directory_parts.size}]"
|
|
23
24
|
directory_parts.each do |part|
|
24
25
|
puts "\t#{''.ljust(20)}\t\t#{part}"
|
25
26
|
end
|
26
|
-
search_relative_directory_parts = f.search_relative_directory_parts
|
27
|
-
puts "\t#{'f.search_relative_directory_parts'.ljust(20)}\t[#{search_relative_directory_parts.size}]"
|
28
|
-
search_relative_directory_parts.each do |part|
|
29
|
-
puts "\t#{''.ljust(20)}\t\t#{part}"
|
30
|
-
end
|
31
27
|
puts "\t#{'f.file_full_name'.ljust(20)}\t#{f.file_full_name}"
|
32
28
|
puts "\t#{'f.file_short_name'.ljust(20)}\t#{f.file_short_name}"
|
33
29
|
puts "\t#{'f.file_name_only'.ljust(20)}\t#{f.file_name_only}"
|
@@ -37,6 +33,11 @@ puts "\t#{'f.search_directory'.ljust(20)}\t#{f.search_directory}"
|
|
37
33
|
puts "\t#{'f.search_relative_path'.ljust(20)}\t#{f.search_relative_path}"
|
38
34
|
puts "\t#{'f.search_relative_directory'.ljust(20)}\t#{f.search_relative_directory}"
|
39
35
|
puts "\t#{'f.search_relative_directory_path'.ljust(20)}\t#{f.search_relative_directory_path}"
|
36
|
+
search_relative_directory_parts = f.search_relative_directory_parts
|
37
|
+
puts "\t#{'f.search_relative_directory_parts'.ljust(20)}\t[#{search_relative_directory_parts.size}]"
|
38
|
+
search_relative_directory_parts.each do |part|
|
39
|
+
puts "\t#{''.ljust(20)}\t\t#{part}"
|
40
|
+
end
|
40
41
|
|
41
42
|
puts "\t#{'f.size'.ljust(20)}\t#{f.size}"
|
42
43
|
|
@@ -52,12 +53,12 @@ puts "\t#{'f.last_access_time'.ljust(20)}\t#{f.last_access_time}"
|
|
52
53
|
end
|
53
54
|
|
54
55
|
puts
|
55
|
-
puts "stat of '.':"
|
56
|
-
show_entry Recls::stat '.'
|
56
|
+
puts "stat of '.' (from '.'):"
|
57
|
+
show_entry Recls::stat '.', '.'
|
57
58
|
|
58
59
|
puts
|
59
|
-
puts "stat of '~':"
|
60
|
-
show_entry Recls::stat '~'
|
60
|
+
puts "stat of '~' (from '.'):"
|
61
|
+
show_entry Recls::stat '~', '.'
|
61
62
|
|
62
63
|
puts
|
63
64
|
puts "directories:"
|
@@ -1,23 +1,15 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
#############################################################################
|
4
|
-
# File: ./test/scratch/test_files_and_directories.rb
|
5
|
-
#
|
6
|
-
# Purpose: COMPLETE_ME
|
7
|
-
#
|
8
|
-
# Created: 09 06 2016
|
9
|
-
# Updated: 09 06 2016
|
1
|
+
#! /usr/bin/ruby
|
10
2
|
#
|
11
|
-
#
|
12
|
-
#
|
13
|
-
# Copyright: <<TBD>>
|
14
|
-
#
|
15
|
-
#############################################################################
|
3
|
+
# test Search between files and directories
|
16
4
|
|
17
5
|
$:.unshift File.join(File.dirname(__FILE__), '../..', 'lib')
|
18
6
|
|
19
7
|
require 'recls'
|
20
8
|
|
9
|
+
puts
|
10
|
+
puts "adding own trailing slash:"
|
11
|
+
puts
|
12
|
+
|
21
13
|
Recls::FileSearch.new(nil, nil, Recls::FILES | Recls::DIRECTORIES | Recls::RECURSIVE).each do |fe|
|
22
14
|
|
23
15
|
path = fe.search_relative_path
|
@@ -31,3 +23,14 @@ Recls::FileSearch.new(nil, nil, Recls::FILES | Recls::DIRECTORIES | Recls::RECUR
|
|
31
23
|
end
|
32
24
|
end
|
33
25
|
|
26
|
+
puts
|
27
|
+
puts "specifying flag for trailing slash:"
|
28
|
+
puts
|
29
|
+
|
30
|
+
Recls::FileSearch.new(nil, nil, Recls::FILES | Recls::DIRECTORIES | Recls::RECURSIVE | Recls::MARK_DIRECTORIES).each do |fe|
|
31
|
+
|
32
|
+
path = fe.search_relative_path
|
33
|
+
|
34
|
+
puts path
|
35
|
+
end
|
36
|
+
|
@@ -1,6 +1,6 @@
|
|
1
|
-
|
1
|
+
#! /usr/bin/ruby
|
2
2
|
#
|
3
|
-
# test Recls entry methods
|
3
|
+
# test Recls entry methods showing parts, via module function
|
4
4
|
|
5
5
|
$:.unshift File.join(File.dirname(__FILE__), '../..', 'lib')
|
6
6
|
|
@@ -19,11 +19,11 @@ Recls.FileSearch(root_dir, patterns, flags: Recls::FILES).each do |fe|
|
|
19
19
|
puts fe.short_path
|
20
20
|
puts fe.directory_path
|
21
21
|
puts drive
|
22
|
-
puts "".ljust(drive ? drive.size : 0) + fe.directory
|
23
|
-
puts "".ljust(fe.directory_path.size) + fe.file
|
24
|
-
puts "".ljust(fe.directory_path.size) +
|
25
|
-
puts "".ljust(fe.directory_path.size) + fe.stem
|
26
|
-
puts "".ljust(fe.directory_path.size + fe.stem.size) + fe.extension
|
22
|
+
puts "".ljust(drive ? drive.size : 0) + fe.directory.to_s
|
23
|
+
puts "".ljust(fe.directory_path.size) + fe.file.to_s
|
24
|
+
puts "".ljust(fe.directory_path.size) + fe.file_short_name.to_s
|
25
|
+
puts "".ljust(fe.directory_path.size) + fe.stem.to_s
|
26
|
+
puts "".ljust(fe.directory_path.size + fe.stem.size) + fe.extension.to_s
|
27
27
|
n = drive.size
|
28
28
|
fe.directory_parts.each do |part|
|
29
29
|
|
@@ -32,9 +32,9 @@ Recls.FileSearch(root_dir, patterns, flags: Recls::FILES).each do |fe|
|
|
32
32
|
end
|
33
33
|
|
34
34
|
puts fe.search_directory
|
35
|
-
puts "".ljust(fe.search_directory.size) + fe.search_relative_path
|
36
|
-
puts "".ljust(fe.search_directory.size) + fe.search_relative_directory_path
|
37
|
-
puts "".ljust(fe.search_directory.size) + fe.search_relative_directory
|
35
|
+
puts "".ljust(fe.search_directory.size) + fe.search_relative_path.to_s
|
36
|
+
puts "".ljust(fe.search_directory.size) + fe.search_relative_directory_path.to_s
|
37
|
+
puts "".ljust(fe.search_directory.size) + fe.search_relative_directory.to_s
|
38
38
|
|
39
39
|
n = fe.search_directory.size
|
40
40
|
fe.search_relative_directory_parts.each do |part|
|
@@ -8,14 +8,14 @@ require 'recls'
|
|
8
8
|
|
9
9
|
puts
|
10
10
|
puts "Hidden directories:"
|
11
|
-
Recls
|
11
|
+
Recls.file_rsearch(nil, nil, Recls::DIRECTORIES | Recls::SHOW_HIDDEN).each do |fe|
|
12
12
|
|
13
13
|
puts "\t#{fe.search_relative_path}" if fe.hidden?
|
14
14
|
end
|
15
15
|
|
16
16
|
puts
|
17
17
|
puts "Hidden files:"
|
18
|
-
Recls
|
18
|
+
Recls.file_search(nil, nil, Recls::RECURSIVE | Recls::FILES | Recls::SHOW_HIDDEN).each do |fe|
|
19
19
|
|
20
20
|
puts "\t#{fe.search_relative_path}" if fe.hidden?
|
21
21
|
end
|
@@ -23,7 +23,7 @@ end
|
|
23
23
|
|
24
24
|
puts
|
25
25
|
puts "Hidden directories & files:"
|
26
|
-
Recls
|
26
|
+
Recls.file_search(nil, nil, Recls::RECURSIVE | Recls::DIRECTORIES | Recls::FILES | Recls::MARK_DIRECTORIES | Recls::SHOW_HIDDEN).each do |fe|
|
27
27
|
|
28
28
|
puts "\t#{fe.search_relative_path}" if fe.hidden?
|
29
29
|
end
|
data/test/unit/tc_recls_util.rb
CHANGED
@@ -56,6 +56,7 @@ class Test_combine_paths < Test::Unit::TestCase
|
|
56
56
|
assert_equal 'abc/def/ghi', Recls.combine_paths('abc/', 'def/ghi')
|
57
57
|
assert_equal 'abc/./def/ghi', Recls.combine_paths('abc/.', 'def/ghi')
|
58
58
|
assert_equal 'abc/./def/ghi', Recls.combine_paths('abc/./', 'def/ghi')
|
59
|
+
if RUBY_VERSION >= '2'
|
59
60
|
assert_equal 'abc/./def/ghi', Recls.combine_paths('abc/.', 'def/ghi', clean_path: false)
|
60
61
|
assert_equal 'abc/./def/ghi', Recls.combine_paths('abc/./', 'def/ghi', clean: false)
|
61
62
|
assert_equal 'abc/def/ghi', Recls.combine_paths('abc/.', 'def/ghi', clean_path: true)
|
@@ -63,16 +64,19 @@ class Test_combine_paths < Test::Unit::TestCase
|
|
63
64
|
assert_equal 'abc/def/ghi', Recls.combine_paths('abc/./.', 'def/ghi', clean_path: true)
|
64
65
|
assert_equal 'abc/../def/ghi', Recls.combine_paths('abc/..', 'def/ghi')
|
65
66
|
assert_equal 'def/ghi', Recls.combine_paths('abc/..', 'def/ghi', clean_path: true)
|
67
|
+
end
|
66
68
|
end
|
67
69
|
|
68
70
|
def test_multiple_relative
|
69
71
|
|
72
|
+
if RUBY_VERSION >= '2'
|
70
73
|
assert_equal 'a/b/c/d/e/f/g', Recls.combine_paths('a', 'b', 'c', 'd/e/f/', 'g', clean: false)
|
71
74
|
assert_equal 'a/b/c/d/e/f/g', Recls.combine_paths('a', 'b', 'c', 'd/e/f/', 'g', clean: true)
|
72
75
|
|
73
76
|
assert_equal 'a/b/c/../d/e/f/g', Recls.combine_paths('a', 'b', 'c', '..', 'd/e/f/', 'g', clean: false)
|
74
77
|
assert_equal 'a/b/d/e/f/g', Recls.combine_paths('a', 'b', 'c', '..', 'd/e/f/', 'g/', clean: true)
|
75
78
|
assert_equal 'a/b/d/e/f/g/', Recls.combine_paths('a', 'b', 'c', '..', 'd/e/f/', 'g/', canonicalise: true)
|
79
|
+
end
|
76
80
|
end
|
77
81
|
|
78
82
|
def test_various_absolute_placings
|
@@ -87,8 +91,10 @@ class Test_combine_paths < Test::Unit::TestCase
|
|
87
91
|
|
88
92
|
assert_equal '/f/g', Recls.combine_paths('/', 'a', 'b', 'c', 'd/e', '/f/g')
|
89
93
|
assert_equal '/f/g/', Recls.combine_paths('/', 'a', 'b', 'c', 'd/e', '/f/g/')
|
94
|
+
if RUBY_VERSION >= '2'
|
90
95
|
assert_equal '/f/g', Recls.combine_paths('/', 'a', 'b', 'c', 'd/e', '/f/g/', clean: true)
|
91
96
|
assert_equal '/f/g/', Recls.combine_paths('/', 'a', 'b', 'c', 'd/e', '/f/g/', canonicalise: true)
|
97
|
+
end
|
92
98
|
end
|
93
99
|
end
|
94
100
|
|
@@ -708,6 +708,53 @@ class Test_Recls_Ximpl_derive_relative_path < Test::Unit::TestCase
|
|
708
708
|
|
709
709
|
end
|
710
710
|
|
711
|
+
M = Recls::Ximpl
|
712
|
+
|
713
|
+
def test_libpath_cases_test_nils_and_empties
|
714
|
+
|
715
|
+
# to get nowhere from nowhere, go nowhere
|
716
|
+
assert_nil M.derive_relative_path(nil, nil)
|
717
|
+
assert_nil M.derive_relative_path('', nil)
|
718
|
+
assert_nil M.derive_relative_path('', '')
|
719
|
+
assert_nil M.derive_relative_path(nil, '')
|
720
|
+
|
721
|
+
# to get somewhere from nowhere, just go there
|
722
|
+
assert_equal 'abc', M.derive_relative_path(nil, 'abc')
|
723
|
+
assert_equal 'abc', M.derive_relative_path('', 'abc')
|
724
|
+
|
725
|
+
# to get nowhere from anywhere else, go nowhere
|
726
|
+
assert_nil M.derive_relative_path('dir', nil)
|
727
|
+
assert_nil M.derive_relative_path('dir', '')
|
728
|
+
end
|
729
|
+
|
730
|
+
def test_libpath_cases_test_same_location
|
731
|
+
|
732
|
+
assert_equal '.', M.derive_relative_path('abc', 'abc')
|
733
|
+
assert_equal './', M.derive_relative_path('abc/', 'abc/')
|
734
|
+
assert_equal './', M.derive_relative_path('abc', 'abc/')
|
735
|
+
|
736
|
+
assert_equal './', M.derive_relative_path('/', '/')
|
737
|
+
|
738
|
+
=begin
|
739
|
+
|
740
|
+
assert_equal '.', M.derive_relative_path('./abc', 'abc')
|
741
|
+
=end
|
742
|
+
assert_equal '.', M.derive_relative_path('./abc/', 'abc')
|
743
|
+
=begin
|
744
|
+
|
745
|
+
assert_equal './', M.derive_relative_path('./abc', 'abc/')
|
746
|
+
=end
|
747
|
+
assert_equal './', M.derive_relative_path('./abc/', 'abc/')
|
748
|
+
end
|
749
|
+
|
750
|
+
def test_libpath_cases_test_one_above
|
751
|
+
|
752
|
+
=begin
|
753
|
+
|
754
|
+
assert_equal '..', M.derive_relative_path('.', '..')
|
755
|
+
=end
|
756
|
+
end
|
757
|
+
|
711
758
|
def test_absolute_proper_subset
|
712
759
|
|
713
760
|
assert_equal('abc', Recls::Ximpl::derive_relative_path('/dir1/dir2', '/dir1/dir2/abc'))
|
@@ -720,9 +767,11 @@ class Test_Recls_Ximpl_derive_relative_path < Test::Unit::TestCase
|
|
720
767
|
assert_equal('abc/', Recls::Ximpl::derive_relative_path('dir1/dir2', 'dir1/dir2/abc/'))
|
721
768
|
assert_equal('abc/', Recls::Ximpl::derive_relative_path('dir1/dir2/', 'dir1/dir2/abc/'))
|
722
769
|
|
723
|
-
|
724
|
-
# assert_equal('/dir/dir2/abc', Recls::Ximpl::derive_relative_path('/dir1/dir2/abc', 'dir1/dir2/'))
|
770
|
+
=begin
|
725
771
|
|
772
|
+
assert_equal('/dir/dir2/abc', Recls::Ximpl::derive_relative_path('/dir1/dir2/abc', 'dir1/dir2'))
|
773
|
+
assert_equal('/dir/dir2/abc', Recls::Ximpl::derive_relative_path('/dir1/dir2/abc', 'dir1/dir2/'))
|
774
|
+
=end
|
726
775
|
end
|
727
776
|
|
728
777
|
def test_absolute_proper_subset_2
|
data/test/unit/ts_all.rb
CHANGED
@@ -2,19 +2,21 @@
|
|
2
2
|
#
|
3
3
|
# executes all other tests
|
4
4
|
|
5
|
-
|
6
|
-
this_dir = File.expand_path(File.dirname(__FILE__))
|
7
|
-
$:.unshift File.join(File.dirname(__FILE__), '../..', 'lib')
|
5
|
+
this_dir = File.expand_path(File.dirname(__FILE__))
|
8
6
|
|
9
|
-
|
7
|
+
# all tc_*rb in current directory
|
8
|
+
Dir[File.join(this_dir, 'tc_*rb')].each do |file|
|
10
9
|
|
11
|
-
|
12
|
-
|
13
|
-
next if this_file == file
|
10
|
+
$stderr.puts "requiring file '#{file}'" if $DEBUG
|
14
11
|
|
15
12
|
require file
|
16
|
-
|
17
13
|
end
|
18
14
|
|
19
|
-
|
15
|
+
# all ts_*rb in immediate sub-directories
|
16
|
+
Dir[File.join(this_dir, '*', 'ts_*rb')].each do |file|
|
17
|
+
|
18
|
+
$stderr.puts "requiring file '#{file}'" if $DEBUG
|
19
|
+
|
20
|
+
require file
|
21
|
+
end
|
20
22
|
|
metadata
CHANGED
@@ -1,18 +1,19 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: recls-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Wilson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-03-21 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
|
-
description:
|
14
|
-
|
15
|
-
|
13
|
+
description: 'RECursive LS for Ruby
|
14
|
+
|
15
|
+
'
|
16
|
+
email: matthew@synesis.com.au
|
16
17
|
executables: []
|
17
18
|
extensions: []
|
18
19
|
extra_rdoc_files: []
|
@@ -24,6 +25,8 @@ files:
|
|
24
25
|
- examples/show_readonly_files.rb
|
25
26
|
- lib/recls.rb
|
26
27
|
- lib/recls/api.rb
|
28
|
+
- lib/recls/combine_paths_1.rb
|
29
|
+
- lib/recls/combine_paths_2plus.rb
|
27
30
|
- lib/recls/entry.rb
|
28
31
|
- lib/recls/file_search.rb
|
29
32
|
- lib/recls/flags.rb
|
@@ -54,7 +57,7 @@ files:
|
|
54
57
|
- test/unit/ts_all.rb
|
55
58
|
homepage: http://recls.org/
|
56
59
|
licenses:
|
57
|
-
- 3-
|
60
|
+
- BSD-3-Clause
|
58
61
|
metadata: {}
|
59
62
|
post_install_message:
|
60
63
|
rdoc_options: []
|
@@ -62,19 +65,18 @@ require_paths:
|
|
62
65
|
- lib
|
63
66
|
required_ruby_version: !ruby/object:Gem::Requirement
|
64
67
|
requirements:
|
65
|
-
- -
|
68
|
+
- - ">="
|
66
69
|
- !ruby/object:Gem::Version
|
67
|
-
version:
|
70
|
+
version: 1.9.3
|
68
71
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
69
72
|
requirements:
|
70
|
-
- -
|
73
|
+
- - ">="
|
71
74
|
- !ruby/object:Gem::Version
|
72
75
|
version: '0'
|
73
76
|
requirements: []
|
74
77
|
rubyforge_project:
|
75
|
-
rubygems_version: 2.
|
78
|
+
rubygems_version: 2.6.11
|
76
79
|
signing_key:
|
77
80
|
specification_version: 4
|
78
81
|
summary: recls.Ruby
|
79
82
|
test_files: []
|
80
|
-
has_rdoc:
|