30s
Version:
A command-line application for 30 seconds of code snippets
72 lines (54 loc) • 2.1 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.printSnippet = exports.colorizedPrint = void 0;
var _markedTerminal = _interopRequireDefault(require("marked-terminal"));
var _chalk = _interopRequireDefault(require("chalk"));
var _marked = _interopRequireDefault(require("marked"));
var _ramda = require("ramda");
var _cliHighlight = require("cli-highlight");
var _clipboardy = require("clipboardy");
var _helpers = require("./helpers");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
_marked.default.setOptions({
renderer: new _markedTerminal.default()
});
const colorizedPrint = x => {
const printMap = {
code: y => (0, _cliHighlight.highlight)(y, {
language: 'javascript'
}),
description: y => (0, _helpers.enforceSingleNewLine)((0, _marked.default)(y)),
example: y => (0, _cliHighlight.highlight)(y, {
language: 'javascript'
}),
id: y => _chalk.default.magenta.bold(y),
tags: (0, _ramda.compose)(_chalk.default.gray.italic, (0, _ramda.join)(', '))
};
const print = y => (0, _ramda.compose)((0, _ramda.replace)(/\n$/, ''), (0, _ramda.join)('\n'), (0, _ramda.map)(([k, v]) => printMap[k](v) + (k === 'id' ? '' : '\n')), _ramda.toPairs)(y);
return (0, _ramda.compose)((0, _ramda.join)('\n\n'), (0, _ramda.map)(print))(x);
};
exports.colorizedPrint = colorizedPrint;
const printSnippet = ({
cp,
layout,
json
}, x) => {
const arr = (0, _ramda.is)(Array, x) ? x : [x];
const layoutMap = {
c: 'code',
d: 'description',
e: 'example',
i: 'id',
t: 'tags'
};
const keysByLayout = (0, _ramda.map)(k => layoutMap[k])(Array.from(layout));
if (x == null) return '';
if (cp) {
(0, _clipboardy.writeSync)((0, _ramda.compose)((0, _ramda.join)('\n'), (0, _ramda.map)((0, _ramda.prop)('code')))(arr));
}
const pickedSnippet = (0, _ramda.map)((0, _ramda.pick)(keysByLayout))(arr);
return (0, _ramda.compose)(console.log, json ? JSON.stringify : colorizedPrint)(pickedSnippet);
};
exports.printSnippet = printSnippet;