[![Gem Version](https://badge.fury.io/rb/slippery.png)][gem] [![Build Status](https://secure.travis-ci.org/plexus/slippery.png?branch=master)][travis] [![Dependency Status](https://gemnasium.com/plexus/slippery.png)][gemnasium] [![Code Climate](https://codeclimate.com/github/plexus/slippery.png)][codeclimate] [![Coverage Status](https://coveralls.io/repos/plexus/slippery/badge.png?branch=master)][coveralls] [gem]: https://rubygems.org/gems/slippery [travis]: https://travis-ci.org/plexus/slippery [gemnasium]: https://gemnasium.com/plexus/slippery [codeclimate]: https://codeclimate.com/github/plexus/slippery [coveralls]: https://coveralls.io/r/plexus/slippery #Slippery Marries the flexible [Kramdown](https://kramdown.rubyforge.org) parser for Markdown with the flexibility of DOM manipulation with [Hexp](https://github.com/plexus/hexp) to generate HTML slides backed by either Reveal.js or Impress.js. Because Slippery slides are the best slides. ## How to use Create a markdown file, say `presentation.md`, that will be the source of your presentation. use `---` to separate slides. In the same directory, create a Rakefile, the most basic form is : ```ruby require 'slippery' Slippery::RakeTasks.new ``` Slippery will detect and markdown files in the current directory, and generate rake tasks for them. ``` rake slippery:build # build all rake slippery:build:presentation # build presentation ``` You can use a block to configure Slippery: ```ruby require 'slippery' Slippery::RakeTasks.new do |s| s.options = { type: :reveal_js, theme: 'beige', controls: false, backgroundTransition: 'slide', history: true, plugins: [:notes] } s.processor 'head' do |head| head <<= H[:title, 'Web Services, Past Present Future'] end end ``` After converting your presentation from Markdown, you can use Hexp to perform transformations on the result. This is what happens with the `processor`, you pass it a CSS selector, each matching element gets passed into the block, and replaced by whatever the block returns. See the [Hexp](http://github.com/plexus/hexp) DSL for details. You can also add built-in or custom processors directly ```ruby Slippery::RakeTasks.new do |s| s.processors << Slippery::Processors::GraphvizDot.new('.dot') s.processors << Slippery::Processors::SelfContained end ``` ## Processors These are defined in the `Slippery::Processors` namespace. ### GraphvizDot The "Dot" language is a DSL (domain specific language) for describing graphs. Using the `GraphvizDot` processor, you can turn "dot" fragments into inline SVG graphics. In your presentation : ````dot graph dependencies { node[shape=circle color=blue] edge[color=black penwidth=3] slippery[fontcolor=red]; slippery -> hexp -> equalizer; slippery -> kramdown; hexp -> ice_nine; } ```` In the Rakefile ```ruby Slippery::RakeTasks.new do |s| s.processors << Slippery::Processors::GraphvizDot.new('.dot') s.processors << Slippery::Processors::SelfContained end ``` And the result: dependencies slippery slippery hexp hexp slippery->hexp kramdown kramdown slippery->kramdown equalizer equalizer hexp->equalizer ice_nine ice_nine hexp->ice_nine