Skip to content

Instantly share code, notes, and snippets.

@kch
Created August 4, 2010 10:20
Show Gist options
  • Save kch/507939 to your computer and use it in GitHub Desktop.
Save kch/507939 to your computer and use it in GitHub Desktop.
Script to open URLs from pasteboard. For use with FastScripts.
#!/usr/bin/env ruby
# encoding: UTF-8
# URL regexp from http://daringfireball.net/2010/07/improved_regex_for_matching_urls
# URL regexp adapted to have captures removed
RX_URL = %r[
\b
(?:
[a-z][\w-]+: # URL protocol and colon
(?:
/{1,3} # 1-3 slashes
| # or
[a-z0-9%] # Single letter or digit or '%'
# (Trying not to match e.g. "URI::Escape")
)
| # or
www\d{0,3}[.] # "www.", "www1.", "www2." … "www999."
| # or
[a-z0-9.\-]+[.][a-z]{2,4}/ # looks like domain name followed by a slash
)
(?: # One or more:
[^\s()<>]+ # Run of non-space, non-()<>
| # or
\((?:[^\s()<>]+|(?:\([^\s()<>]+\)))*\) # balanced parens, up to 2 levels
)+
(?: # End with:
\((?:[^\s()<>]+|(?:\([^\s()<>]+\)))*\) # balanced parens, up to 2 levels
| # or
[^\s`!()\[\]{};:'".,<>?«»“”‘’] # not a space or one of these punct chars
)]xi
urls = `pbpaste`.scan(RX_URL)
system 'open', *urls unless urls.empty?
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment