Reveal.yaml

dependency status

Rust implementation of Reveal.js YAML server, a command line interface (CLI) tool.

Old Python version? This project is transferred from Python language, so you may found it on PyPI. Reveal.yaml is now operates in a way that is easier to maintain and release, and it is Rust. Some old functions might be deprecated, and some functions are improved.

This manager downloads the latest Reveal.js archive to provide serving and packing function, and had same licensed as Reveal.js.

Static demo on gh-pages: https://kmolyuan.github.io/reveal-yaml-rs

YAML backend: https://github.com/KmolYuan/yaml-peg-rs (hosted by myself)

Why should I use this?

Using Reveal.js with Markdown, but it is still difficult to maintain HTML slideshows. This work provides a clean YAML file for your slides, an auto-generated outline, a simple layout function, a powerful support with original Reveal.js function, and a live presentation when editing.

Difference to the before work, the Markdown to HTML translation works by this parser instead of using markdown.js, so there is no more HTML escaping since they will be handled enough. Except for using Markdown recursively in your code block, this needs to use the <code> tags by yourself.

If you are not decide yet, see the tutorial for more information.

Installation

Download CLI executable from GitHub release: https://github.com/KmolYuan/reveal-yaml-rs/releases/

Wherever the binary placed, it should be visible for the environment variable PATH.

If you are a Rust user, install it with cargo: cargo install reveal-yaml The executable can be checked with rym --help.

Command Line Interface

The command rym stands for "Reveal-Yaml Manager". ```bash

Download the latest Reveal.js archive

rym update

Create a project to current directory

Only "reveal.yaml" will be create, the rest is up to you!

rym new .

Serve the slides

rym serve

Reformat the project file

rym fmt

Pack the project to HTML archive

rym pack ```

Edit Mode (Hot Reload / Auto-reload)

There are -e / --edit flags on the serve command. This option let the server keep watching the project file reveal.yaml, then reload the page from the web browser.

If this option is not enabled, the server will only resolve once at startup, and always use the cache.

bash rym serve --edit

Tutorial

Slides in HTML: In Reveal.js, the HTML structure shown as following. The typesetting is done by original HTML and CSS. ```html

...
...
...
...

**Slides in YAML**: The horizontal slides are as listed in the second block, which is an array. A slide can work with at least one attribute structure. yaml

metadata block

description: ...

author: ...

slides block

Layout

There are two layout types, called "horizontal stack" (hstack) and "vertical stack" (vstack). The vertical layout is default, as same as HTML.

The stack blocks list in the hstack / vstack tag, and the stack tags can be nested. yaml hstack: - doc: Left - vstack: - doc: Right Top - doc: Right Bottom The stack tag can add a dollar sign $ to add a borderline between the elements. yaml $hstack: - doc: Splitted left - doc: Splitted right

Sized Attribute

The images and resizeable items are support "sized" attribute, which contains three options: src, width and height. The src option is required, otherwise the feature will be disabled or invalid.

The width and height options are the same as the attributes on the <img> tag, they are optional. yaml footer: # Footer is a metadata option src: help/icon.png width: 50pt label: Reveal.yaml link: https://github.com/KmolYuan/reveal-yaml/ img: - src: img/icon.png width: 50% # same as width="50%" height: 70 # same as height="70" video: width: 320 height: 240 src: https://www.w3schools.com/html/movie.mp4 autoplay: true

Reveal Plugins

The plugins excluding markdown are enabled by default.

Functions

Here are the implemented features, or the functions are designed in progress.

Generally, the parser will not check extra key values. In addition, almost all values support the null placeholder to present the default value (blank, ~, null).

Some functions are planed to be demonstrated in the help page. Open the help page by adding /help/ after URL, like http://localhost:8080/help/.

Metadata

Metadata contains HTML settings and global slide settings. They are totally YAML Maps. The definition contains in the first YAML doc, split by horizontal line ---.

Slides

Slides are a list of multiple slide blocks, they are totally YAML Maps.

yaml - title: Title 1 doc: Document 1 - title: Title 2 doc: Document 2 sub: - title: Title 2-1 doc: Document 2-1