All files / src/draw/part show.ts

100% Statements 33/33
100% Branches 2/2
100% Functions 2/2
100% Lines 33/33

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 551x 1x 1x 1x   1x 1x           1x 1x 1x 1x 1x 1x           1x           8x 8x 8x 8x 8x 8x 8x 8x 8x 8x 8x           4x 4x 4x 4x 4x 4x 4x 4x 4x  
import {surround, unwords} from '#String'
import {showAlignment} from '../align.js'
import {type ColumnF, matchPartF, type RowF} from '../partF.js'
import {showHStruts, showStruts} from '../struts.js'
import type {PartFolder} from './fold.js'
import {partCata} from './fold.js'
import {type Part} from './types.js'
 
/**
 * @category internal
 * @function
 */
export const showPartAlgebra: PartFolder<string> = matchPartF(
  '∅',
  surround.quote.fancy,
  showRow,
  showColumn,
)
 
/**
 * @category internal
 * @function
 */
export const showPart: (part: Part) => string = partCata(showPartAlgebra)
 
/**
 * @category internal
 * @function
 */
function showRow({cells, hAlign, vAlign, ...struts}: RowF<string>): string {
  return unwords.rest(
    showAlignment(hAlign),
    showAlignment(vAlign),
    '.',
    showStruts(struts),
    '(',
    cells.join(', '),
    ')',
  )
}
 
/**
 * @category internal
 * @function
 */
function showColumn({hAlign, cells, ...hStruts}: ColumnF<string>): string {
  return unwords.rest(
    showAlignment(hAlign),
    showHStruts(hStruts),
    '(',
    cells.join(', '),
    ')',
  )
}