diru 0.0.3 → 0.0.4

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a28f4c905f25bd1b2d3bdec8d38caf27d55fbd45
4
- data.tar.gz: 8e8a7210c8e50f1537aa314a97a86f91b373e26c
3
+ metadata.gz: c4270a80d34a955821dbaa758b659a69c38ea72d
4
+ data.tar.gz: 20e891d382e3aba4deac68ad5f482d9dcf20282f
5
5
  SHA512:
6
- metadata.gz: 247e190660aedee8dff49ae2d36fd906aa5c413ece5b13b86fa007adb4be771ad3e97ef8e21494ced2cfb9c4677eaa54c1a87707706adf7ef8be71a551eb6c5f
7
- data.tar.gz: 0ef5b4473de0f18d9473413736c4435e5313237f2e6aac4bb4827c41b082f3f5fa7f2b2c4c2ab71155930fe019976e48a95d7a7e9037e700583e49f23a69d94b
6
+ metadata.gz: 7513d88c4fb717def21e88fb28fb305910824095f8c775086b8cf4116909038be704476b36403d69fc384d56c4056e2d0e3edc23e94612d47867a12d00cb3972
7
+ data.tar.gz: fc809c28767ad797d55d63e4ed7fe4ccbe19bd93d570af90cad94bb5aababdfce7f815af3bc42e067ddaba1b8fea811389a5ceaaa2a8a6874ab94fde86c7ff9c
@@ -1,5 +1,9 @@
1
1
  = Version history
2
2
 
3
+ [0.0.4] Default matching is glob (fnmatch) based.
4
+ Separate command for regex based search ('e').
5
+ Fixed wrong display of paths when Project dir was '/'.
6
+
3
7
  [0.0.3] Mkdir and rmdir commands, direct server update.
4
8
 
5
9
  [0.0.2] Separate refresh for Options File and Project dirs.
@@ -28,8 +28,8 @@ Diru features:
28
28
  * Support for multiple concurrent Projects.
29
29
  * User and Project specific options (configuration).
30
30
  * Jump to Project root.
31
- * Find and jump to dir under Project root (regexp search).
32
- * Find and jump to dir under current dir (regexp search).
31
+ * Find and jump to dir under Project root (glob and regex search).
32
+ * Find and jump to dir under current dir (glob search).
33
33
  * Fast directory search since Server maintains a memory image of
34
34
  directories.
35
35
  * Favorite directories in options (configuration), for permanent
@@ -110,7 +110,7 @@ If we want to jump to a subdir called "dir_0_0" (under root), we do:
110
110
 
111
111
  Note that "dir_0_0" does not have to be directly under Project root,
112
112
  the directory is searched from the complete tree of directories under
113
- Project root using regexp matching.
113
+ Project root using glob (fnmatch) matching.
114
114
 
115
115
  Now that we have changed directory for a couple of times, we can look
116
116
  at the directory change history:
@@ -131,8 +131,11 @@ info from Server.
131
131
  Search commands:
132
132
 
133
133
  * "dr r" - change to Project root dir.
134
- * "dr r <dir>" - change to <dir> (somewhere) under Project root dir.
135
- * "dr t <dir>" - change to <dir> (somewhere) under current dir.
134
+ * "dr r <dir>" - change to <dir> (somewhere) under Project root dir
135
+ (glob).
136
+ * "dr t <dir>" - change to <dir> (somewhere) under current dir (glob).
137
+ * "dr e <dir>" - change to <dir> (somewhere) under Project root dir
138
+ (regexp).
136
139
 
137
140
  Search can match to multiple directories. First match is used and the
138
141
  rest (Left-overs) are displayed to the user. Left-overs are also
@@ -143,6 +146,11 @@ Search pattern can also be constructed from multiple pieces.
143
146
 
144
147
  shell> dr r dir 1_0_1
145
148
 
149
+ The pieces are joined with '*' for glob (fnmatch) based searches and
150
+ with '.*' for regexp based searches. Glob based searches are
151
+ additionally prefixed with '*' and postfixed with '*', since glob does
152
+ not automatically match to the middle of the string, however regexp does.
153
+
146
154
  See "dr i" for alternatives for single letter commands. For example
147
155
  "r" can be replaced with "/".
148
156
 
data/bin/diru CHANGED
@@ -189,6 +189,11 @@ class Search
189
189
 
190
190
  # Server root.
191
191
  @root = root
192
+ if @root == '/'
193
+ @rootpart = ''
194
+ else
195
+ @rootpart = @root
196
+ end
192
197
 
193
198
  # Change directory to DIRU root.
194
199
  Dir.chdir( @root )
@@ -238,6 +243,7 @@ class Search
238
243
  @datalock = Mutex.new
239
244
  @optslock = Mutex.new
240
245
 
246
+
241
247
  # Initial data update.
242
248
  update_conf
243
249
  update_data
@@ -334,7 +340,7 @@ class Search
334
340
 
335
341
  # Get (and update) favorite.
336
342
  def gfav( tag )
337
- "#{@root}/#{@fav[ tag ]}"
343
+ "#{@rootpart}/#{@fav[ tag ]}"
338
344
  end
339
345
 
340
346
 
@@ -397,7 +403,7 @@ class Search
397
403
  if path == @root
398
404
  ''
399
405
  else
400
- rem = "#{@root}/"
406
+ rem = "#{@rootpart}/"
401
407
  rel = path.dup
402
408
  rel[rem] = ''
403
409
  rel
@@ -405,10 +411,41 @@ class Search
405
411
  end
406
412
 
407
413
 
408
- # Match dir/pattern from DB.
414
+ # Match dir/pattern with glob (fnmatch) from DB.
409
415
  def match( dir, pattern )
410
416
  list = []
411
417
 
418
+ if dir
419
+ begin
420
+ dir = abs2rel( dir )
421
+ rescue
422
+ return []
423
+ end
424
+ r = dir + '*' + pattern
425
+ else
426
+ r = pattern
427
+ end
428
+
429
+ @datalock.synchronize do
430
+ @data.each do |i|
431
+ if File.fnmatch( r, i )
432
+ list.push "#{@rootpart}/#{i}"
433
+ end
434
+ end
435
+ end
436
+
437
+ # Update old list.
438
+ @old = list.rotate
439
+
440
+ list
441
+ end
442
+
443
+
444
+
445
+ # Match dir/pattern with regex from DB.
446
+ def rematch( dir, pattern )
447
+ list = []
448
+
412
449
  if dir
413
450
  begin
414
451
  dir = abs2rel( dir )
@@ -423,7 +460,7 @@ class Search
423
460
  @datalock.synchronize do
424
461
  @data.each do |i|
425
462
  if i.match( r )
426
- list.push "#{@root}/#{i}"
463
+ list.push "#{@rootpart}/#{i}"
427
464
  end
428
465
  end
429
466
  end
@@ -914,7 +951,7 @@ class Client
914
951
  cmd = input[0]
915
952
  arg = input[1..-1]
916
953
 
917
- # Shell specials chars to prevent:
954
+ # Shell special chars to avoid:
918
955
  # * ? [ ] ' " \ $ ; & ( ) | ^ < >
919
956
 
920
957
  # Thus allowed:
@@ -929,10 +966,12 @@ class Client
929
966
  if arg.empty?
930
967
  disp @search.root
931
968
  else
932
- disp @search.match( nil, arg.join('.*') )
969
+ disp @search.match( nil, "*"+arg.join('*')+"*" )
933
970
  end
934
971
 
935
- when ':', 't'; disp @search.match( Dir.pwd, arg.join('.*') )
972
+ when ':', 't'; disp @search.match( Dir.pwd, "*"+arg.join('*')+"*" )
973
+
974
+ when 'e'; disp @search.rematch( nil, arg.join('.*') )
936
975
 
937
976
  when '.', 'b';
938
977
  if arg[0] == nil
@@ -1094,6 +1133,7 @@ class Client
1094
1133
  STDERR.puts "
1095
1134
  r / - search from root (or to root)
1096
1135
  t : - search from this (current)
1136
+ e - search from root (with regexp)
1097
1137
  b . - bookmark access
1098
1138
  h , - history access
1099
1139
  s _ - scratch pad access
@@ -1,5 +1,5 @@
1
1
  module Diru
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  def Diru.version
4
4
  Diru::VERSION
5
5
  end
@@ -31,7 +31,19 @@
31
31
  1: /home/tero/prog/gem/diru/test/dir_1/dir_1_1
32
32
  0: /home/tero/prog/gem/diru/test/dir_1/dir_1_1/dir_1_1_2
33
33
  /home/tero/prog/gem/diru/test
34
- /home/tero/prog/gem/diru/test
34
+ /home/tero/prog/gem/diru/test/dir_0/dir_0_2/dir_0_2_1
35
+ /home/tero/prog/gem/diru/test/dir_0/dir_0_2/dir_0_2_2
36
+ /home/tero/prog/gem/diru/test/dir_1/dir_1_2/dir_1_2_0
37
+ /home/tero/prog/gem/diru/test/dir_1/dir_1_2/dir_1_2_1
38
+ /home/tero/prog/gem/diru/test/dir_1/dir_1_2/dir_1_2_2
39
+ /home/tero/prog/gem/diru/test/dir_0/dir_0_2/dir_0_2_0
40
+ /home/tero/prog/gem/diru/test/dir_0/dir_0_2/dir_0_2_1
41
+ /home/tero/prog/gem/diru/test/dir_0/dir_0_2/dir_0_2_2
42
+ /home/tero/prog/gem/diru/test/dir_1/dir_1_2/dir_1_2_0
43
+ /home/tero/prog/gem/diru/test/dir_1/dir_1_2/dir_1_2_1
44
+ /home/tero/prog/gem/diru/test/dir_1/dir_1_2/dir_1_2_2
45
+ /home/tero/prog/gem/diru/test/dir_0/dir_0_2/dir_0_2_0
46
+ /home/tero/prog/gem/diru/test/dir_0/dir_0_2/dir_0_2_0
35
47
  /home/tero/prog/gem/diru/test/dir_1/dir_1_1/dir_1_1_2
36
48
  /home/tero/prog/gem/diru/test/dir_1/dir_1_1/dir_1_1_2
37
49
  /home/tero/prog/gem/diru/test/dir_0/dir_0_0
@@ -105,13 +117,14 @@
105
117
  0: /home/tero/prog/gem/diru/test/dir_1/dir_1_1/dir_1_1_2
106
118
  /home/tero/prog/gem/diru/test
107
119
  /home/tero/prog/gem/diru/test/dir_1/dir_1_1/dir_1_1_2
108
- 12: /home/tero/prog/gem/diru/test
109
- 11: /home/tero/prog/gem/diru/test/dir_0/dir_0_4/dir_0_4_0
110
- 10: /home/tero/prog/gem/diru/test/dir_1
111
- 9: /home/tero/prog/gem/diru/test/dir_1/dir_1_1/dir_1_1_0
112
- 8: /home/tero/prog/gem/diru/test/dir_1/dir_1_1
113
- 7: /home/tero/prog/gem/diru/test/dir_1/dir_1_1/dir_1_1_2
114
- 6: /home/tero/prog/gem/diru/test
120
+ 13: /home/tero/prog/gem/diru/test
121
+ 12: /home/tero/prog/gem/diru/test/dir_0/dir_0_4/dir_0_4_0
122
+ 11: /home/tero/prog/gem/diru/test/dir_1
123
+ 10: /home/tero/prog/gem/diru/test/dir_1/dir_1_1/dir_1_1_0
124
+ 9: /home/tero/prog/gem/diru/test/dir_1/dir_1_1
125
+ 8: /home/tero/prog/gem/diru/test/dir_1/dir_1_1/dir_1_1_2
126
+ 7: /home/tero/prog/gem/diru/test
127
+ 6: /home/tero/prog/gem/diru/test/dir_0/dir_0_2/dir_0_2_0
115
128
  5: /home/tero/prog/gem/diru/test/dir_1/dir_1_1/dir_1_1_2
116
129
  4: /home/tero/prog/gem/diru/test/dir_0
117
130
  3: /home/tero/prog/gem/diru/test/dir_1/dir_1_1/dir_1_1_2
@@ -143,13 +156,14 @@ f dir_0/dir_0_4/dir_0_4_0
143
156
  g dir_1/dir_1_2
144
157
  /home/tero/prog/gem/diru/test/dir_0/dir_0_1/dir_0_1_1
145
158
  /home/tero/prog/gem/diru/test/dir_0/dir_0_4/dir_0_4_0
146
- 26: /home/tero/prog/gem/diru/test
147
- 25: /home/tero/prog/gem/diru/test/dir_0/dir_0_4/dir_0_4_0
148
- 24: /home/tero/prog/gem/diru/test/dir_1
149
- 23: /home/tero/prog/gem/diru/test/dir_1/dir_1_1/dir_1_1_0
150
- 22: /home/tero/prog/gem/diru/test/dir_1/dir_1_1
151
- 21: /home/tero/prog/gem/diru/test/dir_1/dir_1_1/dir_1_1_2
152
- 20: /home/tero/prog/gem/diru/test
159
+ 27: /home/tero/prog/gem/diru/test
160
+ 26: /home/tero/prog/gem/diru/test/dir_0/dir_0_4/dir_0_4_0
161
+ 25: /home/tero/prog/gem/diru/test/dir_1
162
+ 24: /home/tero/prog/gem/diru/test/dir_1/dir_1_1/dir_1_1_0
163
+ 23: /home/tero/prog/gem/diru/test/dir_1/dir_1_1
164
+ 22: /home/tero/prog/gem/diru/test/dir_1/dir_1_1/dir_1_1_2
165
+ 21: /home/tero/prog/gem/diru/test
166
+ 20: /home/tero/prog/gem/diru/test/dir_0/dir_0_2/dir_0_2_0
153
167
  19: /home/tero/prog/gem/diru/test/dir_1/dir_1_1/dir_1_1_2
154
168
  18: /home/tero/prog/gem/diru/test/dir_0
155
169
  17: /home/tero/prog/gem/diru/test/dir_1/dir_1_1/dir_1_1_2
@@ -192,13 +206,14 @@ g dir_1/dir_1_2
192
206
  /home/tero/prog/gem/diru/test/dir_0/dir_0_1/dir_0_1_0
193
207
  /home/tero/prog/gem/diru/test/dir_0/dir_0_1/dir_0_1_1
194
208
  /home/tero/prog/gem/diru/test/dir_0/dir_0_1/dir_0_1_2
195
- 31: /home/tero/prog/gem/diru/test
196
- 30: /home/tero/prog/gem/diru/test/dir_0/dir_0_4/dir_0_4_0
197
- 29: /home/tero/prog/gem/diru/test/dir_1
198
- 28: /home/tero/prog/gem/diru/test/dir_1/dir_1_1/dir_1_1_0
199
- 27: /home/tero/prog/gem/diru/test/dir_1/dir_1_1
200
- 26: /home/tero/prog/gem/diru/test/dir_1/dir_1_1/dir_1_1_2
201
- 25: /home/tero/prog/gem/diru/test
209
+ 32: /home/tero/prog/gem/diru/test
210
+ 31: /home/tero/prog/gem/diru/test/dir_0/dir_0_4/dir_0_4_0
211
+ 30: /home/tero/prog/gem/diru/test/dir_1
212
+ 29: /home/tero/prog/gem/diru/test/dir_1/dir_1_1/dir_1_1_0
213
+ 28: /home/tero/prog/gem/diru/test/dir_1/dir_1_1
214
+ 27: /home/tero/prog/gem/diru/test/dir_1/dir_1_1/dir_1_1_2
215
+ 26: /home/tero/prog/gem/diru/test
216
+ 25: /home/tero/prog/gem/diru/test/dir_0/dir_0_2/dir_0_2_0
202
217
  24: /home/tero/prog/gem/diru/test/dir_1/dir_1_1/dir_1_1_2
203
218
  23: /home/tero/prog/gem/diru/test/dir_0
204
219
  22: /home/tero/prog/gem/diru/test/dir_1/dir_1_1/dir_1_1_2
@@ -14,6 +14,8 @@ dr ..
14
14
  dr dir_1_1_2
15
15
  dr r
16
16
  dr h
17
+ dr r "dir_?_2_?"
18
+ dr e "dir_._2_."
17
19
 
18
20
  dr b
19
21
  dr r dir_1_1_2
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: diru
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tero Isannainen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-07-17 00:00:00.000000000 Z
11
+ date: 2017-07-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: como