smiley escaping fixes
Smileys need to be double-escaped to work, since the smiley plugin runs as a sanitize hook, and markdown helpfully removes one level of escapes first. There were some bugs in the smiley handling code that made escaped smileys still be expanded. After unescaping a smiley, it needed to move pos forward past it or the next pass would expand it. Also, once the m//g got to the end, it seemed to loop back through and make one more pass (a difference in perl 5.10's regexp exngine? I observed that pos was undefined when this happened, so added a `last unless defined pos`.master
parent
4bc6f6cb96
commit
df3a8b183c
|
@ -15,7 +15,7 @@ sub import { #{{{
|
|||
|
||||
sub build_regexp () { #{{{
|
||||
my $list=readfile(srcfile("smileys.mdwn"));
|
||||
while ($list =~ m/^\s*\*\s+\\([^\s]+)\s+\[\[([^]]+)\]\]/mg) {
|
||||
while ($list =~ m/^\s*\*\s+\\\\([^\s]+)\s+\[\[([^]]+)\]\]/mg) {
|
||||
my $smiley=$1;
|
||||
my $file=$2;
|
||||
|
||||
|
@ -72,6 +72,7 @@ MATCH: while (m{(?:^|(?<=\s|>))(\\?)$smiley_regexp(?:(?=\s|<)|$)}g) {
|
|||
if ($escape) {
|
||||
# Remove escape.
|
||||
substr($_, $epos, 1)="";
|
||||
pos=$epos+1;
|
||||
}
|
||||
else {
|
||||
# Replace the smiley with its expanded value.
|
||||
|
@ -79,6 +80,10 @@ MATCH: while (m{(?:^|(?<=\s|>))(\\?)$smiley_regexp(?:(?=\s|<)|$)}g) {
|
|||
htmllink($params{page}, $params{destpage},
|
||||
$smileys{$smiley}, linktext => $smiley);
|
||||
}
|
||||
|
||||
# Breaks out at end, otherwise it will scan through again,
|
||||
# replacing de-escaped ones.
|
||||
last unless defined pos;
|
||||
}
|
||||
|
||||
return $_;
|
||||
|
|
|
@ -23,6 +23,9 @@ ikiwiki (2.54) UNRELEASED; urgency=low
|
|||
and todo items from the html shipped in it.
|
||||
* parentlinks: New plugin, split out of ikiwiki core and enabled by default,
|
||||
and several new fields added to allow for advanced styling. (intrigeri)
|
||||
* smileys: Some fixes for escaped smileys.
|
||||
* smileys: Note that smileys need to be double-escaped for the escaping to
|
||||
work. Markdown removes one level of escaping.
|
||||
|
||||
[ Simon McVittie ]
|
||||
* meta, inline: Support guid options, to allow forcing a particular url or
|
||||
|
|
|
@ -1,45 +1,45 @@
|
|||
This page is used to control what smileys are supported by the wiki.
|
||||
Just write the text of a smiley to display it.
|
||||
|
||||
* \:) [[smileys/smile.png]]
|
||||
* \:-) [[smileys/smile.png]]
|
||||
* \:D [[smileys/biggrin.png]]
|
||||
* \:-D [[smileys/biggrin.png]]
|
||||
* \B) [[smileys/smile2.png]]
|
||||
* \B-) [[smileys/smile2.png]]
|
||||
* \:)) [[smileys/smile3.png]]
|
||||
* \:-)) [[smileys/smile3.png]]
|
||||
* \;) [[smileys/smile4.png]]
|
||||
* \;-) [[smileys/smile4.png]]
|
||||
* \:\ [[smileys/ohwell.png]]
|
||||
* \:-\ [[smileys/ohwell.png]]
|
||||
* \:/ [[smileys/ohwell.png]]
|
||||
* \:-/ [[smileys/ohwell.png]]
|
||||
* \:| [[smileys/neutral.png]]
|
||||
* \:-| [[smileys/neutral.png]]
|
||||
* \>:> [[smileys/devil.png]]
|
||||
* \X-( [[smileys/angry.png]]
|
||||
* \<:( [[smileys/frown.png]]
|
||||
* \:( [[smileys/sad.png]]
|
||||
* \:-( [[smileys/sad.png]]
|
||||
* \:-? [[smileys/tongue.png]]
|
||||
* \:-P [[smileys/tongue.png]]
|
||||
* \:o [[smileys/redface.png]]
|
||||
* \|) [[smileys/tired.png]]
|
||||
* \|-) [[smileys/tired.png]]
|
||||
* \{OK} [[smileys/thumbs-up.png]]
|
||||
* \{X} [[smileys/icon-error.png]]
|
||||
* \{i} [[smileys/icon-info.png]]
|
||||
* \(./) [[smileys/checkmark.png]]
|
||||
* \(!) [[smileys/idea.png]]
|
||||
* \[!] [[smileys/attention.png]]
|
||||
* \/!\ [[smileys/alert.png]]
|
||||
* \(?) [[smileys/question.png]]
|
||||
* \{*} [[smileys/star_on.png]]
|
||||
* \{o} [[smileys/star_off.png]]
|
||||
* \{1} [[smileys/prio1.png]]
|
||||
* \{2} [[smileys/prio2.png]]
|
||||
* \{3} [[smileys/prio3.png]]
|
||||
* \\:) [[smileys/smile.png]]
|
||||
* \\:-) [[smileys/smile.png]]
|
||||
* \\:D [[smileys/biggrin.png]]
|
||||
* \\:-D [[smileys/biggrin.png]]
|
||||
* \\B) [[smileys/smile2.png]]
|
||||
* \\B-) [[smileys/smile2.png]]
|
||||
* \\:)) [[smileys/smile3.png]]
|
||||
* \\:-)) [[smileys/smile3.png]]
|
||||
* \\;) [[smileys/smile4.png]]
|
||||
* \\;-) [[smileys/smile4.png]]
|
||||
* \\:\ [[smileys/ohwell.png]]
|
||||
* \\:-\ [[smileys/ohwell.png]]
|
||||
* \\:/ [[smileys/ohwell.png]]
|
||||
* \\:-/ [[smileys/ohwell.png]]
|
||||
* \\:| [[smileys/neutral.png]]
|
||||
* \\:-| [[smileys/neutral.png]]
|
||||
* \\>:> [[smileys/devil.png]]
|
||||
* \\X-( [[smileys/angry.png]]
|
||||
* \\<:( [[smileys/frown.png]]
|
||||
* \\:( [[smileys/sad.png]]
|
||||
* \\:-( [[smileys/sad.png]]
|
||||
* \\:-? [[smileys/tongue.png]]
|
||||
* \\:-P [[smileys/tongue.png]]
|
||||
* \\:o [[smileys/redface.png]]
|
||||
* \\|) [[smileys/tired.png]]
|
||||
* \\|-) [[smileys/tired.png]]
|
||||
* \\{OK} [[smileys/thumbs-up.png]]
|
||||
* \\{X} [[smileys/icon-error.png]]
|
||||
* \\{i} [[smileys/icon-info.png]]
|
||||
* \\(./) [[smileys/checkmark.png]]
|
||||
* \\(!) [[smileys/idea.png]]
|
||||
* \\[!] [[smileys/attention.png]]
|
||||
* \\/!\ [[smileys/alert.png]]
|
||||
* \\(?) [[smileys/question.png]]
|
||||
* \\{*} [[smileys/star_on.png]]
|
||||
* \\{o} [[smileys/star_off.png]]
|
||||
* \\{1} [[smileys/prio1.png]]
|
||||
* \\{2} [[smileys/prio2.png]]
|
||||
* \\{3} [[smileys/prio3.png]]
|
||||
|
||||
For example: {*} B) {*}
|
||||
|
||||
|
|
Loading…
Reference in New Issue