summaryrefslogtreecommitdiff
path: root/pandoc-cs1
blob: 27ba8d48e7ac1ed4bf694ca7c09b9a955bb45917 (plain)
  1. #!/usr/bin/perl
  2. use warnings;
  3. use strict;
  4. use v5.10.1; # use switch keyword "when" (but avoid too complex "given")
  5. no if $] >= 5.018, warnings => "experimental::smartmatch";
  6. use Pandoc::Filter;
  7. use Pandoc::Elements;
  8. use Path::Tiny;
  9. use List::Util qw(pairmap);
  10. my $bibfilename = $ENV{'PANDOC_CITEPROC_FILE'} || 'bibliography.bib';
  11. my $bibfile = path($bibfilename);
  12. my (@a, $i);
  13. pandoc_filter sub {
  14. my $self = shift;
  15. return unless ($self->name eq 'RawInline' and $self->format eq 'mediawiki');
  16. for ($self->content) {
  17. when (/^{{cite\s+(\w+)\s*\|([^}]*)}}$/) {
  18. my $id = 'ref'.++$i;
  19. my @data = pairmap { $b =~ s/"/\\"/g; "$a=\"$b\"" }
  20. map { /^\s*(\w+)\s*=\s*"?(.*?)"?\s*$/ }
  21. split( /\|/, $2 );
  22. push @a, join ",\n",
  23. '@'.$1.'{'.$id,
  24. @data,
  25. '}';
  26. return Cite(
  27. [{
  28. 'citationId' => $id,
  29. 'citationPrefix' => [],
  30. 'citationSuffix' => [],
  31. 'citationMode' => {
  32. t => 'NormalCitation',
  33. c => [],
  34. },
  35. 'citationNoteNum' => 0,
  36. 'citationHash' => 0,
  37. }],
  38. [ Str $id ],
  39. );
  40. }
  41. when (/^{{citation needed}}$/) {
  42. say STDERR "WARNING: Mediawiki citation needed.";
  43. return [
  44. Str "citation",
  45. Space,
  46. Str "needed",
  47. ];
  48. }
  49. default {
  50. say STDERR "WARNING: Mediawiki unknown data skipped: "
  51. . '"' . $_[0]->content . '"';
  52. return Str "";
  53. }
  54. }
  55. };
  56. END {
  57. $bibfile->spew_utf8( join "\n\n", @a )
  58. if (@a);
  59. }
le='width: -nan%;'/> -rw-r--r--tags/aa/83/20170810142004.F34661CA4A@jawa.homebase.dk/unread0
-rw-r--r--tags/aa/83/20180731060207.96AA21CCD5E@lxp5.free-owl.de/sys0
-rw-r--r--tags/aa/83/20180731060207.96AA21CCD5E@lxp5.free-owl.de/unread0
-rw-r--r--tags/aa/83/E1o7YPP-0001Nl-GS@usper.debian.org/debian0
-rw-r--r--tags/aa/83/E1o7YPP-0001Nl-GS@usper.debian.org/inbox0
-rw-r--r--tags/aa/83/E1o7YPP-0001Nl-GS@usper.debian.org/killed0
-rw-r--r--tags/aa/83/E1o7YPP-0001Nl-GS@usper.debian.org/unread0
-rw-r--r--tags/aa/83/a5090fb7d6181b75012ea934b7c67ed4@localhost.localdomain/inbox0
-rw-r--r--tags/aa/83/a5090fb7d6181b75012ea934b7c67ed4@localhost.localdomain/killed0
-rw-r--r--tags/aa/83/a5090fb7d6181b75012ea934b7c67ed4@localhost.localdomain/unread0
-rw-r--r--tags/aa/83/c0ad901f0811091306j7ddfc91cx5bf23cc61e12e74f@mail.gmail.com/sugar0
-rw-r--r--tags/aa/83/c0ad901f0811091306j7ddfc91cx5bf23cc61e12e74f@mail.gmail.com/unread0
-rw-r--r--tags/aa/83/handler.s.U997723.163515708413653.transcript@bugs.debian.org/debian0
-rw-r--r--tags/aa/83/handler.s.U997723.163515708413653.transcript@bugs.debian.org/inbox0
-rw-r--r--tags/aa/83/handler.s.U997723.163515708413653.transcript@bugs.debian.org/killed0
-rw-r--r--tags/aa/83/handler.s.U997723.163515708413653.transcript@bugs.debian.org/unread0
-rw-r--r--tags/aa/83/mailman.91.1580529601.73630.mailman@goldelico.com/inbox0
-rw-r--r--tags/aa/83/mailman.91.1580529601.73630.mailman@goldelico.com/killed0
-rw-r--r--tags/aa/83/mailman.91.1580529601.73630.mailman@goldelico.com/unread0
-rw-r--r--tags/aa/83/notmuch-sha1-739090503500ca5a6e19610820f6237477df2eb7/unread0
28 files changed, 0 insertions, 0 deletions