/tempo

Programmatically create Markdown documents.

Primary LanguageTypeScriptMIT LicenseMIT


"Running gives freedom. When you run you can determine your own tempo. You can choose your own course and think whatever you want. Nobody tells you what to do." - Nina Kuscsik

npm version CodeQL Publish to npm CI
JS Semi-standard Style Prettier Style

Overview

Library used to programmatically build markdown documents, with a heavy tilt toward GitHub Flavored Markdown (GFM).

Getting Started

Install the library and you can begin to use it in your application(s).

This is a GitHub Package and your application must support installing internal GitHub packages before you can use this package.

npm

npm install @joggr/tempo

yarn

yarn add @joggr/tempo

Usage

import fs from 'node:fs/promises';
import tempo from '@joggrdocs/tempo';

const result = tempo()
  .h1('Hello World')
  .paragraph('Some things')
  .paragraph((txt) => 
    txt
      .plainText('A sentence with')
      .bold('bolded words')
      .plainText('and')
      .italic('italicized words')
      .plainText('.')
      .build()
  )
  .h2((txt) => 
    txt 
      .plainText('A')
      .italic('table')
  )
  .table([
    ['name', 'email'],
    ['Zac', 'zac@acmecorp.com']
  ])
  .toString();

fs.writeFile('myFile.md', result)
  .then(() => {
    console.log('DONE');
  });

Serialized Data (⚠️ Unstable API ⚠️)

Tempo creates a syntax tree that can be serialized and stored in a data base.

import db from 'db/orm';
import tempo from '@joggrdocs/tempo';

const result = tempo()
  .h1('Hello World')
  .paragraph('Some things')
  .paragraph((txt) => 
    txt
      .plainText('A sentence with')
      .bold('bolded words')
      .plainText('and')
      .italic('italicized words')
      .plainText('.')
      .build()
  )
  .toJSON();

// Example of storing a serializable data object to the DB
await db.collection('tempoDoc').findAndSave(1, result);

Credits