summaryrefslogtreecommitdiff
path: root/IkiWiki/Plugin/smiley.pm
AgeCommit message (Collapse)Author
2009-03-08avoid potential infinite loop in smiley expansionJoey Hess
- In 3.05, ikiwiki began expanding templates in scan mode, for annoying, expensive, but ultimatly necessary reasons of correctness. - Smiley processing has a bug: It inserts a span for the smiley, and then continues searching forward in the content for more, starting at $end_of_smiley+1. Which means it searches for smilies in the span too! And if it somehow finds one, we get an infinite loop here. - This bug can, probably, only be tickled if a htmllink to show the smiley fails, because the smiley file doesn't exist, or because ikiwiki doesn't know about it. In that case, a link will be inserted to _create_ the missing page, and that link will include the smiley inside the <a></a>. - When a template is expanded in scan mode, and it contains an inline, the sanitize hook is run during scan mode, which never happened before. That causes the smiley processor to run, before ikiwiki is, necessarily, aware that all the smiley files exist (depending on scan order). So it inserts creation links for them, and triggers the bug. I've put in the simple fix of jumping forward past the inserted span, and it does fix the problem. I will need to look in a bit more detail into why an inline nested inside a template is fully expanded during the scan pass -- that really shouldn't be necessary, and it makes things much slower than they need to be.
2008-12-23finalise version 3.00 of the plugin apiJoey Hess
2008-12-17Coding style change: Remove explcit vim folding markers.Joey Hess
2008-08-26remove dead codeJoey Hess
2008-08-03add plugin safe/rebuild info (part 3 of 3)Joey Hess
2008-07-17fix pos settingJoey Hess
What was really going on is that expanding a smiley modified the string and reset the match process. Force set pos so it continues on from the expanded smiley.
2008-07-17smiley escaping fixesJoey Hess
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`.
2008-06-28smiley: Generate links relative to the destpage. (Fixes a reversion from 2.41.)Joey Hess
2008-03-21process smilies in a sanitize hookJoey Hess
I had to move it to sanitize so all the markup is htmlized, so it can scan for <pre> and <code>.
2008-03-21another fixJoey Hess
I'm suprised that the second m//g didn't seem to clobber @-, but I don't want to rely on that, so preserve it beforehand.
2008-03-21various fixes and simplificationsJoey Hess
2008-03-21smiley: Detect smileys inside pre and tags, and do not expand.Joey Hess
2007-08-28* Support for looking in multiple directories for underlay files.joey
* Plugins can add new directories to the search path with the add_underlay function. * Split out smiley underlay files into a separate underlay, so if the plugin isn't used, the wiki isn't bloated with all those files.
2007-05-17* Add a destpage parameter to the filter hook.joey
* Fix links to smilies generated by the smiley plugin for inlined pages. The old links were often wrong, but often still worked by accident.
2007-04-27* pagespec_match() has changed to take named parameters, to better allowjoey
for extended pagespecs. The old calling convention will still work for back-compat for now. * The calling convention for functions in the IkiWiki::PageSpec namespace has changed so they are passed named parameters. * Plugin interface version increased to 2.00 since I don't anticipate any more interface changes before 2.0.
2007-04-06* Fix smiley plugin to scan smileys.mdwn after it's updated, which fixesjoey
a bug caused by committing changes to smilies.mdwn.
2007-02-20* Changed calling convention for httmllink slightly. The first threejoey
parameters remain the same, but additional options are now passed in using named parameters. * Change plugin interface version to 1.02 to reflect this change. * Add a new anchor option to htmllink. Thanks Ben for the idea. * Support anchors in wikilinks. * Add a "more" plugin based on one contributed by Ben to allow implementing those dreaded "Read more" links in blogs.
2007-02-14* Fix the template, toggle, and conditional plugins to filter text beforejoey
preprocessing it. * Fix smiley plugin to support smileys at the very beginning or end of the content.
2006-12-29* Initial work on internationalization of the program code. po/ikiwiki.potjoey
is available for translation. * Export gettext() from IkiWiki module.
2006-09-09* Work on firming up the plugin interface:joey
- Plugins should not need to load IkiWiki::Render to get commonly used functions, so moved some functions from there to IkiWiki. - Picked out the set of functions and variables that most plugins use, documented them, and made IkiWiki export them by default, like a proper perl module should. - Use the other functions at your own risk. - This is not quite complete, I still have to decide whether to export some other things. * Changed all plugins included in ikiwiki to not use "IkiWiki::" when referring to stuff now exported by the IkiWiki module. * Anyone with a third-party ikiwiki plugin is strongly enrouraged to make like changes to it and avoid use of non-exported symboles from "IkiWiki::". * Link debian/changelog and debian/news to NEWS and CHANGELOG. * Support hyperestradier version 1.4.2, which adds a new required phraseform setting.
2006-05-26* --getctime had bitrotted (well I only ever used it the once so far..),joey
* When inlining a page in another one, links from the inlined page are now expanded the same as they are when rendering the inlined page as a standalone page. So rather than being expanded from the POV of the inlining page, they are expanded from the POV of the inlined page. For example, a link from blog/foo to "bar" will now link to blog/bar if it exists. Previously this needed to be a link explicitly to "blog/bar"; such links will also continue to work. (This was slightly complex to do as the link still has to be constructed relative to the inlining page.)
2006-05-04updatejoey