import {StrRVal} from "./commands/command.js"; import {Awaitable} from "../util/types.js"; export const getSubjectDisplay = (sub: StrRVal): string => { if ( sub.term === 'string' ) { return sub.value } if ( sub.term === 'int' ) { return String(sub.term) } return JSON.stringify(sub.value, null, '\t') // fixme } export type Display = { showSubject(sub: StrRVal): Awaitable } export class ConsoleDisplay implements Display { showSubject(sub: StrRVal) { console.log(`\n---------------\n${getSubjectDisplay(sub)}\n---------------\n`) } } export class NullDisplay implements Display { showSubject() {} } export type Clipboard = { read(): Awaitable overwrite(sub: string): Awaitable } export class FakeClipboard { private val = '' read() { return this.val } overwrite(sub: string) { this.val = sub } } export type OutputManager = { display: Display, clipboard: Clipboard, }