ts-markdown
Version:
An extensible TypeScript markdown generator that takes JSON and creates a markdown document.
40 lines (39 loc) • 1.27 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.code = exports.codeRenderer = void 0;
/**
* The renderer for code entries.
*
* @param entry The code entry.
* @param options Document-level render options.
* @returns Code markdown content.
*/
const codeRenderer = (entry, options) => {
if ('code' in entry) {
let backtickTally = 0;
entry.code.split('').reduce((prev, curr) => {
let tally = curr === '`' ? prev + 1 : 0;
backtickTally = Math.max(backtickTally, tally);
return tally;
}, 0);
let codeStartPadding = entry.code.startsWith('`') ? ' ' : '';
let codeEndPadding = entry.code.endsWith('`') ? ' ' : '';
let codeIndicator = ''.padEnd(backtickTally + 1, '`');
return `${codeIndicator}${codeStartPadding}${entry.code}${codeEndPadding}${codeIndicator}`;
}
throw new Error('Entry is not a code entry. Unable to render.');
};
exports.codeRenderer = codeRenderer;
/**
* Helper which creates a code segment entry.
*
* @param options Entry-level options for this element.
* @returns a code segment entry
*/
function code(content, options) {
return {
code: content,
...options,
};
}
exports.code = code;