Jello
Because everybody likes “paste & jello” sandwiches, right? I know I did when I was a kid.
Jello is a simple library to watch the OS X pasteboard and do something on every paste.
require 'jello'
Jello.new do |paste|
system "say 'You pasted #{paste}'"
end
For example, to watch for URLs copied, and then shorten the URL and replace the long URL with the shortened one:
require 'open-uri'
require 'jello'
Jello.new :verbose => true do |paste, board|
case paste
when %r%^http://.*%
uri = $&
uri.gsub! /#/, '%23'
next if uri =~ %r%^http://bit.ly%
shortener = 'http://bit.ly/api?url=' + uri
short = open(shortener).gets.chomp
board.puts short
end
end.start
A few things to note:
- In the block context, `#puts` and `#gets` are commandeered for the
pasteboard object — use `STDOUT.puts` and `STDIN.gets` respectively if you
need terminal interaction in the block context to be safe.
- Creating a Jello block doesn't actually do anything by itself - you need to
act on the paste itself. Test against contents and conditionally run code,
whatever you want.