diff options
author | Enrico Zini <enrico@enricozini.org> | 2008-07-26 23:24:11 +0100 |
---|---|---|
committer | Joey Hess <joey@kodama.kitenet.net> | 2008-07-26 23:08:17 -0400 |
commit | e3713772f76fa9cc3587e48d0326035a352270d9 (patch) | |
tree | 730dd815bc96e6e0640ef54b2a88ae0143d03de9 /IkiWiki | |
parent | 1c831b472b3d84342d649db01eb33718e3b5bd0c (diff) | |
download | ikiwiki-e3713772f76fa9cc3587e48d0326035a352270d9.tar ikiwiki-e3713772f76fa9cc3587e48d0326035a352270d9.tar.gz |
Added cutpaste plugin.
I'm wondering if cutandpaste wouldn't be a better name.
Diffstat (limited to 'IkiWiki')
-rw-r--r-- | IkiWiki/Plugin/cutpaste.pm | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/IkiWiki/Plugin/cutpaste.pm b/IkiWiki/Plugin/cutpaste.pm new file mode 100644 index 000000000..1737775d5 --- /dev/null +++ b/IkiWiki/Plugin/cutpaste.pm @@ -0,0 +1,68 @@ +#!/usr/bin/perl +package IkiWiki::Plugin::cutpaste; + +use warnings; +use strict; +use IkiWiki 2.00; +use UNIVERSAL; + +my %savedtext; + +sub import { #{{{ + hook(type => "preprocess", id => "cut", call => \&preprocess_cut, scan => 1); + hook(type => "preprocess", id => "copy", call => \&preprocess_copy, scan => 1); + hook(type => "preprocess", id => "paste", call => \&preprocess_paste); +} # }}} + +sub preprocess_cut (@) { #{{{ + my %params=@_; + + foreach my $param (qw{id text}) { + if (! exists $params{$param}) { + return "[[cut ".sprintf(gettext('%s parameter is required'), $param)."]]"; + } + } + + $savedtext{$params{page}} = {} if not exists $savedtext{$params{"page"}}; + $savedtext{$params{page}}->{$params{id}} = $params{text}; + + return "" if defined wantarray; +} # }}} + +sub preprocess_copy (@) { #{{{ + my %params=@_; + + foreach my $param (qw{id text}) { + if (! exists $params{$param}) { + return "[[copy ".sprintf(gettext('%s parameter is required'), $param)."]]"; + } + } + + $savedtext{$params{page}} = {} if not exists $savedtext{$params{"page"}}; + $savedtext{$params{page}}->{$params{id}} = $params{text}; + + return IkiWiki::preprocess($params{page}, $params{destpage}, + IkiWiki::filter($params{page}, $params{destpage}, $params{text})) if defined wantarray; +} # }}} + +sub preprocess_paste (@) { #{{{ + my %params=@_; + + foreach my $param (qw{id}) { + if (! exists $params{$param}) { + return "[[paste ".sprintf(gettext('%s parameter is required'), $param)."]]"; + } + } + + if (! exists $savedtext{$params{page}}) { + return "[[paste ".gettext('no text was copied in this page')."]]"; + } + if (! exists $savedtext{$params{page}}->{$params{id}}) { + return "[[paste ".sprintf(gettext('no text was copied in this page with id %s'), $params{id})."]]"; + } + + return IkiWiki::preprocess($params{page}, $params{destpage}, + IkiWiki::filter($params{page}, $params{destpage}, $savedtext{$params{page}}->{$params{id}})); +} # }}} + +1; |