From cdebface247fe459d5a6b8b4e68e77ae33093ce5 Mon Sep 17 00:00:00 2001 From: Jonas Smedegaard Date: Thu, 16 Sep 2010 01:09:11 +0200 Subject: Add plugin h1title. --- perl/IkiWiki/Plugin/h1title.pm | 87 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 perl/IkiWiki/Plugin/h1title.pm (limited to 'perl/IkiWiki/Plugin/h1title.pm') diff --git a/perl/IkiWiki/Plugin/h1title.pm b/perl/IkiWiki/Plugin/h1title.pm new file mode 100644 index 0000000..be29216 --- /dev/null +++ b/perl/IkiWiki/Plugin/h1title.pm @@ -0,0 +1,87 @@ +#!/usr/bin/perl + +package IkiWiki::Plugin::h1title; + +use warnings; +use strict; +use IkiWiki 2.00; + +sub import { + hook(type => "filter", id => "h1title", call => \&filter); +} + +sub filter(@) { + my %params = @_; + my $page = $params{page}; + my $content = $params{content}; + + if ($content =~ s/^\#[ \t]+(.*?)[ \t]*\#*\n//) { + $pagestate{$page}{meta}{title} = $1; + } + return $content; +} + +1 + +__END__ + +=head1 NAME + +ikiwiki Plug-in: h1title + +=head1 SYNOPSIS + +If there is a level 1 Markdown atx-style (hash mark) header on the first line, +this plugin uses it to set the page title and removes it from the page body so +that it won't be rendered twice. Level 1 headers in the remainder of the page +will be ignored. + +For example, the following page will have title "My Title" and the rendered +page body will begin with the level two header "Introduction." + + # My Title + + ## Introduction + + Introductory text with a list: + + * Item 1 + * Item 2 + + ## Second header + + Second section + +This plugin can be used with page templates that use

tags for the page +title to produce a consistent header hierarchy in rendered pages while keeping +the Markdown source clean and free of meta directives. + +=head1 AUTHOR + +Jason Blevins , + +=head1 SEE ALSO + +ikiwiki Homepage: +http://ikiwiki.info/ + +ikiwiki Plugin Documentation: +http://ikiwiki.info/plugins/write/ + +=head1 LICENSE + +Copyright (C) 2008 Jason Blevins + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -- cgit v1.2.3