finalise version 3.00 of the plugin api

master
Joey Hess 2008-12-23 16:34:19 -05:00
parent 7e7739bdd9
commit 678d467a40
90 changed files with 98 additions and 94 deletions

View File

@ -24,7 +24,7 @@ our @EXPORT = qw(hook debug error template htmlpage add_depends pagespec_match
inject
%config %links %pagestate %wikistate %renderedfiles
%pagesources %destsources);
our $VERSION = 2.00; # plugin interface version, next is ikiwiki version
our $VERSION = 3.00; # plugin interface version, next is ikiwiki version
our $version='unknown'; # VERSION_AUTOREPLACE done by Makefile, DNE
my $installdir=''; # INSTALLDIR_AUTOREPLACE done by Makefile, DNE

View File

@ -4,7 +4,7 @@ package IkiWiki::Plugin::aggregate;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
use HTML::Parser;
use HTML::Tagset;
use HTML::Entities;

View File

@ -4,7 +4,7 @@ package IkiWiki::Plugin::amazon_s3;
use warnings;
no warnings 'redefine';
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
use IkiWiki::Render;
use Net::Amazon::S3;

View File

@ -3,7 +3,7 @@ package IkiWiki::Plugin::anonok;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
sub import {
hook(type => "getsetup", id => "anonok", call => \&getsetup);

View File

@ -3,7 +3,7 @@ package IkiWiki::Plugin::attachment;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
sub import {
add_underlay("javascript");

View File

@ -3,7 +3,7 @@ package IkiWiki::Plugin::autoindex;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
use Encode;
sub import {

View File

@ -4,7 +4,7 @@ package IkiWiki::Plugin::brokenlinks;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
sub import {
hook(type => "getsetup", id => "brokenlinks", call => \&getsetup);

View File

@ -20,7 +20,7 @@ package IkiWiki::Plugin::calendar;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
use Time::Local;
use POSIX;

View File

@ -4,7 +4,7 @@ package IkiWiki::Plugin::camelcase;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
# This regexp is based on the one in Text::WikiFormat.
my $link_regexp=qr{

View File

@ -5,7 +5,7 @@ package IkiWiki::Plugin::color;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
sub import {
hook(type => "preprocess", id => "color", call => \&preprocess);

View File

@ -7,7 +7,7 @@ package IkiWiki::Plugin::comments;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
use Encode;
use POSIX qw(strftime);

View File

@ -3,7 +3,7 @@ package IkiWiki::Plugin::conditional;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
use UNIVERSAL;
sub import {

View File

@ -5,7 +5,7 @@ package IkiWiki::Plugin::creole;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
sub import {
hook(type => "getsetup", id => "creole", call => \&getsetup);

View File

@ -3,7 +3,7 @@ package IkiWiki::Plugin::cutpaste;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
my %savedtext;

View File

@ -2,7 +2,7 @@
# Discordian date support fnord ikiwiki.
package IkiWiki::Plugin::ddate;
use IkiWiki 2.00;
use IkiWiki 3.00;
no warnings;
sub import {

View File

@ -4,7 +4,7 @@ package IkiWiki::Plugin::editdiff;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
use HTML::Entities;
use IPC::Open2;

View File

@ -3,7 +3,7 @@ package IkiWiki::Plugin::edittemplate;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
use HTML::Template;
use Encode;

View File

@ -3,7 +3,7 @@ package IkiWiki::Plugin::embed;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
my $attribr=qr/[^<>"]+/;

View File

@ -6,7 +6,7 @@ package IkiWiki::Plugin::external;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
use RPC::XML;
use RPC::XML::Parser;
use IPC::Open2;

View File

@ -5,7 +5,7 @@ package IkiWiki::Plugin::favicon;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
sub import {
hook(type => "getsetup", id => "favicon", call => \&getsetup);

View File

@ -3,7 +3,7 @@ package IkiWiki::Plugin::filecheck;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
my %units=( #{{{ # size in bytes
B => 1,

View File

@ -3,7 +3,7 @@ package IkiWiki::Plugin::format;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
sub import {
hook(type => "preprocess", id => "format", call => \&preprocess);

View File

@ -4,7 +4,7 @@ package IkiWiki::Plugin::fortune;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
sub import {
hook(type => "getsetup", id => "fortune", call => \&getsetup);

View File

@ -4,7 +4,7 @@ package IkiWiki::Plugin::goodstuff;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
my @bundle=qw{
brokenlinks

View File

@ -3,7 +3,7 @@ package IkiWiki::Plugin::google;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
use URI;
my $host;

View File

@ -3,7 +3,7 @@ package IkiWiki::Plugin::googlecalendar;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
sub import {
hook(type => "getsetup", id => "googlecalendar",

View File

@ -5,7 +5,7 @@ package IkiWiki::Plugin::graphviz;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
use IPC::Open2;
sub import {

View File

@ -4,7 +4,7 @@ package IkiWiki::Plugin::haiku;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
sub import {
hook(type => "getsetup", id => "haiku", call => \&getsetup);

View File

@ -10,7 +10,7 @@ package IkiWiki::Plugin::hnb;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
use File::Temp qw(:mktemp);
sub import {

View File

@ -4,7 +4,7 @@ package IkiWiki::Plugin::html;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
sub import {
hook(type => "getsetup", id => "html", call => \&getsetup);

View File

@ -9,7 +9,7 @@ package IkiWiki::Plugin::htmlbalance;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
use HTML::TreeBuilder;
use HTML::Entities;

View File

@ -3,7 +3,7 @@ package IkiWiki::Plugin::htmlscrubber;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
# This regexp matches urls that are in a known safe scheme.
# Feel free to use it from other plugins.

View File

@ -9,7 +9,7 @@ package IkiWiki::Plugin::htmltidy;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
use IPC::Open2;
sub import {

View File

@ -4,7 +4,7 @@ package IkiWiki::Plugin::httpauth;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
sub import {
hook(type => "getsetup", id => "httpauth", call => \&getsetup);

View File

@ -5,7 +5,7 @@ package IkiWiki::Plugin::img;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
my %imgdefaults;

View File

@ -5,7 +5,7 @@ package IkiWiki::Plugin::inline;
use warnings;
use strict;
use Encode;
use IkiWiki 2.00;
use IkiWiki 3.00;
use URI;
my %knownfeeds;

View File

@ -3,7 +3,7 @@ package IkiWiki::Plugin::link;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
my $link_regexp;

View File

@ -3,7 +3,7 @@ package IkiWiki::Plugin::linkmap;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
use IPC::Open2;
sub import {

View File

@ -4,7 +4,7 @@ package IkiWiki::Plugin::listdirectives;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
sub import {
add_underlay("directives");

View File

@ -3,7 +3,7 @@ package IkiWiki::Plugin::lockedit;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
sub import {
hook(type => "getsetup", id => "lockedit", call => \&getsetup);

View File

@ -9,7 +9,7 @@ package IkiWiki::Plugin::map;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
sub import {
hook(type => "getsetup", id => "map", call => \&getsetup);

View File

@ -4,7 +4,7 @@ package IkiWiki::Plugin::mdwn;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
sub import {
hook(type => "getsetup", id => "mdwn", call => \&getsetup);

View File

@ -4,7 +4,7 @@ package IkiWiki::Plugin::meta;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
my %metaheaders;

View File

@ -3,7 +3,7 @@ package IkiWiki::Plugin::mirrorlist;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
sub import {
hook(type => "getsetup", id => "mirrorlist", call => \&getsetup);

View File

@ -3,7 +3,7 @@ package IkiWiki::Plugin::more;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
my $linktext = gettext("more");

View File

@ -3,7 +3,7 @@ package IkiWiki::Plugin::opendiscussion;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
sub import {
hook(type => "getsetup", id => "opendiscussion", call => \&getsetup);

View File

@ -4,7 +4,7 @@ package IkiWiki::Plugin::openid;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
sub import {
hook(type => "getopt", id => "openid", call => \&getopt);

View File

@ -4,7 +4,7 @@ package IkiWiki::Plugin::orphans;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
sub import {
hook(type => "getsetup", id => "orphans", call => \&getsetup);

View File

@ -4,7 +4,7 @@ package IkiWiki::Plugin::otl;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
use open qw{:utf8 :std};
sub import {

View File

@ -3,7 +3,7 @@ package IkiWiki::Plugin::pagecount;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
sub import {
hook(type => "getsetup", id => "pagecount", call => \&getsetup);

View File

@ -12,7 +12,7 @@ package IkiWiki::Plugin::pagestats;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
# Names of the HTML classes to use for the tag cloud
our @classes = ('smallestPC', 'smallPC', 'normalPC', 'bigPC', 'biggestPC' );

View File

@ -3,7 +3,7 @@ package IkiWiki::Plugin::pagetemplate;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
my %templates;

View File

@ -4,7 +4,7 @@ package IkiWiki::Plugin::parentlinks;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
sub import {
hook(type => "parentlinks", id => "parentlinks", call => \&parentlinks);

View File

@ -4,7 +4,7 @@ package IkiWiki::Plugin::passwordauth;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
sub import {
hook(type => "getsetup", id => "passwordauth", "call" => \&getsetup);

View File

@ -3,7 +3,7 @@ package IkiWiki::Plugin::pingee;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
sub import {
hook(type => "getsetup", id => "pingee", call => \&getsetup);

View File

@ -3,7 +3,7 @@ package IkiWiki::Plugin::pinger;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
my %pages;
my $pinged=0;

View File

@ -3,7 +3,7 @@ package IkiWiki::Plugin::poll;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
use Encode;
sub import {

View File

@ -7,7 +7,7 @@ package IkiWiki::Plugin::polygen;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
use File::Find;
sub import {

View File

@ -3,7 +3,7 @@ package IkiWiki::Plugin::postsparkline;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
sub import {
IkiWiki::loadplugin('sparkline');

View File

@ -1,6 +1,6 @@
#!/usr/bin/perl
package IkiWiki::Plugin::prettydate;
use IkiWiki 2.00;
use IkiWiki 3.00;
use warnings;
no warnings 'redefine';
use strict;

View File

@ -3,7 +3,7 @@ package IkiWiki::Plugin::progress;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
my $percentage_pattern = qr/[0-9]+\%?/; # pattern to validate percentages

View File

@ -4,7 +4,7 @@ package IkiWiki::Plugin::rawhtml;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
sub import {
hook(type => "getsetup", id => "rawhtml", call => \&getsetup);

View File

@ -3,7 +3,7 @@ package IkiWiki::Plugin::recentchanges;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
use Encode;
use HTML::Entities;

View File

@ -3,7 +3,7 @@ package IkiWiki::Plugin::recentchangesdiff;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
use HTML::Entities;
my $maxlines=200;

View File

@ -4,7 +4,7 @@ package IkiWiki::Plugin::relativedate;
use warnings;
no warnings 'redefine';
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
use POSIX;
use Encode;

View File

@ -3,7 +3,7 @@ package IkiWiki::Plugin::remove;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
sub import {
hook(type => "getsetup", id => "remove", call => \&getsetup);

View File

@ -3,7 +3,7 @@ package IkiWiki::Plugin::rename;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
sub import {
hook(type => "getsetup", id => "rename", call => \&getsetup);

View File

@ -4,7 +4,7 @@ package IkiWiki::Plugin::search;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
sub import {
hook(type => "getsetup", id => "search", call => \&getsetup);

View File

@ -3,7 +3,7 @@ package IkiWiki::Plugin::shortcut;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
sub import {
hook(type => "getsetup", id => "shortcut", call => \&getsetup);

View File

@ -6,7 +6,7 @@ package IkiWiki::Plugin::sidebar;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
sub import {
hook(type => "getsetup", id => "sidebar", call => \&getsetup);

View File

@ -3,7 +3,7 @@ package IkiWiki::Plugin::signinedit;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
sub import {
hook(type => "getsetup", id => "signinedit", call => \&getsetup);

View File

@ -3,7 +3,7 @@ package IkiWiki::Plugin::smiley;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
my %smileys;
my $smiley_regexp;

View File

@ -3,7 +3,7 @@ package IkiWiki::Plugin::sparkline;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
use IPC::Open2;
my $match_num=qr/[-+]?[0-9]+(?:\.[0-9]+)?/;

View File

@ -4,7 +4,7 @@ package IkiWiki::Plugin::table;
use warnings;
use strict;
use Encode;
use IkiWiki 2.00;
use IkiWiki 3.00;
sub import {
hook(type => "getsetup", id => "table", call => \&getsetup);

View File

@ -4,7 +4,7 @@ package IkiWiki::Plugin::tag;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
my %tags;

View File

@ -4,7 +4,7 @@ package IkiWiki::Plugin::template;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
use HTML::Template;
use Encode;

View File

@ -3,7 +3,7 @@ package IkiWiki::Plugin::testpagespec;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
sub import {
hook(type => "getsetup", id => "testpagespec", call => \&getsetup);

View File

@ -8,7 +8,7 @@ use strict;
use Digest::MD5 qw(md5_hex);
use File::Temp qw(tempdir);
use HTML::Entities;
use IkiWiki 2.00;
use IkiWiki 3.00;
my $default_prefix = <<EOPREFIX;
\\documentclass{article}

View File

@ -6,7 +6,7 @@ package IkiWiki::Plugin::textile;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
use Encode;
sub import {

View File

@ -4,7 +4,7 @@ package IkiWiki::Plugin::toc;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
use HTML::Parser;
sub import {

View File

@ -3,7 +3,7 @@ package IkiWiki::Plugin::toggle;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
sub import {
add_underlay("javascript");

View File

@ -8,7 +8,7 @@ package IkiWiki::Plugin::txt;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
use HTML::Entities;
my $findurl=0;

View File

@ -4,7 +4,7 @@ package IkiWiki::Plugin::typography;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
sub import {
hook(type => "getopt", id => "typography", call => \&getopt);

View File

@ -4,7 +4,7 @@ package IkiWiki::Plugin::version;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
sub import {
hook(type => "getsetup", id => "version", call => \&getsetup);

View File

@ -3,7 +3,7 @@ package IkiWiki::Plugin::websetup;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
sub import {
hook(type => "getsetup", id => "websetup", call => \&getsetup);

View File

@ -4,7 +4,7 @@ package IkiWiki::Plugin::wikitext;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
sub import {
hook(type => "getsetup", id => "wiki", call => \&getsetup);

View File

@ -19,7 +19,7 @@ that can be fleshed out to make a useful plugin.
`IkiWiki::Plugin::pagecount` is another simple example. All perl plugins
should `use IkiWiki` to import the ikiwiki plugin interface. It's a good
idea to include the version number of the plugin interface that your plugin
expects: `use IkiWiki 2.00`.
expects: `use IkiWiki 3.00`.
An external plugin is an executable program. It can be written in any
language. Its interface to ikiwiki is via XML RPC, which it reads from
@ -431,7 +431,7 @@ describes the plugin as a whole. For example:
To import the ikiwiki plugin interface:
use IkiWiki '2.00';
use IkiWiki '3.00';
This will import several variables and functions into your plugin's
namespace. These variables and functions are the ones most plugins need,

View File

@ -27,7 +27,7 @@ important one is the IkiWiki module.
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
Ok, boilerplate is out of the way. Now to add the one function that ikiwiki
expects to find in any module: `import`. The import function is called when

View File

@ -36,12 +36,14 @@ really bad bugs will be applied going forward.
# 3.0
Version 3.0 is an opportunity to make significant transitions, and also adds
many new features.
Version 3.0 is an opportunity to make significant transitions.
Read [[tips/upgrade_to_3.0]] for the steps you will need to
follow when upgrading your wiki to this version.
* See [[tips/upgrade_to_3.0]] for the steps you will need to follow
when upgrading to this version.
* Finalise a new version of the plugin API, exporting additional commonly
The highlights of the changes in version 3.0 include:
* A new version of the plugin API, exporting additional commonly
used functions from IkiWiki.pm. See [[todo/firm_up_plugin_interface]]
It will include a vast number of new features, bugfixes, and other

View File

@ -92,3 +92,5 @@ Probably needs to evolve more and be more widely used before being exported.
* %IkiWiki::pagecase (aggregate)
* %IkiWiki::backlinks (pagestats)
[[done]] (until 4.0)..