[−][src]Crate 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.
A> Hello!
A text between a pair of parentheses in a speech denotes a direction.
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.
A (running)> Hello!
Other forms of texts are handled as normal paragraphs.
The examples above are converted into the following HTML:
use pulldown_cmark::Parser; use pulldown_cmark::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 } assert_eq!(convert("A> Hello!"), r#"<div class="speech"><h5><span class="character">A</span></h5> <p>Hello!</p> </div> "#); assert_eq!(convert("A> Hello! (some direction)"), r#"<div class="speech"><h5><span class="character">A</span></h5> <p>Hello!<span class="direction">some direction</span></p> </div> "#); assert_eq!(convert("A (running)> Hello!"), r#"<div class="speech"><h5><span class="character">A</span><span class="direction">running</span></h5> <p>Hello!</p> </div> "#);
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
- [ ] Make a function like
mdbook build
. - [ ] Refactor test codes
License
MIT License
Structs
MdPlayScript |