ruby-shell 0.4 → 0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/bin/rsh +35 -33
  3. metadata +3 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 03f10b7b8ca979952b3a717420c8cc6002c2ad443933b7006ba9c460e83ef09e
4
- data.tar.gz: fee02bd24b9796a4ab8852fa4a9ca6d591942b4aa08461e7decaf7ecf73da334
3
+ metadata.gz: 43147c77abd46c4331dc8cf1c7ed4902f2849c7d11a67f00309ac45da5211c55
4
+ data.tar.gz: 99926b773d53e5b7302a954d62eb3f766ef6caf0c6837cfd77dbdabe4f6a7132
5
5
  SHA512:
6
- metadata.gz: 817094937e32711d26dcc291c5c470e85a1f3901a335c427eede150465747f0761939ce5ccd686630bc3daf0200976533d4fe5e9f3259a364ed384c983aafb0f
7
- data.tar.gz: 1f6401e2afef2bb22089b5e28e5c977cf42b85e66182a223e780c25319ec77e168588afc74ea9713224e20bbd1d892da52510c66dc02876b1cec67013c09d231
6
+ metadata.gz: f53b1c639d01623da942f8255bbfe3b32a53b95faf693c18a4520ac5541c3937a073e67cdd0cee5c2b3b24d71805ca412a45293cd85311bc90c1499af11ba271
7
+ data.tar.gz: a7c9b7d2255c62169b6cbf3b019f49a61843e3b0051836863c495278b69ce121b99b57208aea75e35a6d5d2b33085cd770644383d7505f3361501e6941aebed2
data/bin/rsh CHANGED
@@ -14,7 +14,7 @@
14
14
  # for any damages resulting from its use. Further, I am under no
15
15
  # obligation to maintain or extend this software. It is provided
16
16
  # on an 'as is' basis without any expressed or implied warranty.
17
- @version = "0.3.1"
17
+ @version = "0.5"
18
18
 
19
19
  # MODULES, CLASSES AND EXTENSIONS
20
20
  class String # Add coloring to strings (with escaping for Readline)
@@ -315,21 +315,28 @@ def tabselect(ary) # Let user select from the incoming array
315
315
  @c_row, @c_col = @c.pos
316
316
  chr = ""
317
317
  i = 0
318
- ary.length < 5 ? l = ary.length : l = 5
318
+ ary.length - i < 5 ? l = ary.length - i : l = 5
319
319
  while chr != "ENTER"
320
320
  @c.clear_screen_down
321
321
  l.times do |x|
322
+ tl = @tabsearch.length
322
323
  if x == 0
323
324
  @c.clear_line
324
- tabstart = cmd_check(@tabstr)
325
- tabchoice = ary[i].sub(/(.*?)[ ,].*/, '\1')[@tabsearch.length..]
326
- tabline = "#{@prompt}#{tabstart}#{@tabsearch.c(@c_tabselect)}#{tabchoice}#{@tabend}"
325
+ tabchoice = ary[i].sub(/(.*?)[ ,].*/, '\1')
326
+ tabline = "#{@prompt}#{cmd_check(@tabstr)}#{tabchoice.c(@c_tabselect)}#{@tabend}"
327
327
  print tabline # Full command line
328
- @c_col = @pos0 + @tabstr.length + @tabsearch.length + tabchoice.length
328
+ @c_col = @pos0 + @tabstr.length + tabchoice.length
329
329
  nextline
330
- print " #{ary[i]}".c(@c_tabselect) # Top option selected
330
+ sel0 = " " + ary[i][0...tl]
331
+ sel1 = ary[i][tl...].c(@c_tabselect)
332
+ print sel0 + sel1 # Top option selected
331
333
  else
332
- print " #{ary[x+i]}".c(@c_taboption) # Next option unselected
334
+ begin
335
+ opt0 = " " + ary[i+x][0...tl]
336
+ opt1 = ary[i+x][tl...].c(@c_taboption)
337
+ print opt0 + opt1 # Next option unselected
338
+ rescue
339
+ end
333
340
  end
334
341
  nextline
335
342
  end
@@ -468,39 +475,34 @@ loop do
468
475
  @cmd = getstr # Main work is here
469
476
  hist_clean # Clean up the history
470
477
  @cmd = "ls" if @cmd == "" # Default to ls when no command is given
471
- print "\n" # Newline
478
+ print "\n"; @c.clear_screen_down
472
479
  if @cmd == "r" # Integration with rtfm (https://github.com/isene/RTFM)
473
480
  File.write("/tmp/.rshpwd", Dir.pwd)
474
481
  system("rtfm /tmp/.rshpwd")
475
482
  Dir.chdir(File.read("/tmp/.rshpwd"))
476
483
  next
477
484
  end
478
- begin # Execute command
485
+ begin
479
486
  if @cmd.match(/^\s*:/) # Ruby commands are prefixed with ":"
480
487
  eval(@cmd[1..-1])
481
- else
482
- begin # Try cd to cmd
483
- @cmd.sub!(/^cd (\S*).*/, '\1')
484
- @cmd = Dir.home if @cmd == "~"
485
- Dir.chdir(@cmd.strip.sub(/~/, Dir.home))
486
- rescue # If cd fails, execute cmd (unless no such cmd)
487
- ca = @nick.transform_keys {|k| /((^\K\s*\K)|(\|\K\s*\K))\b(?<!-)#{Regexp.escape k}\b/}
488
- @cmd = @cmd.gsub(Regexp.union(ca.keys), @nick)
489
- ga = @gnick.transform_keys {|k| /\b#{Regexp.escape k}\b/}
490
- @cmd = @cmd.gsub(Regexp.union(ga.keys), @gnick)
491
- puts "#{Time.now.strftime("%H:%M:%S")}: #{@cmd}".c(@c_stamp)
492
- begin
493
- if @cmd == "fzf" # fzf integration (https://github.com/junegunn/fzf)
494
- res = `#{@cmd}`.chomp
495
- Dir.chdir(File.dirname(res))
496
- elsif system(@cmd) # Try execute the command
497
- else
498
- puts "No such command: #{@cmd}"
499
- end
500
- rescue
501
- if File.exist?(@cmd) # Try to open file with user's editor
502
- system("#{ENV['EDITOR']} #{@cmd}")
503
- end
488
+ else # Execute command
489
+ @cmd.sub!(/^cd (\S*).*/, '\1')
490
+ @cmd = Dir.home if @cmd == "~"
491
+ dir = @cmd.strip.sub(/~/, Dir.home)
492
+ Dir.chdir(dir) if Dir.exists?(dir)
493
+ ca = @nick.transform_keys {|k| /((^\K\s*\K)|(\|\K\s*\K))\b(?<!-)#{Regexp.escape k}\b/}
494
+ @cmd = @cmd.gsub(Regexp.union(ca.keys), @nick)
495
+ ga = @gnick.transform_keys {|k| /\b#{Regexp.escape k}\b/}
496
+ @cmd = @cmd.gsub(Regexp.union(ga.keys), @gnick)
497
+ puts "#{Time.now.strftime("%H:%M:%S")}: #{@cmd}".c(@c_stamp)
498
+ if @cmd == "fzf" # fzf integration (https://github.com/junegunn/fzf)
499
+ res = `#{@cmd}`.chomp
500
+ Dir.chdir(File.dirname(res))
501
+ else
502
+ if File.exist?(@cmd) # Try to open file with user's editor
503
+ system("#{ENV['EDITOR']} #{@cmd}")
504
+ elsif system(@cmd) # Try execute the command
505
+ else puts "No such command: #{@cmd}"
504
506
  end
505
507
  end
506
508
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-shell
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.4'
4
+ version: '0.5'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Geir Isene
@@ -11,7 +11,8 @@ cert_chain: []
11
11
  date: 2023-05-26 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: 'A shell written in Ruby with extensive tab completions, aliases/nicks,
14
- history, syntax highlighting and theming. New in 0.4: Much better tab completion.'
14
+ history, syntax highlighting and theming. New in 0.5: Code clean-up. Even better
15
+ tab completion.'
15
16
  email: g@isene.com
16
17
  executables:
17
18
  - rsh