use warnings;
use open IO => ':utf8';
-our $VERSION = '1.0';
+our $VERSION = 'v1.0';
$header{content_type} = 'text/html; charset=utf-8';
<html>
<head>
+<meta http-equiv="content-type" content="<:= $header{content_type} :>">
<title>charset cheat sheet</title>
-<meta http-equiv="content-type" content="utf-8">
<link rel="stylesheet" type="text/css" media="all" href="/base.css">
</head>
if ($input =~ s/-$//) {
$endpoint = $row{offset} ? $row{offset} < 160 ? 159 : 191 : 127;
}
- if ($row{set} = resolve_alias($input)) {
+
+ if ($input =~ /^U([0-9a-f]+)(?:-([0-9a-f]+))?/) {
+ my $start = hex($1) << ($2 ? 4 : 8);
+ my $end = $2 ? hex($2) << 4 : $start + 240;
+ $row{table} = join '', map { chr } $start .. $end+15;
+ utf8::upgrade($row{table}); # prevent latin1 output
+ $row{set} = sprintf 'Unicode block U+%02Xxx', $start >> 8;
+ }
+ elsif ($input eq 'U') {
+ $row{table} = ' ' x 512;
+ $row{set} = 'Unicode planes';
+ $row{cell} = do 'charset-ucplanes.inc.pl';
+ }
+ elsif ($row{set} = resolve_alias($input)) {
if ($row{set} eq 'Internal') {
$row{table} = ' ' x ($endpoint < 255 ? 640 : 4096);
$row{set} = 'Unicode BMP';
my @nibble = (0..9, 'A'..'F');
for my $row (@request) {
- print '<li><table class="glyphs">';
+ printf '<li><table class="glyphs%s">', !$row->{cell} && ' charmap';
printf '<caption>%s</caption>', $row->{set};
- print '<col>';
+ print '<col>' x 17;
for my $section (qw{thead}) {
print "<$section><tr><th>↱";
print '<th>', $_ for @nibble;
</div>
<p class="footer">
- <a href="http://sheet.shiar.nl/" rel="home">sheet.shiar.nl</a>/charset
- <a href="git://git.shiar.nl/sheet" rel="vcs-git" title="Git repository"><:= "v$VERSION" :></a>
+ <a href="/" rel="home">sheet.shiar.nl</a>/charset
+ <a href="git://git.shiar.nl/sheet" rel="vcs-git" title="Git repository"><:= $VERSION :></a>
created by <a href="http://shiar.nl/" rel="author">Shiar</a> •
<a title="Licensed under the GNU Affero General Public License, version 3" rel="copyright"
- href="http://www.fsf.org/licensing/licenses/agpl-3.0.html">AGPLv3</a> •
- last update <:
- use Time::Format qw(time_format);
- print time_format('yyyy-mm-dd', (stat $ENV{SCRIPT_FILENAME})[9]);
- :>
+ href="http://www.fsf.org/licensing/licenses/agpl-3.0.html">AGPLv3</a>
</p>
</html>