Advertisement
Guest User

Untitled

a guest
Aug 18th, 2012
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 0.86 KB | None | 0 0
  1. $data = {}
  2. $data['cat'] = <<'EOF'
  3. def cat *args
  4.   puts args.map{|arg| $data[arg]}.join "\n"
  5. end
  6. EOF
  7. $data['set'] = <<'EOF'
  8. def set arg
  9.   $data[arg] = STDIN.read
  10. end
  11. EOF
  12. $data['code'] = <<'EOF'
  13. eval $data['cat']
  14. eval $data['set']
  15. eval $data['edit']
  16. command = ARGV.shift
  17. send command.to_sym, *ARGV
  18. File.open $0, 'w' do |f|
  19.   f.print '$data = {}', "\n"
  20.   $data.each_key do |k|
  21.     f.print '$data[\'', k, '\'] = <<\'EOF\'', "\n#{$data[k]}EOF\n"
  22.   end
  23.   f.print $data['bootstrap']
  24. end
  25. EOF
  26. $data['bootstrap'] = <<'EOF'
  27. eval $data['code']
  28. EOF
  29. $data['edit'] = <<'EOF'
  30. def edit key
  31.   require 'tempfile'
  32.   path = ""
  33.   Tempfile.open "-meta--#{key}-" do |temp|
  34.     path = temp.path
  35.     temp.print $data[key]
  36.   end
  37.   system(ENV['EDITOR'] || ENV['VISUAL'] || '/usr/bin/nano', path)
  38.   File.open(path, 'r') {|f| $data[key] = f.read }
  39. end
  40. EOF
  41. eval $data['code']
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement