hclang
Version:
Homoiconic C: Programming without a Language
39 lines • 3.41 kB
JavaScript
import chalk from 'chalk';
import { Frame } from '../frames.js';
import { HCEval } from './hc-eval.js';
export class HCLog extends Frame {
constructor(context, prompt = false) {
super(context);
this.prompt = prompt;
}
apply(argument, _parameter = Frame.nil) {
const debug = this.get('DEBUG');
if (debug !== Frame.missing) {
console.log(argument.id, argument);
}
if (argument !== Frame.nil && !argument.is.void && !argument.is.statement) {
const output = argument.toString();
if (this.prompt) {
console.log(chalk.grey(HCEval.EXPECT + output));
}
else {
const colorized = this.color(output);
console.log(colorized);
}
}
return argument;
}
color(output) {
if (output[0] !== '$') {
return output;
}
const flag = output[1];
const part = output.split(' .n ');
switch (flag) {
case '+': return chalk.green(part[0]) + chalk.grey.italic(part[1]);
case '-': return chalk.red(part[0]) + chalk.grey.italic(part[1]);
default: return chalk.yellow(output);
}
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGMtbG9nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2V4ZWN1dGUvaGMtbG9nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQTtBQUN6QixPQUFPLEVBQVcsS0FBSyxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQzdDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFJckMsTUFBTSxPQUFPLEtBQU0sU0FBUSxLQUFLO0lBQzlCLFlBQWEsT0FBZ0IsRUFBUyxTQUFrQixLQUFLO1FBQzNELEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQURzQixXQUFNLEdBQU4sTUFBTSxDQUFpQjtJQUU3RCxDQUFDO0lBRU0sS0FBSyxDQUFFLFFBQWUsRUFBRSxVQUFVLEdBQUcsS0FBSyxDQUFDLEdBQUc7UUFDbkQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUMvQixJQUFJLEtBQUssS0FBSyxLQUFLLENBQUMsT0FBTyxFQUFFO1lBQzNCLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQTtTQUNuQztRQUNELElBQUksUUFBUSxLQUFLLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFO1lBQ3pFLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQTtZQUNsQyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQ2YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQTthQUNoRDtpQkFBTTtnQkFDTCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFBO2dCQUNwQyxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFBO2FBQ3ZCO1NBQ0Y7UUFDRCxPQUFPLFFBQVEsQ0FBQTtJQUNqQixDQUFDO0lBRU8sS0FBSyxDQUFFLE1BQWM7UUFDM0IsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxFQUFFO1lBQ3JCLE9BQU8sTUFBTSxDQUFBO1NBQ2Q7UUFDRCxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDdEIsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUNqQyxRQUFRLElBQUksRUFBRTtZQUNaLEtBQUssR0FBRyxDQUFDLENBQUMsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ2xFLEtBQUssR0FBRyxDQUFDLENBQUMsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ2hFLE9BQU8sQ0FBQyxDQUFDLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQTtTQUNyQztJQUNILENBQUM7Q0FDRiJ9