X-Git-Url: https://sipb.mit.edu/gitweb.cgi/ikiwiki.git/blobdiff_plain/dae0f48e91304afcb6ebe0936360e51b22a56548..f3351c18b266ca069a603437e6157810cf2fcaa1:/doc/todo/firm_up_plugin_interface.mdwn diff --git a/doc/todo/firm_up_plugin_interface.mdwn b/doc/todo/firm_up_plugin_interface.mdwn index e23f2f3d6..a8d34eada 100644 --- a/doc/todo/firm_up_plugin_interface.mdwn +++ b/doc/todo/firm_up_plugin_interface.mdwn @@ -1,34 +1,11 @@ -The plugin interface is currently that they can register hooks, and can -call any other ikiwiki internal function they desire, generally through -Ikiwiki::function calls. Also, some Ikiwiki::config etc variables can be -used. - -This is a very weak interface, and should be firmed up to something more -like a proper perl library. I've been waiting to get some idea of what bits -of ikiwiki are most useful to plugins before doing it; there are plenty of -plugins to know that now. - -IkiWiki will now export some function calls and variables when loaded. - -Functions used by many plugins, which I'm sure should be exported: - -* hook -* debug -* error -* template -* htmlpage -* add_depends -* pagespec_match -* bestlink -* htmllink -* readfile -* writefile -* pagetype -* srcfile -* pagename -* displaytime +I don't want this interface to be too firm; it's ok for a plugin like +`ddate` to redefine an internal function like IkiWiki::displaytime if it +wants to.. But plugins that still access stuff through IkiWiki:: should be +aware that that stuff can change at any time and break them. Possibly without +perl's type checking catching the breakage, in some cases. Plugins that +only use exported symbols should not be broken by future ikiwiki changes. -Functions used by only some plugins, undecided: +Functions used by only some plugins, undecided about exporting: * lockwiki, unlockwiki (aggregate) Too internal to ever be exported. @@ -51,22 +28,15 @@ Functions used by only some plugins, undecided: * linkify * preprocess * filter - Used by several, but problimatic since plugins typically define - functions with these names.. + The 4 above are used by a few plugins, but problimatic since plugins + typically also define functions with these names.. I also feel that + this part of ikiwiki needs some more work before it's set in stone. + These are always called together, in the same order, though + sometimes htmlize isn't included. -Variables used by plugins: +Variables used by plugins but not exported yet: -* %IkiWiki::config (various values; probably not worth locking down any - more, export it) -* %IkiWiki::links (many, seems clearcut to export) -* %IkiWiki::renderedfiles (orphans, inline, search) -* %IkiWiki::pagesources (pagecount, sidebar, template, inline) -* %IkiWiki::pagecase (aggregate.. will not export yet) -* %IkiWIki::backlinks (pagestats.. will not export yet) +* %IkiWiki::pagecase (aggregate) +* %IkiWIki::backlinks (pagestats) -I don't want this interface to be too firm; it's ok for a plugin like -`ddate` to redefine an internal function like IkiWiki::displaytime if it -wants to.. But plugins that still access stuff through IkiWiki:: should be -aware that that stuff can change at any time and break them. Possibly without -perl's type checking catching the breakage, in some cases. Plugins that -only use exported symbols should not break by future ikiwiki changes. +[[todo/done]]