rbfind 1.6 → 1.7

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.
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