summaryrefslogtreecommitdiffstats
path: root/.ikiwiki/IkiWiki
diff options
context:
space:
mode:
Diffstat (limited to '.ikiwiki/IkiWiki')
-rwxr-xr-x.ikiwiki/IkiWiki/Plugin/pandoc.pm177
1 files changed, 130 insertions, 47 deletions
diff --git a/.ikiwiki/IkiWiki/Plugin/pandoc.pm b/.ikiwiki/IkiWiki/Plugin/pandoc.pm
index a7def67..249e9d0 100755
--- a/.ikiwiki/IkiWiki/Plugin/pandoc.pm
+++ b/.ikiwiki/IkiWiki/Plugin/pandoc.pm
@@ -11,6 +11,8 @@ use File::Path qw/make_path/;
use JSON;
use Data::Dumper;
+$Data::Dumper::Indent = 3;
+
my $fh = undef;
my $dh = undef;
my $fnm = undef;
@@ -19,18 +21,6 @@ my $next = 0;
my $base = '/tmp/pandoc';
mkdir($base);
-opendir($dh, $base) || die "Can't open $base: $!";
-foreach $f (grep(/[0-9][0-9]*$/, readdir($dh))) {
- $f =~ /^(.*)-([0-9][0-9]*)$/;
- $next = $2 + 1 if ($2 >= $next);
-}
-closedir $dh;
-$fnm = sprintf "%s/%s-%.3d", $base, "verify", $next;
-open($fh, '>', $fnm) or die "Could not";
-print $fh "Hej du glade på fil\n";
-print $fh "Detta är filen i '/home/gustav/git/fripost/wiki/.ikiwiki/IkiWiki/Plugin'\n";
-close $fh;
-print "Closed $fnm\n";
# activate with 'generate_$format' in meta; turn on all with 'generate_all_formats'.
my %extra_formats = (
@@ -43,19 +33,47 @@ my %extra_formats = (
latex => { ext=>'tex', label=>'LaTeX', format=>'latex', extra=>['--standalone'], order=>7 },
);
-sub import {
+sub debug_get_filename_prefix {
+
+ my $place = shift;
+ my $page = shift;
+ my $fnm_pfx = undef;
opendir($dh, $base) || die "Can't open $base: $!";
- foreach $f (grep(/[0-9][0-9]*$/, readdir($dh))) {
- $f =~ /^(.*)-([0-9][0-9]*)$/;
- $next = $2 + 1 if ($2 >= $next);
+ foreach $f (grep(/^[0-9][0-9]*/, readdir($dh))) {
+ $f =~ /^([0-9][0-9]*)\.(.*)$/;
+ $next = $1 + 1 if ($1 >= $next);
+ }
+ close($dh);
+ if ($page) {
+ $fnm_pfx = sprintf "%s/%.3d.%s.%s", $base, $next, $place,
+ $page =~ s/\//-/rg;
+ } else {
+ $fnm_pfx = sprintf "%s/%.3d.%s", $base, $next, $place;
}
- closedir $dh;
- $fnm = sprintf "%s/%s-%.3d", $base, "import", $next;
+ return $fnm_pfx;
+}
+
+# DEBUG Print
+print "D: First file read.\n";
+$fnm = debug_get_filename_prefix ("verify");
+open($fh, '>', $fnm) or die "Could not";
+print $fh "Hej du glade på fil\n";
+print $fh "Detta är filen i '/home/gustav/git/fripost/wiki/.ikiwiki/IkiWiki/Plugin'\n";
+close $fh;
+# END
+
+
+sub import {
+
+ # DEBUG Print
+ print "D: Run import.\n";
+ my $fnm_pfx = debug_get_filename_prefix ("import","");
+ my $fnm = $fnm_pfx;
open($fh, '>', $fnm) or die "Could not open $fnm .";
print $fh "Import.\n";
close $fh;
- print "Closed $fnm\n";
+ # END
my $markdown_ext = $config{pandoc_markdown_ext} || "mdwn";
@@ -105,6 +123,11 @@ sub import {
sub getsetup () {
+
+ # DEBUG
+ print "D: Run getsetup.\n";
+ # END
+
return
plugin => {
safe => 1,
@@ -381,12 +404,6 @@ sub getsetup () {
sub htmlize ($@) {
- opendir($dh, $base) || die "Can't open $base: $!";
- foreach $f (grep(/[0-9][0-9]*$/, readdir($dh))) {
- $f =~ /^(.*)-([0-9][0-9]*)$/;
- $next = $2 + 1 if ($2 >= $next);
- }
-
my $format = shift;
my %params = @_;
my $page = $params{page};
@@ -395,11 +412,26 @@ sub htmlize ($@) {
local(*PANDOC_IN, *JSON_IN, *JSON_OUT, *PANDOC_OUT);
my @args = ();
- $fnm = sprintf "%s/%s-%.3d", $base, "htmlize", $next;
+ # DEBUG Print params
+ print "D: Run htmlize for ", $page, "\n";
+ my $fnm_pfx = debug_get_filename_prefix ("htmlize", $page);
+ my $m = 0;
+ $fnm = sprintf "%s.%.1d.%s", $fnm_pfx, $m++, "params";
open($fh, '>', $fnm) or die "Could not";
- print $fh Dumper($page), "\n";
+ $Data::Dumper::Indent = 2;
+ print $fh Dumper(%params), "\n";
close $fh;
- print "Closed $fnm\n";
+ # END
+
+ # DEBUG Print half way pagestate pagestate
+ $fnm = sprintf "%s.%.1d.%s", $fnm_pfx, $m++, "early-pagestate";
+ open($fh, '>>', $fnm);
+ my %pagestate_dumper = (
+ $page => $pagestate{$page},
+ );
+ print $fh Data::Dumper->Dump([\%pagestate_dumper], [qw("pagestate")]), "\n";
+ close $fh;
+ # END
# The default assumes pandoc is in PATH
my $command = $config{pandoc_command} || "pandoc";
@@ -479,10 +511,6 @@ sub htmlize ($@) {
$content =~ s{<div class="inline" id="(\d+)"></div>}
{::INLINE::PLACEHOLDER::$1::}g;
- $fnm = sprintf "%s/%s-%.3d", $base, "content-1", $next;
- open($fh, '>>', $fnm);
- print $fh Dumper($content), "\n";
-
print PANDOC_OUT $content;
close PANDOC_OUT;
@@ -504,11 +532,19 @@ sub htmlize ($@) {
warn "WARNING: Unexpected format for meta block. Incompatible version of Pandoc?\n";
}
+ # DEBUG Half way content which is plenty data
+ print "D: Pandoc command: ", " ", $command, " ", '-f', " ",
+ $markdown_fmt, " ", '-t', " ", 'json', " ", @args,
+ "\n";
+
+ $fnm = sprintf "%s.%.1d.%s", $fnm_pfx, $m++, "early-content";
+ open($fh, '>>', $fnm);
+ print $fh Data::Dumper->Dump([$content], [qw(content)]), "\n";
print $fh Data::Dumper->Dump([$json_content], [qw(json_content)]), "\n";
print $fh Data::Dumper->Dump([$decoded_json], [qw(decoded_json)]), "\n";
print $fh Data::Dumper->Dump([$meta], [qw(meta)]), "\n";
close $fh;
- print "Closed $fnm\n";
+ # END
# Get some selected meta attributes, more specifically:
# (title date bibliography csl subtitle abstract summary description
@@ -524,17 +560,9 @@ sub htmlize ($@) {
$scalar_meta{$_.'_template'} = undef for @format_keys;
my %bool_meta = map { ("generate_$_"=>0) } keys %extra_formats;
- my %list_meta = map { ($_=>[]) } qw/author references/;
+ my %list_meta = map { ($_=>[]) } qw/author references tags/;
$list_meta{$_.'_extra_options'} = [] for @format_keys;
- $fnm = sprintf "%s/%s-%.3d", $base, "meta", $next;
- open($fh, '>', $fnm) or die "Could not";
- print $fh Data::Dumper->Dump([\%scalar_meta], [qw(scalar_meta)]), "\n";
- print $fh Data::Dumper->Dump([\%bool_meta], [qw(bool_meta)]), "\n";
- print $fh Data::Dumper->Dump([\%list_meta], [qw(list_meta)]), "\n";
- close $fh;
- print "Closed $fnm\n";
-
my $have_bibl = 0;
foreach my $k (keys %scalar_meta) {
next unless $meta->{$k};
@@ -660,26 +688,45 @@ sub htmlize ($@) {
waitpid $to_html_pid, 0;
+ print "D: Pandoc command: ", " ", $command, " ", '-f', " ",
+ 'json', " ", '-t', $htmlformat, " ", @html_args, "\n";
+
$content = Encode::decode_utf8(join('', @html));
# Reinstate placeholders for inline plugin:
$content =~ s{::INLINE::PLACEHOLDER::(\d+)::}
{<div class="inline" id="$1"></div>}g;
- $fnm = sprintf "%s/%s-%.3d", $base, "meta", $next;
+ # DEBUG Print meta
+ $fnm = sprintf "%s.%.1d.%s", $fnm_pfx, $m++, "meta";
open($fh, '>>', $fnm) or die "Could not";
print $fh "\n";
print $fh Data::Dumper->Dump([\%scalar_meta], [qw(scalar_meta)]), "\n";
print $fh Data::Dumper->Dump([\%bool_meta], [qw(bool_meta)]), "\n";
print $fh Data::Dumper->Dump([\%list_meta], [qw(list_meta)]), "\n";
close $fh;
- print "Closed $fnm\n";
+ # END
+
+ # DEBUG Print pagestate again
+ $fnm = sprintf "%s.%.1d.%s", $fnm_pfx, $m++, "return-pagestate";
+ open($fh, '>>', $fnm);
+ my %pagestate_dumper = (
+ $page => $pagestate{$page},
+ );
+ print $fh Data::Dumper->Dump([\%pagestate_dumper], [qw("pagestate")]), "\n";
+ close $fh;
+ # END
- $fnm = sprintf "%s/%s-%.3d", $base, "content-2", $next;
+ # DEBUG Print return content
+ $fnm = sprintf "%s.%.1d.%s", $fnm_pfx, $m++, "return-content";
open($fh, '>>', $fnm);
print $fh Dumper($content), "\n";
close $fh;
- print "Closed $fnm\n";
+ # END
+
+ # DEBUG
+ print "D: Return htmlize.\n";
+ # END
return $content;
}
@@ -689,17 +736,37 @@ sub pagetemplate (@) {
my %params = @_;
my $page = $params{page};
+
+ # DEBUG
+ print "D: Run pagetemplate for $page\n";
+ # END
+
my $template = $params{template};
foreach my $k (keys %{$pagestate{$page}{meta}}) {
next unless $k =~ /^pandoc_/;
$template->param($k => $pagestate{$page}{meta}{$k});
}
+
+ # DEBUG Print pagetemplate data
+ my $fnm_pfx = debug_get_filename_prefix ("pagetemplate", $page);
+ my $m = 0;
+ my $fnm = sprintf "%s.%.1d.%s", $fnm_pfx, $m++, "data";
+ open($fh, '>', $fnm) or die "Could not";
+ print $fh Data::Dumper->Dump([%params], [qw(params)]), "\n";
+ print $fh Data::Dumper->Dump([$template], [qw(teplate)]), "\n";
+ close $fh;
+ # END
+
+ return $template;
}
sub pageactions {
-
+
my %args = @_;
my $page = $args{page};
+
+ print "D: Run pageactions for ", $page, "\n";
+
my @links = ();
return unless $pagestate{$page}{pandoc_extra_formats};
my @exts = sort {
@@ -722,6 +789,11 @@ sub pageactions {
sub export_file {
my ($page, $ext, $json_content, $command, @args) = @_;
+
+ # DEBUG
+ print "D: Run export_file for $page.\n";
+ # END
+
my ($export_path, $export_url) = _export_file_path_and_url($page, $ext);
my $subdir = $1 if $export_path =~ /(.*)\//;
my @extra_args = @{ $extra_formats{$ext}->{extra} };
@@ -773,6 +845,11 @@ sub export_file {
@args, @extra_args) or die "Could not open pipe for $ext: $!";
print EXPORT $json_content;
close EXPORT or die "Could not close pipe for $ext: $!";
+
+ print "D: Pandoc command: ", " ", $command, " ", '-f' =>
+ 'json', " ", '-t' => $to_format, " ", '-o' =>
+ $tmp_export_path, " ", @args, " ", @extra_args;
+
if ($indirect_pdf && $tmp_export_path ne $export_path) {
my @latexmk_args = qw(-quiet -silent);
if (grep { /xelatex/ } @extra_args) {
@@ -813,6 +890,12 @@ sub remove_exported_file {
if ($@) {
warn "WARNING: remove_exported_file; page=$page, ext=$ext: $@\n";
}
+
+ # DEBUG
+ print "D: remove_exported_file: ",
+ "file removed for $page and $ext: $export_path.\n";
+ # END
+
}
}