public
Description: A Bookmarklet for your browser that makes searching of GitHub only one click away
Homepage: http://douglasfshearer.com/blog/announcing-github-bookmarklet
Clone URL: git://github.com/dougal/github-bookmarklet.git
github-bookmarklet / make_bookmarklet.pl
100644 34 lines (26 sloc) 1.013 kb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#!/usr/bin/env perl
#
# http://daringfireball.net/2007/03/javascript_bookmarklet_builder
 
use strict;
use warnings;
use URI::Escape qw(uri_escape_utf8);
use open IO => ":utf8", # UTF8 by default
          ":std"; # Apply to STDIN/STDOUT/STDERR
 
my $src = do { local $/; <> };
 
# Zap the first line if there's already a bookmarklet comment:
$src =~ s{^// ?javascript:.+\n}{};
my $bookmarklet = $src;
 
for ($bookmarklet) {
    s{^\s*//.+\n}{}gm; # Kill comments.
    s{\t}{ }gm; # Tabs to spaces
    s{[ ]{2,}}{ }gm; # Space runs to one space
    s{^\s+}{}gm; # Kill line-leading whitespace
    s{\s+$}{}gm; # Kill line-ending whitespace
    s{\n}{}gm; # Kill newlines
}
 
# Escape single- and double-quotes, spaces, control chars, unicode:
$bookmarklet = "javascript:" .
    uri_escape_utf8($bookmarklet, qq('" \x00-\x1f\x7f-\xff));
 
print "// $bookmarklet\n" . $src;
 
# Put bookmarklet on clipboard:
`/bin/echo -n '$bookmarklet' | /usr/bin/pbcopy`;