# Stage Export to HTML Converts a Recital `.stage` file into an HTML page, suitable for then converting into pdf or other form. Uses `markdown` to process non-Recital markup, which generally follows the CommonMark spec. ## Usage ### CLI ``` stage-html input-file.stage optional-file-2.stage -o outputfile.html Options: *TAG OPTIONS* --sceneTag tagName - Tag (without brackets) that wraps around scenes. Defaults to 'section' --blockTag tagName - Tag (without brackets) that wraps around fragments. Defaults to 'div' --separator '
' - HTML that goes between scenes. Defaults to nothing. *CONVERSION OPTIONS* --useIncludes - if set, will accept the $include command to have HTML templates. Defaults to false. --pureMarkdown - if set, will not use any of the common extensions (e.g. wikilinks). Defaults to false. ``` If you have multiple input files, they'll be concatenated. Prefer using the `$include` command with the `--useIncludes` flag instead and just pointing to the first file; the parser supports `$include`s. ### In JS ```js const stageToHtml = require('@a-morphous/recital-stage-html') const defaultOpts = { sceneTag: 'section', blockTag: 'div', sceneSeparator: '', } return stageToHTML(fs.readFileSync('input-file.stage', 'utf-8'), defaultOpts) ``` ## How does it work? By default, the parser wraps scenes with `
` and fragments with `
`. The only other metadata that is relevant is the default `id` and `classes` metadata tags, which are set as the id and class of the resulting HTML element, respectively. The parser enforces an `id`; if a scene or a fragment is defined without one, one will be automatically generated. All inline markup is parsed with `micromark` in Markdown, essentially turning the original Recital document into a Markdown superscript. You can also add a separator between every scene, which is defined in the `--separator` option. This separator is added as-is as an HTML string with no further processing. If the `--useIncludes` flag is set, the logic tag `$include` will also operate, defined in the common extensions.: The include command's usage is: ``` $include ``` The file to include should be a relative path from the original parsed file, or an absolute path. 'raw' determines whether we process the included stage file for more includes, or just leave the text unprocessed. ## Limitations This parser ultimately converts to a string, and does not check the validity of the generated HTML. It also doesn't set proper head tags, with the assumption that additional processing be used to create a whole page. In addition, there is no functionality to add script tags or any kind of Javascript from within the parser. ## Recipes To use this as a full-blown HTML generator, you can take advantage of the `--useIncludes` flag, and include things like CSS styles and JS scripts via external includes. Something like: ### head.html ```html ROGUELIKE ``` ### content.stage ```recital $include './head.html' = Put content in here! # This is the first scene. # This is the second scene. $include './footer.html' ``` ### footer.html ```html ```