dirtravel 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.rdoc +9 -0
- data/Rakefile +5 -1
- data/doc/DirTravel/DirEntry.html +286 -0
- data/doc/DirTravel/DirTravelError.html +123 -0
- data/doc/DirTravel/Entry.html +1246 -0
- data/doc/DirTravel/FileEntry.html +392 -0
- data/doc/DirTravel/Travel.html +716 -0
- data/doc/DirTravel.html +158 -0
- data/doc/_index.html +172 -0
- data/doc/class_list.html +53 -0
- data/doc/css/common.css +1 -0
- data/doc/css/full_list.css +57 -0
- data/doc/css/style.css +338 -0
- data/doc/file.CHANGELOG.html +86 -0
- data/doc/file.README.html +84 -0
- data/doc/file_list.html +58 -0
- data/doc/frames.html +28 -0
- data/doc/index.html +84 -0
- data/doc/js/app.js +214 -0
- data/doc/js/full_list.js +178 -0
- data/doc/js/jquery.js +4 -0
- data/doc/method_list.html +190 -0
- data/doc/top-level-namespace.html +112 -0
- data/lib/dirtravel.rb +113 -16
- data/test/test_dirtravel.rb +51 -4
- metadata +24 -2
@@ -0,0 +1,190 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
2
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
3
|
+
<html>
|
4
|
+
<head>
|
5
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
6
|
+
|
7
|
+
<link rel="stylesheet" href="css/full_list.css" type="text/css" media="screen" charset="utf-8" />
|
8
|
+
|
9
|
+
<link rel="stylesheet" href="css/common.css" type="text/css" media="screen" charset="utf-8" />
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
<script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
|
14
|
+
|
15
|
+
<script type="text/javascript" charset="utf-8" src="js/full_list.js"></script>
|
16
|
+
|
17
|
+
|
18
|
+
<base id="base_target" target="_parent" />
|
19
|
+
</head>
|
20
|
+
<body>
|
21
|
+
<script type="text/javascript" charset="utf-8">
|
22
|
+
if (window.top.frames.main) {
|
23
|
+
document.getElementById('base_target').target = 'main';
|
24
|
+
document.body.className = 'frames';
|
25
|
+
}
|
26
|
+
</script>
|
27
|
+
<div id="content">
|
28
|
+
<h1 id="full_list_header">Method List</h1>
|
29
|
+
<div id="nav">
|
30
|
+
|
31
|
+
<span><a target="_self" href="class_list.html">
|
32
|
+
Classes
|
33
|
+
</a></span>
|
34
|
+
|
35
|
+
<span><a target="_self" href="method_list.html">
|
36
|
+
Methods
|
37
|
+
</a></span>
|
38
|
+
|
39
|
+
<span><a target="_self" href="file_list.html">
|
40
|
+
Files
|
41
|
+
</a></span>
|
42
|
+
|
43
|
+
</div>
|
44
|
+
<div id="search">Search: <input type="text" /></div>
|
45
|
+
|
46
|
+
<ul id="full_list" class="method">
|
47
|
+
|
48
|
+
|
49
|
+
<li class="r1 ">
|
50
|
+
<span class='object_link'><a href="DirTravel/Entry.html#abspath-instance_method" title="DirTravel::Entry#abspath (method)">#abspath</a></span>
|
51
|
+
<small>DirTravel::Entry</small>
|
52
|
+
</li>
|
53
|
+
|
54
|
+
|
55
|
+
<li class="r2 ">
|
56
|
+
<span class='object_link'><a href="DirTravel/Travel.html#basedir-instance_method" title="DirTravel::Travel#basedir (method)">#basedir</a></span>
|
57
|
+
<small>DirTravel::Travel</small>
|
58
|
+
</li>
|
59
|
+
|
60
|
+
|
61
|
+
<li class="r1 ">
|
62
|
+
<span class='object_link'><a href="DirTravel/FileEntry.html#basename-instance_method" title="DirTravel::FileEntry#basename (method)">#basename</a></span>
|
63
|
+
<small>DirTravel::FileEntry</small>
|
64
|
+
</li>
|
65
|
+
|
66
|
+
|
67
|
+
<li class="r2 ">
|
68
|
+
<span class='object_link'><a href="DirTravel/Travel.html#defaults-instance_method" title="DirTravel::Travel#defaults (method)">#defaults</a></span>
|
69
|
+
<small>DirTravel::Travel</small>
|
70
|
+
</li>
|
71
|
+
|
72
|
+
|
73
|
+
<li class="r1 ">
|
74
|
+
<span class='object_link'><a href="DirTravel/Entry.html#dir-instance_method" title="DirTravel::Entry#dir (method)">#dir</a></span>
|
75
|
+
<small>DirTravel::Entry</small>
|
76
|
+
</li>
|
77
|
+
|
78
|
+
|
79
|
+
<li class="r2 ">
|
80
|
+
<span class='object_link'><a href="DirTravel/Entry.html#files-instance_method" title="DirTravel::Entry#files (method)">#files</a></span>
|
81
|
+
<small>DirTravel::Entry</small>
|
82
|
+
</li>
|
83
|
+
|
84
|
+
|
85
|
+
<li class="r1 ">
|
86
|
+
<span class='object_link'><a href="DirTravel/Travel.html#filetree-class_method" title="DirTravel::Travel.filetree (method)">filetree</a></span>
|
87
|
+
<small>DirTravel::Travel</small>
|
88
|
+
</li>
|
89
|
+
|
90
|
+
|
91
|
+
<li class="r2 ">
|
92
|
+
<span class='object_link'><a href="DirTravel/FileEntry.html#initialize-instance_method" title="DirTravel::FileEntry#initialize (method)">#initialize</a></span>
|
93
|
+
<small>DirTravel::FileEntry</small>
|
94
|
+
</li>
|
95
|
+
|
96
|
+
|
97
|
+
<li class="r1 ">
|
98
|
+
<span class='object_link'><a href="DirTravel/Entry.html#initialize-instance_method" title="DirTravel::Entry#initialize (method)">#initialize</a></span>
|
99
|
+
<small>DirTravel::Entry</small>
|
100
|
+
</li>
|
101
|
+
|
102
|
+
|
103
|
+
<li class="r2 ">
|
104
|
+
<span class='object_link'><a href="DirTravel/Travel.html#initialize-instance_method" title="DirTravel::Travel#initialize (method)">#initialize</a></span>
|
105
|
+
<small>DirTravel::Travel</small>
|
106
|
+
</li>
|
107
|
+
|
108
|
+
|
109
|
+
<li class="r1 ">
|
110
|
+
<span class='object_link'><a href="DirTravel/DirEntry.html#initialize-instance_method" title="DirTravel::DirEntry#initialize (method)">#initialize</a></span>
|
111
|
+
<small>DirTravel::DirEntry</small>
|
112
|
+
</li>
|
113
|
+
|
114
|
+
|
115
|
+
<li class="r2 ">
|
116
|
+
<span class='object_link'><a href="DirTravel/Entry.html#name-instance_method" title="DirTravel::Entry#name (method)">#name</a></span>
|
117
|
+
<small>DirTravel::Entry</small>
|
118
|
+
</li>
|
119
|
+
|
120
|
+
|
121
|
+
<li class="r1 ">
|
122
|
+
<span class='object_link'><a href="DirTravel/Entry.html#parts-instance_method" title="DirTravel::Entry#parts (method)">#parts</a></span>
|
123
|
+
<small>DirTravel::Entry</small>
|
124
|
+
</li>
|
125
|
+
|
126
|
+
|
127
|
+
<li class="r2 ">
|
128
|
+
<span class='object_link'><a href="DirTravel/Entry.html#path-instance_method" title="DirTravel::Entry#path (method)">#path</a></span>
|
129
|
+
<small>DirTravel::Entry</small>
|
130
|
+
</li>
|
131
|
+
|
132
|
+
|
133
|
+
<li class="r1 ">
|
134
|
+
<span class='object_link'><a href="DirTravel/Entry.html#relative%3F-instance_method" title="DirTravel::Entry#relative? (method)">#relative?</a></span>
|
135
|
+
<small>DirTravel::Entry</small>
|
136
|
+
</li>
|
137
|
+
|
138
|
+
|
139
|
+
<li class="r2 ">
|
140
|
+
<span class='object_link'><a href="DirTravel/Entry.html#rename-instance_method" title="DirTravel::Entry#rename (method)">#rename</a></span>
|
141
|
+
<small>DirTravel::Entry</small>
|
142
|
+
</li>
|
143
|
+
|
144
|
+
|
145
|
+
<li class="r1 ">
|
146
|
+
<span class='object_link'><a href="DirTravel/Travel.html#root-instance_method" title="DirTravel::Travel#root (method)">#root</a></span>
|
147
|
+
<small>DirTravel::Travel</small>
|
148
|
+
</li>
|
149
|
+
|
150
|
+
|
151
|
+
<li class="r2 ">
|
152
|
+
<span class='object_link'><a href="DirTravel/Entry.html#select_level-instance_method" title="DirTravel::Entry#select_level (method)">#select_level</a></span>
|
153
|
+
<small>DirTravel::Entry</small>
|
154
|
+
</li>
|
155
|
+
|
156
|
+
|
157
|
+
<li class="r1 ">
|
158
|
+
<span class='object_link'><a href="DirTravel/Entry.html#stat-instance_method" title="DirTravel::Entry#stat (method)">#stat</a></span>
|
159
|
+
<small>DirTravel::Entry</small>
|
160
|
+
</li>
|
161
|
+
|
162
|
+
|
163
|
+
<li class="r2 ">
|
164
|
+
<span class='object_link'><a href="DirTravel/Entry.html#subpath-instance_method" title="DirTravel::Entry#subpath (method)">#subpath</a></span>
|
165
|
+
<small>DirTravel::Entry</small>
|
166
|
+
</li>
|
167
|
+
|
168
|
+
|
169
|
+
<li class="r1 ">
|
170
|
+
<span class='object_link'><a href="DirTravel/FileEntry.html#suffix-instance_method" title="DirTravel::FileEntry#suffix (method)">#suffix</a></span>
|
171
|
+
<small>DirTravel::FileEntry</small>
|
172
|
+
</li>
|
173
|
+
|
174
|
+
|
175
|
+
<li class="r2 ">
|
176
|
+
<span class='object_link'><a href="DirTravel/Entry.html#tip-instance_method" title="DirTravel::Entry#tip (method)">#tip</a></span>
|
177
|
+
<small>DirTravel::Entry</small>
|
178
|
+
</li>
|
179
|
+
|
180
|
+
|
181
|
+
<li class="r1 ">
|
182
|
+
<span class='object_link'><a href="DirTravel/Travel.html#travel-instance_method" title="DirTravel::Travel#travel (method)">#travel</a></span>
|
183
|
+
<small>DirTravel::Travel</small>
|
184
|
+
</li>
|
185
|
+
|
186
|
+
|
187
|
+
</ul>
|
188
|
+
</div>
|
189
|
+
</body>
|
190
|
+
</html>
|
@@ -0,0 +1,112 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
2
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
3
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
4
|
+
<head>
|
5
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
6
|
+
<title>
|
7
|
+
Top Level Namespace
|
8
|
+
|
9
|
+
— Documentation by YARD 0.8.6.1
|
10
|
+
|
11
|
+
</title>
|
12
|
+
|
13
|
+
<link rel="stylesheet" href="css/style.css" type="text/css" charset="utf-8" />
|
14
|
+
|
15
|
+
<link rel="stylesheet" href="css/common.css" type="text/css" charset="utf-8" />
|
16
|
+
|
17
|
+
<script type="text/javascript" charset="utf-8">
|
18
|
+
hasFrames = window.top.frames.main ? true : false;
|
19
|
+
relpath = '';
|
20
|
+
framesUrl = "frames.html#!" + escape(window.location.href);
|
21
|
+
</script>
|
22
|
+
|
23
|
+
|
24
|
+
<script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
|
25
|
+
|
26
|
+
<script type="text/javascript" charset="utf-8" src="js/app.js"></script>
|
27
|
+
|
28
|
+
|
29
|
+
</head>
|
30
|
+
<body>
|
31
|
+
<div id="header">
|
32
|
+
<div id="menu">
|
33
|
+
|
34
|
+
<a href="_index.html">Index</a> »
|
35
|
+
|
36
|
+
|
37
|
+
<span class="title">Top Level Namespace</span>
|
38
|
+
|
39
|
+
|
40
|
+
<div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
|
41
|
+
</div>
|
42
|
+
|
43
|
+
<div id="search">
|
44
|
+
|
45
|
+
<a class="full_list_link" id="class_list_link"
|
46
|
+
href="class_list.html">
|
47
|
+
Class List
|
48
|
+
</a>
|
49
|
+
|
50
|
+
<a class="full_list_link" id="method_list_link"
|
51
|
+
href="method_list.html">
|
52
|
+
Method List
|
53
|
+
</a>
|
54
|
+
|
55
|
+
<a class="full_list_link" id="file_list_link"
|
56
|
+
href="file_list.html">
|
57
|
+
File List
|
58
|
+
</a>
|
59
|
+
|
60
|
+
</div>
|
61
|
+
<div class="clear"></div>
|
62
|
+
</div>
|
63
|
+
|
64
|
+
<iframe id="search_frame"></iframe>
|
65
|
+
|
66
|
+
<div id="content"><h1>Top Level Namespace
|
67
|
+
|
68
|
+
|
69
|
+
|
70
|
+
</h1>
|
71
|
+
|
72
|
+
<dl class="box">
|
73
|
+
|
74
|
+
|
75
|
+
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
|
80
|
+
|
81
|
+
</dl>
|
82
|
+
<div class="clear"></div>
|
83
|
+
|
84
|
+
<h2>Defined Under Namespace</h2>
|
85
|
+
<p class="children">
|
86
|
+
|
87
|
+
|
88
|
+
<strong class="modules">Modules:</strong> <span class='object_link'><a href="DirTravel.html" title="DirTravel (module)">DirTravel</a></span>
|
89
|
+
|
90
|
+
|
91
|
+
|
92
|
+
|
93
|
+
</p>
|
94
|
+
|
95
|
+
|
96
|
+
|
97
|
+
|
98
|
+
|
99
|
+
|
100
|
+
|
101
|
+
|
102
|
+
|
103
|
+
</div>
|
104
|
+
|
105
|
+
<div id="footer">
|
106
|
+
Generated on Sat Jan 18 17:51:32 2014 by
|
107
|
+
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
108
|
+
0.8.6.1 (ruby-1.9.3).
|
109
|
+
</div>
|
110
|
+
|
111
|
+
</body>
|
112
|
+
</html>
|
data/lib/dirtravel.rb
CHANGED
@@ -7,7 +7,11 @@
|
|
7
7
|
# content. The "filetree" class method provides interface for getting
|
8
8
|
# the content with few options (see: DirTravel::Travel.filetree for
|
9
9
|
# details).
|
10
|
-
#
|
10
|
+
#
|
11
|
+
# See the DirTravel::Entry methods doc for possibilities in examining
|
12
|
+
# the directory hierachy.
|
13
|
+
#
|
14
|
+
#
|
11
15
|
# Examples:
|
12
16
|
# require 'dirtravel'
|
13
17
|
#
|
@@ -25,7 +29,7 @@
|
|
25
29
|
# end
|
26
30
|
#
|
27
31
|
# # Get MP3 files and create a list of all album directories
|
28
|
-
# #
|
32
|
+
# # (assuming ".../<album>/<song>" hierarhcy).
|
29
33
|
# d = DirTravel::Travel.filetree( '.', { :suffix => '.mp3' } )
|
30
34
|
# albums = d.select_level( d.node_height - 1 )
|
31
35
|
#
|
@@ -35,12 +39,16 @@ module DirTravel
|
|
35
39
|
require 'rubytree'
|
36
40
|
|
37
41
|
|
42
|
+
class DirTravelError < RuntimeError; end
|
43
|
+
|
44
|
+
|
38
45
|
# Extend RubyTree base class with file and directory features.
|
39
46
|
class Entry < Tree::TreeNode
|
40
47
|
attr_accessor :name
|
41
48
|
|
42
49
|
def initialize( name )
|
43
50
|
super( name, nil )
|
51
|
+
@abspath = nil
|
44
52
|
end
|
45
53
|
|
46
54
|
|
@@ -48,64 +56,125 @@ module DirTravel
|
|
48
56
|
#
|
49
57
|
# @param basedir [Entry] Starting level for the hierarchy.
|
50
58
|
# @return [Array] Array of names in hierarchy.
|
51
|
-
def
|
59
|
+
def parts( basedir = self )
|
52
60
|
parents = []
|
53
61
|
while basedir
|
54
|
-
parents.push basedir.
|
62
|
+
parents.push basedir.tip
|
55
63
|
basedir = basedir.parent
|
56
64
|
end
|
57
65
|
parents.reverse
|
58
66
|
end
|
59
67
|
|
68
|
+
alias pathArray parts
|
69
|
+
|
70
|
+
|
60
71
|
# Relative path.
|
61
72
|
def path
|
62
|
-
|
73
|
+
parts.join( '/' )
|
63
74
|
end
|
64
75
|
|
76
|
+
|
65
77
|
# Relative path under root.
|
66
|
-
|
67
|
-
|
78
|
+
#
|
79
|
+
# @param level [Integer] Level down from root.
|
80
|
+
def subpath( level = 1 )
|
81
|
+
pa = parts
|
82
|
+
if level < 0 || level > pa.length
|
83
|
+
raise DirTravelError, "Invalid index for subpath level!"
|
84
|
+
end
|
85
|
+
pa[ level .. -1 ].join( '/' )
|
68
86
|
end
|
69
87
|
|
88
|
+
|
70
89
|
# Absolute path.
|
71
90
|
def abspath
|
72
|
-
|
91
|
+
if @abspath
|
92
|
+
@abspath
|
93
|
+
elsif self == root
|
94
|
+
Dir.pwd
|
95
|
+
else
|
96
|
+
root.abspath + '/' + subpath
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
|
101
|
+
# Top directory name (usually same as name).
|
102
|
+
def tip
|
103
|
+
@name.split( "/" )[-1]
|
73
104
|
end
|
74
105
|
|
75
|
-
|
106
|
+
|
107
|
+
# Relative path of parenting directory.
|
76
108
|
#
|
77
109
|
# @param basedir [Entry] Starting level for the hierarchy.
|
78
110
|
# @return [String] Containing directory.
|
79
111
|
def dir( basedir = self )
|
80
|
-
|
112
|
+
parts( basedir.parent ).join( '/' )
|
81
113
|
end
|
82
114
|
|
115
|
+
|
83
116
|
# Select all siblings from given node depth.
|
84
117
|
#
|
85
118
|
# @param level [Integer] Selected level in hierachy. Level is
|
86
|
-
#
|
119
|
+
# number of steps down in hierarhcy.
|
87
120
|
# @return [Array] Array of siblings in selected hierarchy.
|
88
121
|
def select_level( level )
|
89
122
|
select do |i| i.node_depth == level; end
|
90
123
|
end
|
91
124
|
|
125
|
+
|
92
126
|
# Return all file entries in hierarchy.
|
93
127
|
def files
|
94
128
|
select do |i| i.kind_of?( FileEntry ) end
|
95
129
|
end
|
96
130
|
|
131
|
+
|
97
132
|
# File.stat data for the Entry.
|
98
133
|
def stat
|
99
134
|
File.stat( path )
|
100
135
|
end
|
136
|
+
|
137
|
+
# Relative path Entry.
|
138
|
+
def relative?
|
139
|
+
@name[0] != '/'
|
140
|
+
end
|
141
|
+
|
142
|
+
# Rename node.
|
143
|
+
#
|
144
|
+
# @param name [String] If name is abspath then Entry becomes
|
145
|
+
# abspath.
|
146
|
+
def rename( name )
|
147
|
+
@name = name
|
148
|
+
|
149
|
+
# Absolute or relative path?
|
150
|
+
if name[0] == "/"
|
151
|
+
@abspath = name
|
152
|
+
else
|
153
|
+
@abspath = nil
|
154
|
+
end
|
155
|
+
end
|
156
|
+
|
101
157
|
end
|
102
158
|
|
103
159
|
|
104
160
|
# Directory type entry.
|
105
161
|
class DirEntry < Entry
|
106
|
-
|
162
|
+
|
163
|
+
# Instantiate.
|
164
|
+
#
|
165
|
+
# @param name [String] Directory name.
|
166
|
+
# @param root [Boolean] If root, abspath is set now.
|
167
|
+
def initialize( name, root = false )
|
107
168
|
super( name )
|
169
|
+
if root
|
170
|
+
if name[0] == '/'
|
171
|
+
@abspath = name
|
172
|
+
else
|
173
|
+
@abspath = Dir.pwd + '/' + name
|
174
|
+
end
|
175
|
+
end
|
108
176
|
end
|
177
|
+
|
109
178
|
end
|
110
179
|
|
111
180
|
|
@@ -133,6 +202,8 @@ module DirTravel
|
|
133
202
|
# Limit search to files with "suffix" (default: nil).
|
134
203
|
# files::
|
135
204
|
# Include files to search (default: true).
|
205
|
+
# inclusive::
|
206
|
+
# Basedirs parent becomes the basedir (default: false).
|
136
207
|
#
|
137
208
|
# Example:
|
138
209
|
# d1 = DirTravel::Travel.filetree( dir1, { :sort => true, :suffix => '.mp3' } )
|
@@ -153,8 +224,21 @@ module DirTravel
|
|
153
224
|
# @param options [Hash] Hash optionally including keys: :sort, :suffix, :files.
|
154
225
|
# @return [DirEntry] Root item of the file system hierarchy.
|
155
226
|
def Travel.filetree( basedir = '.', options = {} )
|
227
|
+
|
156
228
|
r = Travel.new( basedir, options )
|
157
229
|
r.travel
|
230
|
+
|
231
|
+
if r.defaults[ :inclusive ]
|
232
|
+
path = File.dirname( r.root.abspath )
|
233
|
+
if r.root.relative?
|
234
|
+
path = File.basename( path )
|
235
|
+
end
|
236
|
+
newRoot = DirEntry.new( path, true )
|
237
|
+
r.root.rename( r.root.tip )
|
238
|
+
newRoot.add( r.root )
|
239
|
+
r.root = newRoot
|
240
|
+
end
|
241
|
+
|
158
242
|
r.root
|
159
243
|
end
|
160
244
|
|
@@ -163,14 +247,16 @@ module DirTravel
|
|
163
247
|
@basedir = basedir
|
164
248
|
|
165
249
|
@defaults = {
|
166
|
-
:suffix
|
167
|
-
:sort
|
168
|
-
:files
|
250
|
+
:suffix => nil,
|
251
|
+
:sort => false,
|
252
|
+
:files => true,
|
253
|
+
:inclusive => false,
|
169
254
|
}
|
170
255
|
|
171
256
|
@defaults.merge!( options )
|
172
257
|
|
173
|
-
@root = DirEntry.new( @basedir )
|
258
|
+
@root = DirEntry.new( clean( @basedir ), true )
|
259
|
+
|
174
260
|
end
|
175
261
|
|
176
262
|
|
@@ -183,6 +269,17 @@ module DirTravel
|
|
183
269
|
|
184
270
|
private
|
185
271
|
|
272
|
+
# Clean relative path head (remove dot etc).
|
273
|
+
def clean( dir )
|
274
|
+
if dir[0..1] == './'
|
275
|
+
dir = dir[ 2..-1 ]
|
276
|
+
elsif dir[0] == '.'
|
277
|
+
dir = ""
|
278
|
+
end
|
279
|
+
dir
|
280
|
+
end
|
281
|
+
|
282
|
+
|
186
283
|
# Recursively get all files with suffix. Ignore suffix if
|
187
284
|
# suffix is nil.
|
188
285
|
def entriesIn( dir, node, suffix = nil )
|
data/test/test_dirtravel.rb
CHANGED
@@ -32,10 +32,16 @@ class DirTravelTest < Test::Unit::TestCase
|
|
32
32
|
|
33
33
|
def test_paths
|
34
34
|
data = DirTravel::Travel.filetree( 'test' )
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
35
|
+
2.times do
|
36
|
+
assert_equal( 'test/test_0/test_0_1', data.select_level( 2 )[ 0 ].path )
|
37
|
+
assert_equal( 'test/test_0/test_0_0', data.select_level( 2 )[ 1 ].path )
|
38
|
+
assert_equal( 'test_0/test_0_1', data.select_level( 2 )[ 0 ].subpath )
|
39
|
+
assert_equal( 'test_0_1', data.select_level( 2 )[ 0 ].subpath( 2 ) )
|
40
|
+
assert_equal( 'test/test_0', data.select_level( 2 )[ 0 ].dir )
|
41
|
+
assert_equal( Dir.pwd + '/test/test_0/test_0_1',
|
42
|
+
data.select_level( 2 )[ 0 ].abspath )
|
43
|
+
data = DirTravel::Travel.filetree( Dir.pwd + '/test' )
|
44
|
+
end
|
39
45
|
end
|
40
46
|
|
41
47
|
def test_stat
|
@@ -59,4 +65,45 @@ class DirTravelTest < Test::Unit::TestCase
|
|
59
65
|
assert_equal( 5, data.length )
|
60
66
|
end
|
61
67
|
|
68
|
+
def test_tip_rel
|
69
|
+
target = 'test'
|
70
|
+
data = DirTravel::Travel.filetree( target )
|
71
|
+
assert_equal( target, data.name )
|
72
|
+
assert_equal( 'test', data.tip )
|
73
|
+
end
|
74
|
+
|
75
|
+
def test_tip_abs
|
76
|
+
pwd = Dir.pwd
|
77
|
+
target = pwd + '/test'
|
78
|
+
data = DirTravel::Travel.filetree( target )
|
79
|
+
assert_equal( target, data.name )
|
80
|
+
assert_equal( 'test', data.tip )
|
81
|
+
end
|
82
|
+
|
83
|
+
def test_inclusive_rel
|
84
|
+
pwd = 'test'
|
85
|
+
target = pwd + '/test_0'
|
86
|
+
data = DirTravel::Travel.filetree( target, { :inclusive => true } )
|
87
|
+
assert_equal( pwd, data.name )
|
88
|
+
assert_equal( 'test', data.tip )
|
89
|
+
assert_equal( 1, data.children.length )
|
90
|
+
root = data.children[0]
|
91
|
+
assert_equal( 'test_0', root.name )
|
92
|
+
assert_equal( 'test_0', root.tip )
|
93
|
+
assert_equal( 'test/test_0', root.path )
|
94
|
+
end
|
95
|
+
|
96
|
+
def test_inclusive_abs
|
97
|
+
pwd = Dir.pwd + '/test'
|
98
|
+
target = pwd + '/test_0'
|
99
|
+
data = DirTravel::Travel.filetree( target, { :inclusive => true } )
|
100
|
+
assert_equal( pwd, data.name )
|
101
|
+
assert_equal( 'test', data.tip )
|
102
|
+
assert_equal( 1, data.children.length )
|
103
|
+
root = data.children[0]
|
104
|
+
assert_equal( 'test_0', root.name )
|
105
|
+
assert_equal( 'test_0', root.tip )
|
106
|
+
assert_equal( 'test/test_0', root.path )
|
107
|
+
end
|
108
|
+
|
62
109
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dirtravel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2014-01-18 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rubytree
|
@@ -37,10 +37,32 @@ extra_rdoc_files:
|
|
37
37
|
- README.rdoc
|
38
38
|
files:
|
39
39
|
- README.rdoc
|
40
|
+
- CHANGELOG.rdoc
|
40
41
|
- LICENSE
|
41
42
|
- Rakefile
|
42
43
|
- lib/dirtravel.rb
|
43
44
|
- test/test_dirtravel.rb
|
45
|
+
- doc/top-level-namespace.html
|
46
|
+
- doc/js/full_list.js
|
47
|
+
- doc/js/app.js
|
48
|
+
- doc/js/jquery.js
|
49
|
+
- doc/index.html
|
50
|
+
- doc/css/common.css
|
51
|
+
- doc/css/full_list.css
|
52
|
+
- doc/css/style.css
|
53
|
+
- doc/DirTravel/Travel.html
|
54
|
+
- doc/DirTravel/DirEntry.html
|
55
|
+
- doc/DirTravel/DirTravelError.html
|
56
|
+
- doc/DirTravel/Entry.html
|
57
|
+
- doc/DirTravel/FileEntry.html
|
58
|
+
- doc/file.README.html
|
59
|
+
- doc/method_list.html
|
60
|
+
- doc/file_list.html
|
61
|
+
- doc/DirTravel.html
|
62
|
+
- doc/class_list.html
|
63
|
+
- doc/_index.html
|
64
|
+
- doc/file.CHANGELOG.html
|
65
|
+
- doc/frames.html
|
44
66
|
homepage:
|
45
67
|
licenses:
|
46
68
|
- Ruby
|