#!/usr/bin/perl package IkiWiki::Plugin::googlecalendar; use warnings; use strict; use IkiWiki; use IPC::Open2; sub import { #{{{ IkiWiki::hook(type => "preprocess", id => "googlecalendar", call => \&preprocess); IkiWiki::hook(type => "format", id => "googlecalendar", call => \&format); } # }}} sub preprocess (@) { #{{{ my %params=@_; # Parse the html, looking for the url to embed for the calendar. # Avoid XSS attacks.. my ($url)=$params{html}=~m#iframe\s+src="http://www\.google\.com/calendar/embed\?([^"<>]+)"#; if (! defined $url || ! length $url) { return "[[googlecalendar failed to find url in html]]"; } my ($height)=$params{html}=~m#height="(\d+)"#; my ($width)=$params{html}=~m#width="(\d+)"#; return "
"; } # }}} sub format (@) { #{{{ my %params=@_; $params{content}=~s/