【发布时间】:2011-09-02 13:33:11
【问题描述】:
一些解释here。这是为了将任意 javascript 代码转换为适合小书签的代码。
#!/usr/bin/env perl
#
# http://daringfireball.net/2007/03/javascript_bookmarklet_builder
# Licence: http://www.opensource.org/licenses/mit-license.php
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`;
【问题讨论】:
-
你有什么不明白的?您的进度在哪里停止?
-
您是否要求有人真正为您重新编写此内容?也许这里是更合适的地方:elance.com
-
for部分。我知道它正在应用一些正则表达式,但无法弄清楚它是如何替换的。 -
@Richard — +1。对于 SO 捆绑在一起的单独问题太多了。 (那是在我的 Perl 倡导者的权力开始对请求感到畏缩之前)
标签: php perl code-generation bookmarklet