muse-ikiwiki: Move publishing function and style here.
[muse-el.git] / examples / ikiwiki / muse
blobf0411af7a1a80ee1600781ea58d783d787ea756d
1 #!/usr/bin/perl
2 # Ikiwiki plugin for Emacs Muse.
3 # Author: Michael Olson
4 # License: GPLv2 or later
5 package IkiWiki::Plugin::muse;
7 use warnings;
8 use strict;
9 use IkiWiki 2.00;
10 use Encode;
11 use File::Temp;
13 sub import {
14 hook(type => "htmlize", id => "muse", call => \&htmlize);
17 sub htmlize (@) {
18 my %params=@_;
19 my $content = decode_utf8(encode_utf8($params{content}));
20 my $qname = $params{page};
21 $qname =~ s/"/\\"/g;
23 my ($fh, $filename) = File::Temp::tempfile();
24 print $fh $content;
25 close $fh;
26 my $qfile = $filename;
27 $qfile =~ s/"/\\"/g;
28 eval {
29 system qw( emacs -q --no-site-file -batch
30 -l muse-init-simple.el --eval ),
31 qq{(muse-ikiwiki-publish-file "$qfile" "$qname")};
33 open my $ifh, '<', $filename;
34 local $/;
35 $content = <$ifh>;
36 close $ifh;
39 unlink $filename;
40 return $content;
43 sub test {
44 print htmlize(content => "<example>\nHello\n</example>\n\nParagraph.\n",
45 page => "some_page.muse");