All files / src/draw/variants boxedNodes.ts

100% Statements 26/26
100% Branches 1/1
100% Functions 1/1
100% Lines 26/26

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 341x 1x 1x 1x 1x 1x             1x 1x 1x 1x   9x 9x 9x 9x 9x 9x 9x 9x 9x 9x 9x 9x 9x 9x 9x 9x  
import {flow, Function, pipe} from '#util'
import {borderSet, elbowSet} from '../glyph.js'
import {teeSet} from '../glyph/tees.js'
import {drawPart, text} from '../part.js'
import {box} from '../parts.js'
import {type Theme, setFormatter, setIndents} from '../tree.js'
 
/**
 * Set the theme formatter to draw boxes around nodes.
 * @category drawing
 * @function
 */
export const setBoxNodesFormatter: Function.EndoOf<Theme> = flow(
  setFormatter(pointyBox),
  setIndents(4),
)
 
function pointyBox(s: string): string {
  return pipe(
    s,
    text,
    box.curried({
      border: {
        ...borderSet('thin'),
        elbows: {
          ...elbowSet('thin'),
          topLeft: teeSet('thin').bottom,
        },
      },
    }),
    drawPart.unlines,
  )
}