UNPKG

@rawcmd/typewriters

Version:

Collection of typewriters for styling command-line messages for Rawcmd.

50 lines (38 loc) 1.18 kB
import { Command, EOL } from '@rawcmd/core'; import { contentsTypewriter, ContentsTypewriterOptions } from './contents'; import { titleTypewriter } from './title'; /** * Command links data typewriter options interface. */ export interface LinksTypewriterOptions extends ContentsTypewriterOptions { /** * Support section title. */ title?: string; } /** * Returns a function which builds a string representing a list of all usefull * support references and links. * @param options Command references typewriter options. */ export function linksTypewriter(options?: LinksTypewriterOptions) { options = { title: 'Links', ...options, }; const writeTitle = titleTypewriter(options); const writeBody = contentsTypewriter(options); return (command: Command) => { if (!command || command.links.length <= 0) { return ''; } const data = command.links.filter((l) => { return !!l.name && !!l.url; }).map((l) => { return [l.name, l.url]; }); const titleOutput = writeTitle(options.title); const bodyOutput = writeBody(data); return [titleOutput, bodyOutput].filter((o) => !!o).join(EOL); }; }