rbfind 2.1 → 2.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8ccb45a241d65a9dadc83c1ba5a72515f2165d18bf84564e15fad687010221a8
4
- data.tar.gz: aef115794fdd548ba799413611e39964eca2c9ce9dc10d7ee355e95c52af1ff9
3
+ metadata.gz: cc576c9c24d5acd2c31b95e55bfd40b306c1510060c06c2a5d00140c1fca77dd
4
+ data.tar.gz: e2a95604bf31b4290d71b0c93da8bff1cde417407cf6c22c79872cf4132c6de3
5
5
  SHA512:
6
- metadata.gz: 95c622fbc6cadf9b86eafa357c1a3dadbdb9ca8df85a83569e2855254c38bc219c11fc4e6a2c59dbeb730ff0f7e6b3133e8e5827158821c8d7ad9d6e3b03be04
7
- data.tar.gz: f7d5151eb5402104aa7cedc31e932ec9471b0d73df230a1b7943c664ba3d2be98c8bf340624c9c6779330776eefea64241b0cdf449dd61d5ecea70c8625dd4a2
6
+ metadata.gz: 671c10d123f2a025f4ee3b0f0b08cbe2a74ef830a0b8f56cd7485470c68051902db9ace56b00a5f479d36ceefb802d133ddd43aa5cc025286a49405ce4860e79
7
+ data.tar.gz: 39a4b9cd0565455b010228a68fefd7d021e81953cdd23c150555a83fef577a342282f42b6476c6f1e97287d9e99b659349284eae55244fbfff01edf40a2d724c
data/bin/rbfind CHANGED
@@ -142,7 +142,7 @@ module RbFind
142
142
  @binary or @block = "not binary? and (#@block)"
143
143
 
144
144
  else
145
- @block ||= if @args.last and not (File.exists? @args.last) then
145
+ @block ||= if @args.last and not (File.lstat @args.last rescue false) then
146
146
  @args.pop.dup
147
147
  else
148
148
  @puts ||= true
@@ -369,6 +369,7 @@ module RbFind
369
369
  alias hidden hidden?
370
370
  alias visible visible?
371
371
  alias broken_link broken_link?
372
+ alias broken broken?
372
373
  alias dir dir?
373
374
  alias binary binary?
374
375
  alias bin bin?
@@ -8,7 +8,7 @@ require "rbfind/csv"
8
8
 
9
9
  module RbFind
10
10
 
11
- VERSION = "2.1".freeze
11
+ VERSION = "2.4".freeze
12
12
 
13
13
  =begin rdoc
14
14
 
@@ -307,7 +307,7 @@ Sort without case sensitivity and preceding dot:
307
307
  else
308
308
  args.each { |base|
309
309
  handle_error do
310
- File.exists? base or raise "`#{base}` doesn't exist."
310
+ File.lstat base rescue raise "`#{base}` doesn't exist."
311
311
  visit_depth base
312
312
  end
313
313
  }
@@ -519,12 +519,13 @@ Sort without case sensitivity and preceding dot:
519
519
  def readlink ; File.readlink @path if stat.symlink? ; end
520
520
 
521
521
  def broken_link?
522
- return if stat.symlink?
522
+ return unless stat.symlink?
523
523
  rstat
524
524
  false
525
525
  rescue
526
526
  true
527
527
  end
528
+ alias broken? broken_link?
528
529
 
529
530
  ARROW = " -> "
530
531
  def arrow
@@ -551,7 +552,11 @@ Sort without case sensitivity and preceding dot:
551
552
  # Check whether a directory contains an entry.
552
553
  #
553
554
  def contains? name
554
- File.exists? File.join @path, name
555
+ p = File.join @path, name
556
+ File.lstat p
557
+ true
558
+ rescue
559
+ false
555
560
  end
556
561
 
557
562
  # :call-seq:
@@ -83,6 +83,16 @@ class Numeric # sizes in bytes
83
83
  end
84
84
 
85
85
 
86
+ class Integer
87
+ def to_g
88
+ s = to_s
89
+ l = []
90
+ while (t = s.slice! /\d{1,3}\z/) do l.unshift t end
91
+ l.join "_"
92
+ end
93
+ end
94
+
95
+
86
96
  class Numeric
87
97
  "smhdw".each_char { |c|
88
98
  define_method c do Time.to_sec self, c end
@@ -9,18 +9,28 @@ module RbFind
9
9
 
10
10
  def initialize *heads
11
11
  heads.flatten!
12
- @heads = heads
12
+ @heads = heads.map { |h|
13
+ a = case h
14
+ when />\z/ then +1
15
+ when /\^\z/ then 0
16
+ when /<?\z/ then -1
17
+ end
18
+ [ $`, a]
19
+ }
13
20
  @rows = []
14
21
  end
15
22
 
16
- def spawn
17
- self.class.new *@heads
23
+ attr_reader :heads
24
+ protected :heads
25
+ def initialize_copy oth
26
+ @heads = oth.heads
27
+ @rows = []
18
28
  end
19
29
 
20
30
  def add *row
21
31
  row.flatten!
22
32
  n = @heads.size
23
- row[ 0, n] = row[ 0, n].map { |r| r.to_s }
33
+ row.map! { |r| break if n.zero? ; n -= 1 ; r.to_s }
24
34
  @rows.push row
25
35
  end
26
36
 
@@ -32,20 +42,24 @@ module RbFind
32
42
  @rows.empty?
33
43
  end
34
44
 
35
- def output head: false
45
+ def output head: false, ifempty: nil
46
+ if empty? and ifempty then
47
+ puts ifempty
48
+ return
49
+ end
36
50
  make_lines head: head do |l| puts l end
37
51
  end
38
52
 
39
53
  def make_lines head: false
40
54
  rs = @rows
41
- rs.unshift heads_plain if head
55
+ rs.unshift @heads.map { |(h,a)| h } if head
42
56
  w = calc_widths
43
57
  rs.each { |r|
44
- j = (w.zip @heads, r).map { |v,h,c|
45
- case h
46
- when />\z/ then c.rjust v
47
- when /\^\z/ then c.center v
48
- when /<?\z/ then c.ljust v
58
+ j = (w.zip @heads, r).map { |v,(_,a),c|
59
+ case a
60
+ when -1 then c.ljust v
61
+ when 0 then c.center v
62
+ when +1 then c.rjust v
49
63
  end
50
64
  }
51
65
  l = j.join " "
@@ -59,14 +73,14 @@ module RbFind
59
73
  @html = ""
60
74
  tag :table, table, nl: 2 do
61
75
  tag :tr, row, nl: 1 do
62
- (@heads.zip heads_plain).each { |h,c|
63
- tag :td, c.downcase, align: (html_align h) do @html << c end
76
+ @heads.each { |(h,a)|
77
+ tag :td, h.downcase, align: a do @html << h end
64
78
  }
65
79
  end
66
80
  @rows.each { |r|
67
81
  tag :tr, table, nl: 1 do
68
- (@heads.zip heads_plain, r).each { |h,g,c|
69
- tag :td, g.downcase, align: (html_align h) do @html << c end
82
+ (@heads.zip r).each { |(g,a),c|
83
+ tag :td, g.downcase, align: a do @html << c end
70
84
  }
71
85
  end
72
86
  }
@@ -86,13 +100,9 @@ module RbFind
86
100
  w
87
101
  end
88
102
 
89
- def heads_plain
90
- @heads.map { |h| h.sub /\W\z/, "" }
91
- end
92
-
93
103
  def tag name, cls, nl: 0, align: nil
94
104
  @html << "<#{name}"
95
- @html << " style=\"text-align: " << align << ";\"" if align
105
+ @html << " style=\"text-align: " << (html_align align) << ";\"" if align
96
106
  @html << " class=\"" << cls << "\"" if cls
97
107
  @html << ">"
98
108
  @html << $/ if nl > 1
@@ -101,11 +111,11 @@ module RbFind
101
111
  @html << $/ if nl > 0
102
112
  end
103
113
 
104
- def html_align h
105
- case h
106
- when />/ then "right"
107
- when /\^/ then "center"
108
- when /<?/ then "left"
114
+ def html_align a
115
+ case a
116
+ when -1 then "left"
117
+ when 0 then "center"
118
+ when +1 then "right"
109
119
  end
110
120
  end
111
121
 
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: '2.1'
4
+ version: '2.4'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bertram Scharpf
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-07-20 00:00:00.000000000 Z
11
+ date: 2020-11-07 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: |
14
14
  A replacement for the standard UNIX command find.
@@ -54,7 +54,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
54
54
  version: '0'
55
55
  requirements:
56
56
  - just Ruby
57
- rubygems_version: 3.0.6
57
+ rubygems_version: 3.0.8
58
58
  signing_key:
59
59
  specification_version: 4
60
60
  summary: Ruby replacement for the standard Unix find tool