mdplayscript

An extension of Markdown for play scripts

This crate is a parser of an extension of Markdown for play scripts. It defines an extended grammar of texts in paragraphs. It is implemented as a filter for Parser of pulldown-cmark crate. The goal of this parser is emit an HTML document. Thus it is recommended to pass the parser to pulldown_cmark::html::push_html or write_html.

Example

Play script format

A line starts with a string and a right angle denotes a character's speech. The text before the right angle is the character name and the text after the right angle is the speech of the character.

rust A> Hello!

A text between a pair of parentheses in a speech denotes a direction.

rust A> Hello! (some direction)

A direction can be placed after the character name. No space is allowed between the right parenthesis and the right angle.

rust A (running)> Hello!

Other forms of texts are handled as normal paragraphs.

The examples above are converted into the following HTML:

```rust use pulldowncmark::Parser; use pulldowncmark::html::push_html; use mdplayscript::MdPlayScript;

fn convert(s: &str) -> String { let p = MdPlayScript::new(Parser::new(s)); let mut buf = String::new(); push_html(&mut buf, p); buf }

asserteq!(convert("A> Hello!"), r#"

A

Hello!

"#); asserteq!(convert("A> Hello! (some direction)"), r#"
A

Hello!some direction

"#); assert_eq!(convert("A (running)> Hello!"), r#"
Arunning

Hello!

"#); ```

CLI program

This crate has no proper CLI program. It only has a tiny example program: examples/single.rs. It converts a single Markdown into an HTML document. The generated document has a link element which specifies a style sheet examples/play.css. I prepared an example input file: examples/figaro.md. The output file is public/figaro.html.

For Japanese play scripts, I prepared a style sheet examples/play_ja.css. If you pass -l ja option to examples/single.rs, it uses the style sheet examples/play_ja.css. The output file is public/yushima.html.

ToDo

License

MIT License

License: MIT