=head1 NAME
Konstrukt::Plugin::wiki::markup::hr - Block plugin to handle horizontal rules
=head1 SYNOPSIS
my $hr = use_plugin 'wiki::markup::hr';
my $rv = $hr->process($block);
=head1 DESCRIPTION
This one will match if the block consists of only one line that just contains
dashes (-).
The block will be replaced by a
-tag.
=head1 EXAMPLE
those two paragraphs
------
will be separated by a horizontal rule
=cut
package Konstrukt::Plugin::wiki::markup::hr;
use strict;
use warnings;
use base 'Konstrukt::Plugin::wiki::markup::blockplugin';
use Konstrukt::Plugin; #import use_plugin
use Konstrukt::Parser::Node;
=head1 METHODS
=head2 install
Installs the templates.
B
none
=cut
sub install {
my ($self) = @_;
return $Konstrukt::Lib->plugin_file_install_helper($Konstrukt::Settings->get("wiki/template_path"));
}
# /install
=head2 process
This method will do the work.
B:
=over
=item * $block - Block node (of type L) containing the
(text-)nodes of this block.
=back
=cut
sub process {
my ($self, $block) = @_;
if ($block->{first_child} eq $block->{last_child} and not $block->{first_child}->{wiki_finished} and $block->{first_child}->{type} eq 'plaintext' and $block->{first_child}->{content} =~ /^-+\s*$/) {
#replace by hr-template
my $template = use_plugin 'template';
my $template_path = $Konstrukt::Settings->get("wiki/template_path");
#create the template node
my $template_node = $template->node("${template_path}markup/hr.template");
#remove all child nodes from the block an add the template
$block->{first_child} = $block->{last_child} = undef;
$block->add_child($template_node);
return 1;
} else {
#doesn't match
return undef;
}
}
# /process
1;
=head1 AUTHOR
Copyright 2006 Thomas Wittek (mail at gedankenkonstrukt dot de). All rights reserved.
This document is free software.
It is distributed under the same terms as Perl itself.
=head1 SEE ALSO
L
=cut
__DATA__
-- 8< -- textfile: markup/hr.template -- >8 --