Spork::Slides::TKSlide


Spork-TKSlide documentation Contained in the Spork-TKSlide distribution.

Index


Code Index:

* Spork Stands for: +** Slide Presentation (Only Really Kwiki) +* Spork is a CPAN Module +* Spork is Based on Spoon +* Spork is an HTML Slideshow Generator +** All slides are in one simple file +** Run |spork -make| to make the slides ---- {image: http://gugod.org/imgs/kirby/kirby.jpg} == What is TKSlide? * TKSlide stands for: +** Tkirby's slides +* Pure JavaScript navigation +* XML / HTML backend +* Cross Browser +* http://www.csie.ntu.edu.tw/~b88039/slide/ ---- == Spork::TKSlide * Use Spork/Kwiki syntax +** Thats easy +* Generate the tkslide effect +** That's cool. +* So, That's *POWERFUL* {image: http://gugod.org/imgs/powerful/upside-down.jpg} +* Check the source code of this slide: ** http://gugod.org/Slides/Spork-TKSlide/Spork.slides ---- = ToDo {image: http://gugod.org/imgs/spork/SporkCollection.jpg} +* To Support TKSlide in a better way +** TKSlides has very fancy hide() which is currently useless. ---- == That's All

{image: http://gugod.org/imgs/thank-you/thank-you.gif}

* The END


Spork-TKSlide documentation Contained in the Spork-TKSlide distribution.

package Spork::Slides::TKSlide;
use strict;
use Spork::Slides '-Base';

our $VERSION = '0.03';

const class_id => 'slides';

sub make_slides {
    $self->use_class('formatter');
    $self->use_class('template');

    my @slides = $self->split_slides($self->config->slides_file);

    my $allpage_html;
    for (my $i = 0; $i < @slides; $i++) {
        my $slide = $slides[$i];
        $self->config->add_config($slide->{config});
        my $content = $slides[$i]{slide_content};
        $self->slide_heading('');
        $self->image_url('');
        my $parsed = $self->formatter->text_to_parsed($content);
        my $html = $parsed->to_html;
        $slide->{slide_heading} = $self->slide_heading;
        $slide->{image_html} = $self->get_image_html;
        my $output = $self->template->process('slide.html',
            %$slide,
            slide_content => $html,
            spork_version => "Spork v$Spork::VERSION",
        );
	$allpage_html .= $output;
    }
    my $output = $self->template
	->process('start.html',
		  style_file => $self->config->style_file,
		  allpage_content => $allpage_html,
		  spork_version => "Spork v$Spork::VERSION",
		 );
    my $file_name = $self->config->slides_directory . '/start.html';
    $output > io($file_name)->assert;
    $self->make_style;
    $self->make_javascript;
}

sub make_style {
    for ('slide-zen.css', 'slide.css', 'slide-tkirby.css') {
        $self->make_file($_);
    }
}

sub make_javascript {
    $self->make_file('controls.js');
}

sub make_file {
    my ($template,$file) = @_;
    $file ||= $template;
    my $output = $self->template
	->process($template,
		  spork_version => "Spork v$Spork::VERSION",
		 );
    my $file_name = $self->config->slides_directory . "/$file";
    $output > io($file_name)->assert;
}

sub split_slides {
    my $slides_file = shift;
    my @slide_info;
    my @slides = grep $_, split /^-{4,}\s*\n/m, io($slides_file)->slurp;
    my $slide_num = 1;
    my $config = {};
    for my $slide (@slides) {
        if ($slide =~ /\A(^(---|\w+\s*:.*|-\s+.*|#.*)\n)+\z/m) {
            $config = $self->hub->config->parse_yaml($slide);
            next;
        }
	my @sub_slides = $self->sub_slides($slide);
	while(@sub_slides) {
	    my $sub_slide = shift @sub_slides;
	    my $slide_info =
		{
		    slide_num => $slide_num,
		    slide_content => $sub_slide,
		    slide_name => "page$slide_num",
		    config => $config,
		};
	    $config = {};
	    push @slide_info, $slide_info;
	    $slide_num++;
	}
    }
    return @slide_info;
}


1;
__DATA__
__Spork.slides__
----
presentation_topic: Spork:TKSlide
presentation_title: Spork:TKSlide Generate TKSlide with Spork.
presentation_place: NO
presentation_date: NO
----
{image: http://gugod.org/imgs/spork/SporkCollection.jpg}