|
|
- #!/usr/bin/env perl
-
- use strict;
- use warnings;
- use 5.10.0;
-
- use Cwd;
- use File::Basename;
- use Text::Markdown::Discount;
- use IPC::System::Simple qw(capturex);
-
- # Enable html5 block-level tags:
- Text::Markdown::Discount::with_html5_tags();
- my $flags = Text::Markdown::Discount::MKD_EXTRA_FOOTNOTE();
- my $markdown = Text::Markdown::Discount->new;
-
- my $cwd = Cwd::getcwd();
-
- my $full_source = '';
- while (my $source = get_input()) {
-
- # A simple preprocessor:
- my ($basename, $dir) = fileparse($ARGV); # get path of target file
- chdir $dir;
- $source =~ s{```php(.*?)```}{handle_block($1);}egs;
- chdir $cwd;
-
- $full_source .= $source;
-
- }
-
- print $full_source;
- # actually spit out the contents of the slide
-
- sub get_input {
- local $/ = undef;
- my $source = <>;
- return $source;
- }
-
- sub handle_block {
- my ($block) = @_;
-
- my $cmd;
-
- file_put_contents('/tmp/phpslideoutput.php', $block);
- my $result = `php /tmp/phpslideoutput.php`;
- chomp($result);
-
- if ($result) {
- return "```php${block}```\n\nOutput:\n\n```${result}\n```";
- } else {
- return "```php${block}```";
- }
-
- }
-
- sub file_put_contents {
- my ($file, $contents) = @_;
- open(my $fh, '>', $file)
- or die "Unable to open $file for writing: $!";
- print $fh $contents;
- close $fh;
- }
|