Skip to content

suhlig/revealing

Repository files navigation

revealing - A Workflow for reveal.js Presentations

Build Status

This gem provides a set of Rake tasks to create reveal.js presentations from markdown files. It uses pandoc to create the final presentation. The output is a self-contained set of static HTML files that can be viewed locally uploaded to a web server.

Unique features:

  1. revealing assumes that your presentation is built using Rake. Additional, custom steps (like deployment) can easily be added to the Rakefile that was generated for you.
  2. Efficiency - by carefully modeling the dependencies between source files (your markdown), intermediate build products (processed include statements), and the final output (HTML and resized images), build steps are only run when necessary (e.g. when a corresponding source file was changed).

Examples

Development

  • Create a test project using revealing init
  • Test by referring to the changed tasks:
    rake -f ~/workspace/revealing/lib/revealing/tasks.rb -T

Releasing

  • Make the changes
  • Run tests
  • From a test project, install the updated gem locally and invoke it:
    $ (cd ../revealing; git add .; bake install) && bundle update && bake clobber default
    Verify that everything works.
  • Bump the version in lib/revealing/version.rb
  • git commit
  • gem signin to rubygems.org
  • bundle exec rake release

TODO

  1. Pandoc >= 2.9.3 is required for reveal.js >= 4.0
  2. Expose customization of
    • highlight-style
    • theme
    • slideNumber
    • history
  3. Provide a docker image so that we can run without installing everything
  4. Add guard-livereload to the generated project
  5. Performance: pandoc-ditaa-inline filter could write files to cache dir and read it from there via SHA
    • still keep the SVG inline, but do not call ditaa again if unchanged
  6. Consider mermaid-filter
  7. Allow self-hosted mathjax (copy to target)
  8. Charts using vega-lite
  9. Make the initial set of files more meaningful (e.g. add the project name, git config user.name etc.)
  10. Web interface for live editing