Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- $data = {}
- $data['cat'] = <<'EOF'
- def cat *args
- puts args.map{|arg| $data[arg]}.join "\n"
- end
- EOF
- $data['set'] = <<'EOF'
- def set arg
- $data[arg] = STDIN.read
- end
- EOF
- $data['code'] = <<'EOF'
- eval $data['cat']
- eval $data['set']
- eval $data['edit']
- command = ARGV.shift
- send command.to_sym, *ARGV
- File.open $0, 'w' do |f|
- f.print '$data = {}', "\n"
- $data.each_key do |k|
- f.print '$data[\'', k, '\'] = <<\'EOF\'', "\n#{$data[k]}EOF\n"
- end
- f.print $data['bootstrap']
- end
- EOF
- $data['bootstrap'] = <<'EOF'
- eval $data['code']
- EOF
- $data['edit'] = <<'EOF'
- def edit key
- require 'tempfile'
- path = ""
- Tempfile.open "-meta--#{key}-" do |temp|
- path = temp.path
- temp.print $data[key]
- end
- system(ENV['EDITOR'] || ENV['VISUAL'] || '/usr/bin/nano', path)
- File.open(path, 'r') {|f| $data[key] = f.read }
- end
- EOF
- eval $data['code']
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement