129 lines
3.5 KiB
Markdown
129 lines
3.5 KiB
Markdown
Why are there graphic-based smileys at all, when Unicode supports most of them directly?
|
||
|
||
What Unicode doesn't support can be handled by FontAwesome or a little CSS.
|
||
|
||
Keeping font-based solutions to emojis allows them to scale naturally with the fonts. An emoji in the title becomes a different size than an emoji in paragraph, or an emoji in a subscript.
|
||
|
||
Here's a smileys.mdwn file that doesn't use any graphics at all:
|
||
|
||
<pre>
|
||
This page is used to control what smileys are supported by the wiki.
|
||
Just write the text of a smiley to display it.
|
||
|
||
* \\:) [🙂]
|
||
* \\:smile: [🙂]
|
||
* \\:-) [🙂]
|
||
* \\:D [😃]
|
||
* \\:-D [😃]
|
||
* \\:grin: [😃]
|
||
* \\B) [😎]
|
||
* \\B-) [😎]
|
||
* \\:)) [😛]
|
||
* \\:-)) [😛]
|
||
* \\;) [😉]
|
||
* \\;-) [😉]
|
||
* \\:\ [😕]
|
||
* \\:-\ [😕]
|
||
* \\:/ [😕]
|
||
* \\:-/ [😕]
|
||
* \\:| [😐]
|
||
* \\:-| [😐]
|
||
* \\>:> [😈]
|
||
* \\X-( [😡]
|
||
* \\<:( [😧]
|
||
* \\:( [🙁]
|
||
* \\:-( [🙁]
|
||
* \\:-? [😝]
|
||
* \\:-P [😝]
|
||
* \\:o [😱]
|
||
* \\|) [😪]
|
||
* \\|-) [😪]
|
||
* \\{OK} [👍]
|
||
* \\:+1: [👍]
|
||
* \\:-1: [👎]
|
||
* \\(/) [🚫]
|
||
* \\{X} [🛑]
|
||
* \\{i} [ℹ️]
|
||
* \\(./) [✔︎]
|
||
* \\(!) [💡]
|
||
* \\[!] [✋]
|
||
* \\/!\ [⚠️]
|
||
* \\(?) [❓]
|
||
* \\(!?) [⁉️]
|
||
* \\{x} [☒]
|
||
* \\{*} [☑︎]
|
||
* \\{o} [☐]
|
||
* \\{1} [<span class="priority-1">𝟙</span>]
|
||
* \\{2} [<span class="priority-2">𝟚</span>]
|
||
* \\{3} [<span class="priority-3">𝟛<span>]
|
||
|
||
For example: {x} B) {x} {3} :grin: :-1:
|
||
|
||
----
|
||
|
||
To change the supported smileys, just edit the lists on this page.
|
||
Note that the format is important; each list item should start with the
|
||
text that is turned into the smiley, escaped so that users can see what
|
||
produces it, followed by a [[ikiwiki/WikiLink]] to the image to display.
|
||
|
||
/!\ Bear in mind that the link to the image needs to be written in a way that
|
||
will work if it's copied to other pages on the wiki. So be sure to include the
|
||
smileys directory in the path to the file.
|
||
</pre>
|
||
|
||
Here's the patch to smiley.pm:
|
||
|
||
<pre>
|
||
--- smiley.pm.orig 2017-05-26 18:00:01.000000000 -0400
|
||
+++ smiley.pm 2017-05-26 22:01:18.000000000 -0400
|
||
@@ -33,17 +33,17 @@
|
||
return;
|
||
}
|
||
my $list=readfile($srcfile);
|
||
- while ($list =~ m/^\s*\*\s+\\\\([^\s]+)\s+\[\[([^]]+)\]\]/mg) {
|
||
+ while ($list =~ m/^\s*\*\s+\\\\([^\s]+)\s+\[([^\]]+)\]/mg) {
|
||
my $smiley=$1;
|
||
- my $file=$2;
|
||
+ my $value=$2;
|
||
|
||
- $smileys{$smiley}=$file;
|
||
+ $smileys{$smiley}=$value;
|
||
|
||
# Add a version with < and > escaped, since they probably
|
||
# will be (by markdown) by the time the sanitize hook runs.
|
||
$smiley=~s/</</g;
|
||
$smiley=~s/>/>/g;
|
||
- $smileys{$smiley}=$file;
|
||
+ $smileys{$smiley}=$value;
|
||
}
|
||
|
||
if (! %smileys) {
|
||
@@ -94,10 +94,18 @@
|
||
}
|
||
else {
|
||
# Replace the smiley with its expanded value.
|
||
- my $link=htmllink($params{page}, $params{destpage},
|
||
- $smileys{$smiley}, linktext => $smiley);
|
||
- substr($_, $spos, length($smiley))=$link;
|
||
- pos=$epos+length($link);
|
||
+ my $value = $smileys{$smiley};
|
||
+ my $replacement = "";
|
||
+ if ($value =~ /\[([^\]]*)/) {
|
||
+ $value=$1;
|
||
+ $replacement=htmllink($params{page}, $params{destpage},
|
||
+ $value, linktext => $smiley);
|
||
+ }
|
||
+ else {
|
||
+ $replacement=$value;
|
||
+ }
|
||
+ substr($_, $spos, length($smiley))=$replacement;
|
||
+ pos=$epos+length($replacement);
|
||
}
|
||
}
|
||
|
||
</pre>
|
||
|
||
As you can see, it keeps the [] characters around the smiley. This can be useful if it renders to nothing in the browser -- particularly in the CSS-based solutions.
|
||
|
||
It keeps the same data structure, but images get a "[" prefix to them as a marker. Since I minimized the changes to the regex, the trailing "]" is still dropped.
|