/doc/examples/softwaresite/

2c99c3efaf69e83a2a7035a8d52a6cfa679'>commitdiff
path: root/IkiWiki/Plugin/editdiff.pm
blob: 9872e9686c2a3255d638968002a5d6339c1d20e2 (plain)
  1. #!/usr/bin/perl
  2. # This plugin adds a "Diff" button to the page edit form.
  3. package IkiWiki::Plugin::editdiff;
  4. use warnings;
  5. use strict;
  6. use IkiWiki 2.00;
  7. use HTML::Entities;
  8. use IPC::Open2;
  9. sub import { #{{{
  10. hook(type => "formbuilder_setup", id => "editdiff",
  11. call => \&formbuilder_setup);
  12. } #}}}
  13. sub diff ($$) { #{{{
  14. my $orig=shift;
  15. my $content=shift;
  16. my $sigpipe=0;
  17. $SIG{PIPE} = sub { $sigpipe=1; };
  18. my $pid = open2(*DIFFOUT, *DIFFIN, 'diff', '-u', $orig, '-');
  19. binmode($_, ':utf8') foreach (*DIFFIN, *DIFFOUT);
  20. print DIFFIN $content;
  21. close DIFFIN;