Parse out gemini pages and convert them to HTML
npm i --save gemini-to-html
const parse = require('gemini-to-html/parse')
const tokens = parse(`
# Hello
=> ./example This is a link
`)
const render = require('gemini-to-html/render')
const html = render(tokens)
console.log(html)
Parse out some gemini text into an array of Line items to render
Any lines that don't fit into other formats, will be Text. content
is the raw text to render.
Lines starting with =>
will be parsed as links. The line will then contain a URL that will go under href
, followed by some optional whitespace, and then a description for the text stored in content
.
Sections of text that look like this:
Some text
Will be parsed as a sing Pre
line. The items
are the lines within the block. If ther was additional text provided in the backticks, it'll be in the alt
text.
Lines starting with one or more #
symbols will be interpreted as headers. The number of consequtive #
symbols will be the level
of the header. The header text will be within content
.
Lines starting with *
will be grouped together. Each line will be an item within items
.
Lines starting with >
will be interpreted as a quote with the content
being separated out.
Take the parsed out blocks and render an HTML page.
This module uses escape-goat to avoid HTML and JS injection to combat XSS.
Regular Text
will be converted to <p>
tags, however blank lines will be converted to <br/>
elements as per the spec.
Preformatted text will be turned into <pre>
tags. If there was an alt
specified, the text will be wrapped in <code class="language-${alt}>
so that it can be easily integrated with highlight.js.
List are converted to <ul>
elements with <li>
for each item in the list.
Paragraphs are converted to the appropriate <h1...n>
elements.
Quote items will be wrapped in <blockquote>
elements.