App::MojoSlides - DEPRECATED Write your presentations in Perl and Mojolicious!
$ mojo_slides mypresentation.pl daemon
This application lets you write presentations using the simple Perlish syntax that Mojo::Template provides for Mojolicious. It follows a similar model to LaTeX Beamer in structure and usage, though it is not nearly as full featured.
This software is in alpha form at best. It may eat baby kittens at any moment.
Indeed it never really got better than this, that's why:
This module is now officially deprecated. I will give it no further effort. If someone would like to adopt it, please contact me.
Each presentation needs a configuration file. This file is loaded by the mojo_slides
application via Mojolicious::Plugin::Config, and as such may use any functionality it provides. Additionally, when the file is loaded one helper presentation_file
will have been added which can be used to reference the file and its path (see more below).
The file must evaluate to a hash reference, as all Mojolicious config files must. The application will look for several keys which establish the presentation.
- slides
-
A hash reference used to create the App::MojoSlides::Slides object which organizes the slide order, etc. See that module for documentation on how to use it. Usually this value will be a number, representing the ordinal number of the last slide in the case of numbered templates, or else an array reference of the names of the templates in display order.
- ppi
-
If true, it will load Mojolicious::Plugin::PPI to allow code highlighting using that plugin. The API for this key is still influx, but that much is probably not going to change.
- templates
-
Use this key to specify which directories contain your slides. Your slides are actually Mojolicious Templates (see Mojolicious::Guides::Rendering and Mojo::Template for more on that). This key takes a string or arrayref of strings which are prepended to the app's template directories.
- static
-
Like
templates
this, key takes a string or arrayref of strings, which are directories prepended to the app's static files directories. Use this to allow the inclusion of other style files or javascript that you might need. Of course you will still have to include them in some template for them to be included. - bootstrap_theme
-
If true, the bootstrap-theme.min.css file will be included in the default layout.
- more_tag_helpers
-
If true (by default), wrap lots more html tags into tag helpers from App::MojoSlides::MoreTagHelpers.
- extra_css
- extra_js
-
If desired, these values may contain a string or arrayreference of strings of the full path to any publically available css or javascript file respectively which should be included in the overall template. Note that the string should start with a leading
/
. - header_template
-
The name of the template to be included as the header or footer. Defaults to
ms_header
andms_footer
respectively. Set toundef
to not include any template. - finally
-
A code reference that is called as a method against the application as late as possible in the setup method. This lets you do any final actions that need to be done after the configuration has been loaded.
Emulating Mojolicious::Lite, you may also include slides (templates) in the __DATA__
section of your configuration file!
As I have said, the slides are just Mojolicious Templates, and such they have certain structure. If you don't understand that, go read about it in the Mojolicious::Guides.
The basic layout uses the standard title
helper to set both the webpage title and a centered h1
at the top of the page. Other helpers are provided, such as:
- next_slide
- prev_slide
- first_slide
- last_slide
-
Each returns the slide number for the slide in question.
prev
andnext
are smart enough to not leave the expected bounds offirst
andlast
. - row
-
%= row begin row contents % end
Creates a div with the Bootstrap
row
class. Takes a string or template block like Mojolicious'tag
helper does, though you probably mean block. - column
-
%= column 6 => begin column contents % end %= column [3, 'offset-3'] => begin column contents % end
Creates a div of a given width (a number out of 12, see Bootstrap). Takes that width and a string or template block, though again, you probably mean block. To give more than one class, pass an array reference. Each class is prepended by
col-md-
. - overlay
-
%= overlay '2-4' => begin Stuff to show only on increments 2 through 4 % end
Creates a div with the attribute
ms_overlay
which the css/js bits of the system use for incrementing slides. The syntax of the specification follows LaTeX Beamer, which is like2-
to show an item from increment 2 onwards and so on.N.B. adding
ms_overlay="2-4"
to nearly any HTML tag will work as expect too! - vspace
-
%= vspace '50px' <div style="min-height: 50px;"></div>
Adds a section of vertical space of a given height.
Plus the tag helpers from App::MojoSlides::MoreTagHelpers if the configuration option is true.
- Mojolicious
- Bootstrap
- jQuery
- PPI
-
- if desired for Perl code highlighting
- Mousetrap
-
- simple javascript keybinding library
This module is dedicated to the organizers and attendees of YAPC::Brazil 2013. They were kind enough to invite me as their keynote speaker and in turn I wrote this application to present that talk, so I owe them a debt of thanks on both accounts.
http://github.com/jberger/App-MojoSlides
Joel Berger, <joel.a.berger@gmail.com>
Copyright (C) 2013 by Joel Berger
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.