-- XIu4kVBgsyR9WyVUdvE
Content-Type: text/plain
Content-Transfer-Encoding: 7bit
My solution is attached (It's also at http://rubyurl.com/mgX but I know
these messages are archived so I included it here). It's a pretty short
thing and not the cleanest code but this was one of those 'just get it
written' things for me :)
Synopsis:
cat2rafb.rb [-nNickname] [-dDesc] [-lLanguage] [-cConvtabs] [-r]
[[-tText] | [FILES, ...]]
Options:
-n - Specify nickname to paste with
(default: ENV['USER'] || 'unknown')
-d - Description of paste (default: none)
-l - Language for syntax highlighting
(default: Ruby unless -R option is passed: then Plain Text)
-c - Convert tabs to specified number of spaces (default: No)
-r - Display only rubyurl for this paste
(default: both rafb & rubyurl)
-R - Rafb only - don't get a rubyurl for this paste
-t - Specify text on commandline, rather than reading files.
If no -t or filenames are supplied, STDIN is read.
-t precludes reading of any file.
To get a list of valid language and tab-conversion lengths, you can
just pass the appropriate option with no value, e.g.
./cat2rafb.rb -l
./cat2rafb.rb -c
Examples:
./cat2rafb.rb somefile.txt
./cat2rafb.rb -nMyNick -lC++ -R myfile.c
./cat2rafb.rb -n'Long Nick' -d'Ruby code' -t'print if ~/^\d+:/' -r
./cat2rafb.rb -c2 -lruby -nmetoo -d'From stdin'
Thanks for another interesting quiz, a rafb paster seems like a good
thing to have :)
--
Ross Bamford - rosco / roscopeco.REMOVE.co.uk
-- XIu4kVBgsyR9WyVUdvE
Content-Disposition: attachment; filename=cat2rafb.rb
Content-Type: text/plain; name=cat2rafb.rb; charset=utf-8
Content-Transfer-Encoding: 7bit
#!/usr/local/bin/ruby
require 'net/http'
require 'uri'
LANG w{C89 C C++ C# Java Pascal Perl PHP PL/I Python Ruby Scheme SQL VB XML
Plain\ Text}
TABS w{No 2 3 4 5 6 8}
RAFB, RURL w{http://rafb.net/paste/paste.php
http://rubyurl.com/rubyurl/create}.map { |u| URI.parse(u) }
rurlmode ARGV.delete('-R') and output_ofs ARGV.delete('-r') ? -1 : 0)
(form 'lang' (rurlmode ? 'Ruby' : 'Plain Text'),
'nick' ENV['USER'] || 'unknown',
'desc' '',
'cvt_tabs' 'No',
'text' nil}).keys.each do |key|
ARGV.reject! { |a| form[key] 1 if a /-#{key[0,1]} .*)/ }
end
form['lang'] ANG.detect {|l| l.casecmp(form['lang']) 0} or
raise "Unrecognized language (allowed values are #{LANG.inspect})"
form['cvt_tabs'] ABS.detect {|l| l.casecmp(form['cvt_tabs']) 0} or
raise "Unrecognized tab length (allowed values are #{TABS.inspect})"
form['text'] || RGF.read
begin
puts(((q [RAFB, form]]).map do |url,form|
if (res et::HTTP.post_form(url,form)).is_a?(Net::HTTPRedirection)
if (loc es['location']) /\/rubyurl\/show\/(.*)/
"http://rubyurl.com/#$1"
else
rfb http://rafb.net#{loc}"
q << [RURL, {'rubyurl[website_url]' rfb}] if rurlmode
rfb
end
else
res.error!
end
end)[(output_ofs || 0)..-1].join("\n"))
rescue
$!.set_backtrace([]) and raise
end
-- XIu4kVBgsyR9WyVUdvE--