summaryrefslogtreecommitdiff
path: root/IkiWiki/Plugin/tag.pm
AgeCommit message (Collapse)Author
2009-05-06Avoid %links accumulating duplicates. (For TOVA)Joey Hess
This is sorta an optimisation, and sorta a bug fix. In one test case I have available, it can speed a page build up from 3 minutes to 3 seconds. The root of the problem is that $links{$page} contains arrays of links, rather than hashes of links. And when a link is found, it is just pushed onto the array, without checking for dups. Now, the array is emptied before scanning a page, so there should not be a lot of opportunity for lots of duplicate links to pile up in it. But, in some cases, they can, and if there are hundreds of duplicate links in the array, then scanning it for matching links, as match_link and some other code does, becomes much more expensive than it needs to be. Perhaps the real right fix would be to change the data structure to a hash. But, the list of links is never accessed like that, you always want to iterate through it. I also looked at deduping the list in saveindex, but that does a lot of unnecessary work, and doesn't completly solve the problem. So, finally, I decided to add an add_link function that handles deduping, and make ikiwiki-transition remove the old dup links.
2009-02-19rename tag() to tagged(); add docsJoey Hess
2009-02-19add tag() pagespecJoey Hess
patch from jon
2008-12-23finalise version 3.00 of the plugin apiJoey Hess
2008-12-17Coding style change: Remove explcit vim folding markers.Joey Hess
2008-11-10remove redundant link mungeJoey Hess
This is not needed now that tagpage returns a page name starting with a slash. (Also fixes a minor bug that the edit links started with double slashes due to the hack.)
2008-11-10tag: Normalize tagbase so leading/trailing slashes in it don't break things.Joey Hess
2008-10-20tag: When tagpage is set, force the links created by tagging to point at the ↵Joey Hess
toplevel tagpage, and not closer subpages. The html links already went there, but internally the links were not recorded as absolute, which could cause confusing backlinks etc. For example, with tagbase=tags, if blog/tags/bar existed and blog/foo was tagged bar, it would link to /tags/bar. But, the link would be recorded simply as a link to tags/bar, and so later blog/tags/bar would appear to have the backlink.
2008-09-27Export pagetitle, titlepage, linkpage.Joey Hess
2008-09-25tag: Make edit link for new tags ensure that the tags are created inside ↵Joey Hess
tagbase, when it's set.
2008-08-03add plugin safe/rebuild info (part 3 of 3)Joey Hess
2008-07-26remove default values in getsetupJoey Hess
They were a bit confusing, since they did not actually set the default, and example values are sufficient.
2008-07-26finish adding getsetup hooks to pluginsJoey Hess
2008-07-21Don't prepend tagbase to tags if they start with "./" or "/".Simon McVittie
That syntax made little sense previously, and this allows sites to put "most" of their tags under $tagbase.
2007-09-24patch from madduck to fix thinkojoey
2007-09-22make taglink support the same method for specifying link text as a regularjoey
wikilink
2007-09-20* Add taglink preprocessor directive, supporting visible tag links.joey
Closes: #443344
2007-08-05* Add rel=tag attribute to tag links, supporting that microformat, as welljoey
as allowing them to be styled specially. Thanks, NicolasLimare.
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-04* Fix tags to page names that contain special characters.joey
2007-03-07deal with new preview parameterjoey
2007-02-14* Allow multiple tag settings to appear in a single page.joey
2007-01-14* Fix missing categories in rss/atom feeds.joey
2006-11-08* Make sure to check for errors from every eval.joey
2006-10-28 instead of over and over. Typical speedup is ~4x. Max possible speedup:joey
8x. * Add "scan" parameter to hook(), which is used to make the hook be called during the scanning pass, as well as the render pass. The meta and tag plugins need to use the new scan parameter, so will any others that modify %links. * Now that links are calculated in a separate pass, it can also precalculate backlinks in one pass, which is O(N^2) instead of the previous code that was O(N^3). A very nice speedup for wikis with lots (thousands) of pages.
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-07-31fix title metadata on blogs, reorg needed to do it, simplified tag somejoey
2006-07-29* Put categories in rss feeds for tagged items.joey
2006-07-28* Add exclude option in setup files, works same as --exclude.joey
2006-07-28* Add getopt hook type, this allows plugins to add new command-line options.joey
* Add --tagbase option to tag plugin.
2006-07-28Hope encrico doesn't mind, but I changed the location and layout of thejoey
tags on the templates. This way seems to fit better with the links. Also some css cleanup, avoid hardcoded <i> etc.
2006-07-27more destpage improvementsjoey
2006-07-27* Switch pagetemplate hooks to using named parameters.joey
* Pass a "destpage" parameter to preprocessor and pagetemplate hooks. This will be the page that a source page will be part of, which is different than the source page for inlined pages. * Audited all plugins to endure they pass page, destpage to htmllink appropriatly. This means inlining of various plugins will not work properly, with correct links generated.
2006-07-27 - Adds a tag plugin that allows more easily tagging pages.joey
The meta plugin can also still be used for that, but the tag plugin also lists a page's tags at the bottom of the page. - Allows preprocessor directives to have parameters with no specified value. - Fixes preprocessor directive parameter parsing so that foo=bar baz now means "foo=bar" and a "baz" with no value. * Run pagetemplate hooks when inlining pages so that inlines pages also list their tags. * Make all plugins with pagetemplate hooks check that variables exist on the template before setting them.
2006-07-27* Patch from Enrico thatjoey
- allows preprocessor directives to have parameters with no specified value - fixes preprocessor directive parameter parsing so that foo=bar baz now means "foo=bar" and a "baz" with no value - Add a tag plugin that allows more easily tagging pages. The meta plugin can also still be used for this.