Discover Your Perfect Stay

org.pm


Description:
This allows people to write Ikiwiki content using Emacs and org-mode
(requires Emacs 23), and uses the html export facility of org-mode to
create the output. Some bits based on otl.pm.


use warnings;
use strict;
use Carp;
use IkiWiki 2.00;
use File::Temp qw/ tempfile tempdir /;
# ------------------------------------------------------------
sub import {  hook(type => "htmlize", id => "org", call => \&htmlize);
} #

sub htmlize (@) {  my %params  = @_;  my $dir     = File::Temp->newdir();


my $ret = open(INPUT, ">$dir/contents.org");  unless (defined $ret)

{    debug("failed to open $dir/contents.org: $@");    return $params{content};  }    print INPUT $params{content};  close INPUT;  my $args = '/usr/local/bin/emacs --batch -l org ' .              "--eval '(setq org-export-headline-levels 3 org-export-with-toc nil org-export-author-info nil )' " .              "--visit=$dir/contents.org " .              '--funcall org-export-as-html-batch >/dev/null 2>&1';  if (system($args)) {    debug("failed to convert $params{page}: $@");    return $params{content};  }  $ret = open(OUTPUT, "$dir/contents.html");  unless (defined $ret) {    debug("failed find html output for $params{page}: $@");    return $params{content};  }  local $/ = undef;  $ret = ;  close OUTPUT;  $ret=~s/(.*

){1}?//s;  $ret=~s/^(.*<\/h1>){1}?//s;  $ret=~s/
.*//s;  $ret=~s/(<\/div>\s*$)//s;    return $ret;
}