My favorites | Sign in
Project Logo
                
Changes to /trunk/bin/makebookmarklet
r0 vs. r2   Edit
  Compare: vs.   Format:
Revision r2
Go to: 
Project members, sign in to write a code review
/trunk/bin/makebookmarklet /trunk/bin/makebookmarklet   r2
Properties
 svn:executable
   1 *
  
Contents
  1 #!/usr/bin/env perl
  2 #
  3 # http://daringfireball.net/2007/03/javascript_bookmarklet_builder
  4
  5 use strict;
  6 use warnings;
  7 use URI::Escape qw(uri_escape_utf8);
  8 use open IO => ":utf8", # UTF8 by default
  9 ":std"; # Apply to STDIN/STDOUT/STDERR
  10
  11 my $src = do { local $/; <> };
  12
  13 # Zap the first line if there's already a bookmarklet comment:
  14 $src =~ s{^// ?javascript:.+\n}{};
  15 my $bookmarklet = $src;
  16
  17 for ($bookmarklet) {
  18 s{^\s*//.+\n}{}gm; # Kill comments.
  19 s{\t}{ }gm; # Tabs to spaces
  20 s{[ ]{2,}}{ }gm; # Space runs to one space
  21 s{^\s+}{}gm; # Kill line-leading whitespace
  22 s{\s+$}{}gm; # Kill line-ending whitespace
  23 s{\n}{}gm; # Kill newlines
  24 }
  25
  26 # Escape single- and double-quotes, spaces, control chars, unicode:
  27 $bookmarklet = "javascript:" .
  28 uri_escape_utf8($bookmarklet, qq('" \x00-\x1f\x7f-\xff));
  29
  30 print "// $bookmarklet\n" . $src;
  31
  32 # Put bookmarklet on clipboard:
  33 `/bin/echo -n '$bookmarklet' | /usr/bin/pbcopy`;
  34
Hosted by Google Code