findler 0.0.5 → 0.0.6
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.
- data/README.md +6 -2
- data/lib/findler.rb +1 -1
- data/lib/findler/filters.rb +2 -2
- data/lib/findler/version.rb +1 -1
- data/test/filters_test.rb +17 -2
- data/test/findler_test.rb +2 -2
- data/test/minitest_helper.rb +7 -0
- metadata +3 -3
data/README.md
CHANGED
@@ -104,9 +104,9 @@ class Findler::Filters
|
|
104
104
|
end
|
105
105
|
|
106
106
|
f = Findler.new "/Users/mrm"
|
107
|
-
f.add_extensions
|
107
|
+
f.add_extensions %w(.jpg .jpeg .cr2 .nef)
|
108
108
|
f.case_insensitive!
|
109
|
-
f.add_filter
|
109
|
+
f.add_filter :exif_only
|
110
110
|
```
|
111
111
|
|
112
112
|
### Filter implementation notes
|
@@ -123,6 +123,10 @@ Because procs and lambdas aren't ```Marshal```able, and I didn't want to use som
|
|
123
123
|
|
124
124
|
## Changelog
|
125
125
|
|
126
|
+
### 0.0.6
|
127
|
+
* ```add_filters``` takes an array, not a glob
|
128
|
+
* added tests for order_by_mtime filters
|
129
|
+
|
126
130
|
### 0.0.5
|
127
131
|
* ```add_patterns``` and ```add_extensions``` take an array, not a glob
|
128
132
|
|
data/lib/findler.rb
CHANGED
data/lib/findler/filters.rb
CHANGED
@@ -11,12 +11,12 @@ class Findler::Filters
|
|
11
11
|
|
12
12
|
# order by the mtime of each file. Oldest files first.
|
13
13
|
def self.order_by_mtime_asc(paths)
|
14
|
-
preserve_sort_by(paths) { |ea| ea.mtime }
|
14
|
+
preserve_sort_by(paths) { |ea| ea.mtime.to_i }
|
15
15
|
end
|
16
16
|
|
17
17
|
# reverse order by the mtime of each file. Newest files first.
|
18
18
|
def self.order_by_mtime_desc(paths)
|
19
|
-
preserve_sort_by(paths) { |ea| -ea.mtime }
|
19
|
+
preserve_sort_by(paths) { |ea| -1 * ea.mtime.to_i }
|
20
20
|
end
|
21
21
|
|
22
22
|
# order by the name of each file.
|
data/lib/findler/version.rb
CHANGED
data/test/filters_test.rb
CHANGED
@@ -1,15 +1,30 @@
|
|
1
1
|
require 'minitest_helper'
|
2
2
|
|
3
3
|
describe Findler::Filters do
|
4
|
-
it "
|
4
|
+
it "preserves sort order with no result" do
|
5
5
|
a = %w(h a p p y)
|
6
6
|
b = Findler::Filters.preserve_sort_by(a) { 0 }
|
7
7
|
b.must_equal a
|
8
8
|
end
|
9
9
|
|
10
|
-
it "
|
10
|
+
it "preserves sort order" do
|
11
11
|
a = [3.5, 3.1, 1.1, 2.0, 1.5, 1.3]
|
12
12
|
b = Findler::Filters.preserve_sort_by(a) { |ea| ea.to_i }
|
13
13
|
b.must_equal [1.1, 1.5, 1.3, 2.0, 3.5, 3.1]
|
14
14
|
end
|
15
|
+
|
16
|
+
it "sorts by mtime" do
|
17
|
+
with_tmp_dir do
|
18
|
+
srand(8675309) # <- stable rand()
|
19
|
+
names = 10.times.collect { rand_alphanumeric + ".txt" }
|
20
|
+
names.each_with_index do |ea, index|
|
21
|
+
FileUtils.touch ea, :mtime => (Time.now.to_i + index)
|
22
|
+
end
|
23
|
+
paths = names.collect { |ea| Pathname.new(ea) }
|
24
|
+
glob = Pathname.glob("*.txt")
|
25
|
+
glob.wont_equal(paths) # because the order was random.
|
26
|
+
Findler::Filters.order_by_mtime_asc(glob).must_equal(paths)
|
27
|
+
Findler::Filters.order_by_mtime_desc(glob).must_equal(paths.reverse)
|
28
|
+
end
|
29
|
+
end
|
15
30
|
end
|
data/test/findler_test.rb
CHANGED
@@ -199,7 +199,7 @@ describe Findler do
|
|
199
199
|
:subdirs_per_dir => 1,
|
200
200
|
}) do |dir|
|
201
201
|
f = Findler.new(dir)
|
202
|
-
f.add_filters
|
202
|
+
f.add_filters([:order_by_name, :files_first])
|
203
203
|
expected = %W(tmp-0.a tmp-1.a dir-0/tmp-0.a dir-0/tmp-1.a)
|
204
204
|
collect_files(f.iterator).must_equal expected
|
205
205
|
f.add_filter :reverse
|
@@ -214,7 +214,7 @@ describe Findler do
|
|
214
214
|
:subdirs_per_dir => 1,
|
215
215
|
}) do |dir|
|
216
216
|
f = Findler.new(dir)
|
217
|
-
f.add_filters
|
217
|
+
f.add_filters([:order_by_name, :directories_first])
|
218
218
|
expected = %W(dir-0/tmp-0.a dir-0/tmp-1.a tmp-0.a tmp-1.a)
|
219
219
|
collect_files(f.iterator).must_equal expected
|
220
220
|
f.add_filter :reverse
|
data/test/minitest_helper.rb
CHANGED
@@ -74,3 +74,10 @@ def fs_case_sensitive?
|
|
74
74
|
`rm CASETEST`
|
75
75
|
end
|
76
76
|
end
|
77
|
+
|
78
|
+
ALPHANUMERIC = (('a'..'z').to_a + ('A'..'Z').to_a + ('0'..'9').to_a).freeze
|
79
|
+
def rand_alphanumeric(length = 10)
|
80
|
+
(0..length).collect do
|
81
|
+
ALPHANUMERIC[rand(ALPHANUMERIC.length)]
|
82
|
+
end.join
|
83
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: findler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -130,7 +130,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
130
130
|
version: '0'
|
131
131
|
segments:
|
132
132
|
- 0
|
133
|
-
hash:
|
133
|
+
hash: 1051954001939010091
|
134
134
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
135
135
|
none: false
|
136
136
|
requirements:
|
@@ -139,7 +139,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
139
139
|
version: '0'
|
140
140
|
segments:
|
141
141
|
- 0
|
142
|
-
hash:
|
142
|
+
hash: 1051954001939010091
|
143
143
|
requirements: []
|
144
144
|
rubyforge_project:
|
145
145
|
rubygems_version: 1.8.23
|