MiniPAN
view release on metacpan or search on metacpan
doc/slides/mkpres.pl view on Meta::CPAN
sub image_path {
my($path) = @_;
die "File not found: html/images/$path" unless -r "html/images/$path";
return $path;
}
sub generate_presentation_pages {
my($pres) = @_;
generate_title_page($pres);
generate_contents_page($pres);
generate_slide_pages($pres);
}
sub generate_title_page {
my($pres) = @_;
my $data = {
%{ $pres->{metadata} },
next => slide_filename(1),
previous => '',
};
save_file($template{index}, 'index.html', $data);
}
sub generate_contents_page {
my($pres) = @_;
my $data = {
title => 'Contents',
metadata => $pres->{metadata},
toc => $pres->{toc},
next => slide_filename(1),
previous => 'index.html',
};
save_file($template{toc}, 'toc.html', $data);
}
sub generate_slide_pages {
my($pres) = @_;
unlink grep m{/slide\d+\.html}, glob "html/*.html";
foreach my $slide ( @{ $pres->{slides} } ) {
my $data = {
%$slide,
metadata => $pres->{metadata},
};
save_file($template{slide}, $slide->{filename}, $data);
}
}
sub outdent {
local($_) = @_;
s/\s+$//s;
s/^\s*?\n//s;
my($prefix, @prefs) = m/^(\s*)/mg;
foreach (@prefs) {
$prefix = $_ if length($_) < length($prefix);
}
s/^$prefix//mg;
return $_;
}
sub syntax_highlight {
my($code, $language) = @_;
if(!defined $have_vim_highlight) {
eval 'require Text::VimColor';
if($@) {
warn "Warning: Text::VimColor is required for syntax highlighting\n";
$have_vim_highlight = 0;
}
else {
$have_vim_highlight = 1;
}
}
return $code unless $have_vim_highlight;
return Text::VimColor->new(
string => $code,
filetype => $language,
)->html;
}
sub save_file {
my($tmpl, $file, $data) = @_;
if($opt{devmode}) {
my $time = time();
$data->{next} .= '?' . $time;
$data->{previous} .= '?' . $time;
}
open my $out, '>:utf8', "./html/$file" or die "open(./html/$file): $!";
print $out $tmpl->apply(%$data);
}
package Template::MasonLite;
use strict;
use warnings;
use Carp;
our $VERSION = '0.9';
my(
$nl, $init_sect, $perl_sect, $perl_line, $comp_def, $comp_call,
$expression, $literal
);
BEGIN {
$nl = qr{(?:[ \r]*\n)};
$init_sect = qr{<%init>(.*?)</%init>$nl?}s;
$perl_sect = qr{<%perl>(.*?)</%perl>$nl?}s;
( run in 0.949 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )