rbfind 1.6 → 1.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/bin/rbfind +5 -1
  3. data/lib/rbfind.rb +31 -2
  4. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c046a612c3da3a05daa0de7853ebf36891dea0da
4
- data.tar.gz: 279bdbadfef3185b025c02d6d1f84d7ddc9bda35
3
+ metadata.gz: d413b6a0596612705aacf768c8af9407c2c64161
4
+ data.tar.gz: 3ed66abdf7704a6c3b90698049f00cac540334b6
5
5
  SHA512:
6
- metadata.gz: c1cc146111ab1bd02e9978bbede94b063c61675f013ba72219385f04312b8a1a7641225e6a04c8bc4996d3516b17a503f11dc1c08b41da24601a75281541bea0
7
- data.tar.gz: a887cfd06d7a547d881e450284a94d2f9079d4a802cfa10be1efc334391c05bd0266e7a8bbbae6a26aca09872da5f58d4573e08ac5541357a018f45bb100d2e6
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 me a different default encoding by explicitly giving one or
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.6".freeze
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 newname
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.6'
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: 2015-07-14 00:00:00.000000000 Z
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.4.8
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