perl: finalise v5.26 release
[sheet.git] / emoji.plp
1 <(common.inc.plp)><:
2
3 Html({
4         title => 'emoji cheat sheet',
5         version => '1.0',
6         description => [
7                 "Emoticons overview and Unicode equivalents"
8                 . " of MSN, Y!M, and Gmail icons.",
9         ],
10         keywords => [qw'
11                 sheet cheat emoticon smiley emoji unicode
12                 chat im messenger msn yahoo ym gmail google
13         '],
14         stylesheet => [qw'light'],
15 });
16
17 :>
18 <h1>IM emoticons</h1>
19
20 <:
21 say '<div class="section">';
22
23 for my $system (qw'gmail msn yahoo') {
24         my @info = do "emoji-$system.inc.pl";
25         my $meta = shift @info or die $@;
26         ref $meta eq 'HASH' or die "invalid $system definitions";
27         my $title = $meta->{name} // $system;
28         $title = showlink($title, $_) for $meta->{source} || ();
29
30         say sprintf '<div class="section"><h2>%s</h2>', $meta->{name} // $system;
31         say '<table><tbody>';
32         for (my $i = 0; $i <= $#info; $i++) {
33                 my $name = $info[$i];
34                 unless (ref $info[$i+1] eq 'ARRAY') {
35                         say sprintf '</table><table><tbody>', $name;
36                         next;
37                 }
38                 my ($input, $flags, $char, $desc) = @{ $info[++$i] };
39                 say sprintf('<tr><th><img src="%s" alt="%s"><td><kbd>%s</kbd><td>%s%s',
40                         sprintf($meta->{ $flags =~ /\bext\b/ ? 'iconext' : 'icon' } // '%s', $name),
41                         EscapeHTML($name),
42                         EscapeHTML($input),
43                         $desc // $name,
44                         $char ? '<td>'.chr($char) : '',
45                 );
46         }
47         say "</table></div>\n";
48 }
49
50 say "</div><hr>\n";
51