diff options
author | Jonas Smedegaard <dr@jones.dk> | 2014-12-25 18:19:55 +0100 |
---|---|---|
committer | Jonas Smedegaard <dr@jones.dk> | 2014-12-25 18:19:55 +0100 |
commit | 5cbb6b9dca11fe98b2feefcd31684ee2c2f1455a (patch) | |
tree | eef9ca15ab02bfc1873d3875350faa671188fea9 /pandoc-filter-bib | |
parent | 7912a20b53c06e5eb8ef9682d06bd57429a87fca (diff) |
Rename and shorten filters.
Diffstat (limited to 'pandoc-filter-bib')
-rwxr-xr-x | pandoc-filter-bib | 68 |
1 files changed, 0 insertions, 68 deletions
diff --git a/pandoc-filter-bib b/pandoc-filter-bib deleted file mode 100755 index 27ba8d4..0000000 --- a/pandoc-filter-bib +++ /dev/null @@ -1,68 +0,0 @@ -#!/usr/bin/perl - -use warnings; -use strict; - -use v5.10.1; # use switch keyword "when" (but avoid too complex "given") -no if $] >= 5.018, warnings => "experimental::smartmatch"; - -use Pandoc::Filter; -use Pandoc::Elements; - -use Path::Tiny; -use List::Util qw(pairmap); - -my $bibfilename = $ENV{'PANDOC_CITEPROC_FILE'} || 'bibliography.bib'; -my $bibfile = path($bibfilename); - -my (@a, $i); - -pandoc_filter sub { - my $self = shift; - return unless ($self->name eq 'RawInline' and $self->format eq 'mediawiki'); - - for ($self->content) { - when (/^{{cite\s+(\w+)\s*\|([^}]*)}}$/) { - my $id = 'ref'.++$i; - my @data = pairmap { $b =~ s/"/\\"/g; "$a=\"$b\"" } - map { /^\s*(\w+)\s*=\s*"?(.*?)"?\s*$/ } - split( /\|/, $2 ); - push @a, join ",\n", - '@'.$1.'{'.$id, - @data, - '}'; - return Cite( - [{ - 'citationId' => $id, - 'citationPrefix' => [], - 'citationSuffix' => [], - 'citationMode' => { - t => 'NormalCitation', - c => [], - }, - 'citationNoteNum' => 0, - 'citationHash' => 0, - }], - [ Str $id ], - ); - } - when (/^{{citation needed}}$/) { - say STDERR "WARNING: Mediawiki citation needed."; - return [ - Str "citation", - Space, - Str "needed", - ]; - } - default { - say STDERR "WARNING: Mediawiki unknown data skipped: " - . '"' . $_[0]->content . '"'; - return Str ""; - } - } -}; - -END { - $bibfile->spew_utf8( join "\n\n", @a ) - if (@a); -} |