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";