Guest User

Untitled

a guest
Apr 23rd, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.78 KB | None | 0 0
  1. #!/usr/bin/env ruby
  2. require "readline"
  3.  
  4. class Alias
  5.  
  6. def initialize
  7. @aliases = {}
  8. end
  9.  
  10. def add nom, proc
  11. @aliases[nom] = proc
  12. end
  13.  
  14. def cmd_exist? cmd
  15. @aliases.has_key? cmd
  16. end
  17.  
  18. def call cmd, args=nil
  19. @aliases[cmd].call args
  20. end
  21.  
  22. def show_aliases
  23. @aliases.each_key do |key|
  24. puts key
  25. end
  26. end
  27. end
  28.  
  29. $alias = Alias.new
  30.  
  31. alias_p = Proc.new do |str|
  32. str[/^(\S+) */]
  33. name = $1
  34. cmd = Proc.new do eval $' end
  35. $alias.add name, cmd
  36. end
  37.  
  38. $alias.add "alias", alias_p
  39.  
  40. while ( line = Readline.readline '> ' )
  41. line[/^(\S+) */]
  42. cmd = $1
  43. args = $'
  44. if $alias.cmd_exist? cmd
  45. $alias.call cmd, args
  46. elsif cmd == 'help'
  47. $alias.show_aliases
  48. else
  49. puts "unknown command : #{cmd}"
  50. end
  51. end
Add Comment
Please, Sign In to add comment