font: save queried character numbers in include
[sheet.git] / emoji.plp
index 2bb0b9a4bfecb698c3078c09726bdf845de3c946..00e75066478c640432a6d0bdad741bc11d330806 100644 (file)
--- a/emoji.plp
+++ b/emoji.plp
@@ -4,31 +4,48 @@ Html({
        title => 'emoji cheat sheet',
        version => 'v1.0',
        description => [
-               "MSN emoticons",
+               "Emoticons overview and Unicode equivalents"
+               . " of MSN, Y!M, and Gmail icons.",
        ],
        keywords => [qw'
-               sheet cheat emoticon smiley emoji msn
+               sheet cheat emoticon smiley emoji unicode
+               chat im messenger msn yahoo ym gmail google
        '],
-       stylesheet => [qw'light dark red'],
+       stylesheet => [qw'light'],
 });
 
 :>
-<h1>MSN emoticons</h1>
+<h1>IM emoticons</h1>
 
 <:
-my @info = do 'emoji.inc.pl' or die $@;
-my $MSNURL = '<img src="http://messenger.msn.com/Resource/emoticons/%s.gif">';
+print '<div class="section">'."\n";
 
-print '<table class="glyphs"><tbody>'."\n";
-for (my $i = 0; $i <= $#info; $i++) {
-       my $name = $info[$i++];
-       my ($input, $char, $desc) = @{ $info[$i] };
-       if ($char < 0) {
-               # inexact
-               $char = -$char;
+for my $system (qw'gmail msn yahoo') {
+       my @info = do "emoji-$system.inc.pl";
+       my $meta = shift @info or die $@;
+       ref $meta eq 'HASH' or die "invalid $system definitions";
+       my $title = $meta->{name} // $system;
+       $title = qq{<a href="$_">$title</a>} for $meta->{source} || ();
+
+       printf '<div class="section"><h2>%s</h2>'."\n\n", $meta->{name} // $system;
+       print '<table><tbody>'."\n";
+       for (my $i = 0; $i <= $#info; $i++) {
+               my $name = $info[$i];
+               unless (ref $info[$i+1] eq 'ARRAY') {
+                       printf '</table><table><tbody>'."\n", $name;
+                       next;
+               }
+               my ($input, $flags, $char, $desc) = @{ $info[++$i] };
+               printf('<tr><th><img src="%s" alt="%s"><td><kbd>%s</kbd><td>%s%s'."\n",
+                       sprintf($meta->{ $flags =~ /\bext\b/ ? 'iconext' : 'icon' } // '%s', $name),
+                       EscapeHTML($name),
+                       EscapeHTML($input),
+                       $desc // $name,
+                       $char ? '<td>'.chr($char) : '',
+               );
        }
-       printf "<tr><th>%s<td><kbd>%s</kbd><td>$MSNURL<td>%s\n",
-               $name, EscapeHTML($input), $desc, chr($char);
+       print "</table></div>\n\n";
 }
-print "</table>\n";
+
+print "</div><hr>\n\n";