UNPKG

@minofrk/msf-pretty-print

Version:

An opinionated pretty-printer for MSF format.

28 lines (22 loc) 818 B
import { Option, some, none } from 'fp-ts/lib/Option'; import { Position, StringArray, Board } from './codecs'; import boardToString from './board-to-string'; export default function format(key: string, value: unknown): Option<string> { if (typeof value === 'string' && /^\$\d+$/.test(value)) { return some(value); } if (key === 'ele' && Board.is(value)) { return some(boardToString(value)); } if ( (key === 'i' || key === 'a') && Position.is(value) && Object.keys(value).length === 2 ) { return some(`{ "alsia": ${value.alsia}, "soom": ${value.soom} }`); } if ((key === 'txifol' || key === 'korol') && StringArray.is(value)) { return some('[' + value.map((x): string => `"${x}"`).join(', ') + ']'); } return none; }