rbfind 1.6 → 1.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/rbfind +5 -1
- data/lib/rbfind.rb +31 -2
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d413b6a0596612705aacf768c8af9407c2c64161
|
4
|
+
data.tar.gz: 3ed66abdf7704a6c3b90698049f00cac540334b6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e6458cc0c355cdd83fecaadf2deca6d139bd2300e5316a3664976b9491636d5e15fe51a5d0e684fdc0359f38cfecc22c9fb09be27bebadae90dd4a7e50f22506
|
7
|
+
data.tar.gz: 4768b3d7faa520c476bcc75c9e8803f06d2edb9682231e001b3d3b12fabb711de6eb109d39850707beb0c88bcf212b36f42c52afba7523488c32fc2b8e3c0b35
|
data/bin/rbfind
CHANGED
@@ -353,12 +353,16 @@ def error_handle
|
|
353
353
|
show_error $!
|
354
354
|
if $!.message[ "invalid byte sequence"] then
|
355
355
|
$stderr.puts <<-EOT
|
356
|
-
Hint: Try to give
|
356
|
+
Hint: Try to give a different default encoding by explicitly setting one or
|
357
357
|
by changing the locale.
|
358
358
|
|
359
359
|
$ rbfind -K ascii-8bit ...
|
360
360
|
$ LC_ALL="C" rbfind ...
|
361
361
|
|
362
|
+
Alternatively, you may prefer to scrub the invalid encodings yourself.
|
363
|
+
|
364
|
+
$ rbfind -P 'name.scrub =~ /Fu.ball/'
|
365
|
+
|
362
366
|
EOT
|
363
367
|
end
|
364
368
|
exit 1
|
data/lib/rbfind.rb
CHANGED
@@ -58,6 +58,7 @@ In Ruby programs, you may call:
|
|
58
58
|
RbFind.run do puts path end
|
59
59
|
RbFind.run "dir" do puts path end
|
60
60
|
|
61
|
+
|
61
62
|
== File properties
|
62
63
|
|
63
64
|
f.name # file name (*)
|
@@ -199,6 +200,29 @@ Derivated from stat:
|
|
199
200
|
f.suffix # ls-like suffixes |@=/%* for pipe, ..., executable
|
200
201
|
|
201
202
|
|
203
|
+
== Encoding issues
|
204
|
+
|
205
|
+
Ruby raises an ArgumentError if, for example, an ISO8859-1-encoded
|
206
|
+
string gets read in as UTF-8-encoded and then is matched against a
|
207
|
+
UTF-8-encoded regular expression. This will happen if you are
|
208
|
+
running RbFind from an environment with something like
|
209
|
+
LC_ALL="de_DE.UTF-8" and if you are searching directories containing
|
210
|
+
single-byte encoded file names or files with single-byte or binary
|
211
|
+
content.
|
212
|
+
|
213
|
+
The #grep facility will will condone encoding mismatches by calling
|
214
|
+
the String#scrub! method. But neither the #lines and #read function
|
215
|
+
will do any transformation nor will the file names and the path
|
216
|
+
specifications be changed.
|
217
|
+
|
218
|
+
In short, if you are using the #grep method, or the -g option on the
|
219
|
+
command line you will not need to care about encoding problems. On
|
220
|
+
the other hand, if you specify the =~ operator, you will be
|
221
|
+
responsible for calling the String#scrub method yourself. Please do
|
222
|
+
not try to call the String#scrub! (bang) method for the name and path
|
223
|
+
variables because these will be used in the further processing.
|
224
|
+
|
225
|
+
|
202
226
|
== Examples
|
203
227
|
|
204
228
|
Find them all:
|
@@ -253,7 +277,7 @@ Sort without case sensitivity and preceding dot:
|
|
253
277
|
|
254
278
|
class RbFind
|
255
279
|
|
256
|
-
VERSION = "1.
|
280
|
+
VERSION = "1.7".freeze
|
257
281
|
|
258
282
|
class <<self
|
259
283
|
private :new
|
@@ -646,6 +670,7 @@ class RbFind
|
|
646
670
|
else raise "Illegal color spec: #{color}"
|
647
671
|
end
|
648
672
|
lines { |l,i|
|
673
|
+
l.scrub!
|
649
674
|
l =~ re or next
|
650
675
|
if color then
|
651
676
|
l = "#$`\e[#{color}m#$&\e[m#$'"
|
@@ -742,8 +767,9 @@ class RbFind
|
|
742
767
|
nb = File.basename newname
|
743
768
|
newname == nb or raise RuntimeError,
|
744
769
|
"#{self.class}: rename to `#{newname}' may not be a path."
|
770
|
+
nb.freeze
|
745
771
|
@levels.pop
|
746
|
-
@levels.push
|
772
|
+
@levels.push nb
|
747
773
|
build_path
|
748
774
|
File.rename p, @path
|
749
775
|
nil
|
@@ -784,6 +810,8 @@ class RbFind
|
|
784
810
|
@path
|
785
811
|
end
|
786
812
|
if @path.empty? then @path = Dir::CUR_DIR end
|
813
|
+
@fullpath.freeze
|
814
|
+
@path.freeze
|
787
815
|
end
|
788
816
|
|
789
817
|
def walk
|
@@ -853,6 +881,7 @@ class RbFind
|
|
853
881
|
dir.reverse! if @sort < 0
|
854
882
|
end
|
855
883
|
dir.each { |f|
|
884
|
+
f.freeze
|
856
885
|
begin
|
857
886
|
@levels.push f
|
858
887
|
walk
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rbfind
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '1.
|
4
|
+
version: '1.7'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bertram Scharpf
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-04-08 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: |
|
14
14
|
A replacement for the standard UNIX command find.
|
@@ -52,7 +52,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
52
52
|
requirements:
|
53
53
|
- just Ruby
|
54
54
|
rubyforge_project:
|
55
|
-
rubygems_version: 2.
|
55
|
+
rubygems_version: 2.6.2
|
56
56
|
signing_key:
|
57
57
|
specification_version: 4
|
58
58
|
summary: Ruby replacement for the standard Unix find tool
|