( toggle: Doc.AnsiDoc, leadingSymbol: Doc.AnsiDoc, trailingSymbol: Doc.AnsiDoc, options: ToggleOptions )
| 46 | } |
| 47 | |
| 48 | function renderOutput( |
| 49 | toggle: Doc.AnsiDoc, |
| 50 | leadingSymbol: Doc.AnsiDoc, |
| 51 | trailingSymbol: Doc.AnsiDoc, |
| 52 | options: ToggleOptions |
| 53 | ) { |
| 54 | const annotateLine = (line: string): Doc.AnsiDoc => Doc.annotate(Doc.text(line), Ansi.bold) |
| 55 | const promptLines = options.message.split(/\r?\n/) |
| 56 | const prefix = Doc.cat(leadingSymbol, Doc.space) |
| 57 | if (Arr.isNonEmptyReadonlyArray(promptLines)) { |
| 58 | const lines = Arr.map(promptLines, (line) => annotateLine(line)) |
| 59 | return prefix.pipe( |
| 60 | Doc.cat(Doc.nest(Doc.vsep(lines), 2)), |
| 61 | Doc.cat(Doc.space), |
| 62 | Doc.cat(trailingSymbol), |
| 63 | Doc.cat(Doc.space), |
| 64 | Doc.cat(toggle) |
| 65 | ) |
| 66 | } |
| 67 | return Doc.hsep([prefix, trailingSymbol, toggle]) |
| 68 | } |
| 69 | |
| 70 | function renderNextFrame(state: State, options: ToggleOptions) { |
| 71 | return Effect.gen(function*() { |
no test coverage detected