"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const chalk_1 = __importDefault(require("chalk")); const _1 = require("."); const blessed_1 = __importDefault(require("blessed")); const formatSeq = (seq) => { return seq.split('').map(c => { let r; switch (c) { case 'A': r = chalk_1.default.green(c); break; case 'T': r = chalk_1.default.red(c); break; case 'C': r = chalk_1.default.blue(c); break; case 'G': r = chalk_1.default.yellow(c); break; case '.': //r = chalk.hex('#FF0000').bgBlue(' ') // r = chalk.bgHex('#DEADED').underline(' ') // break; r = c; default: r = c; break; } return r; }).join(''); }; const combineSTr = (strings, lineN) => { const splittedSts = []; const r = new RegExp(".{1," + lineN + "}", "g"); for (const s of strings) { const tmpLines = s.match(r) || []; const resLines = []; for (const line of tmpLines) resLines.push(line.length < lineN ? line + ' '.repeat(lineN - line.length) : line); splittedSts.push(resLines); } const firstLines = splittedSts.shift() || []; return firstLines.map((e, i) => formatSeq(e.toUpperCase()) + formatSeq(splittedSts.map(ee => ee[i]).join(''))).join(''); }; (() => __awaiter(void 0, void 0, void 0, function* () { const arg = process.argv.slice(2); console.log(chalk_1.default.blue('Welcome to gbffParser!')); if (arg.length === 0 || arg.length > 1) { console.log(chalk_1.default.red('Usage : cli.js ')); } else { var screen = blessed_1.default.screen({ smartCSR: true }); screen.title = 'gbffParser'; //blessed.text({}) var box = blessed_1.default.box({ top: 'center', left: 'center', width: '95%', height: '95%', content: 'Hello {bold}world{/bold}!', tags: true, border: { type: 'line' }, scrollable: true, scrollbar: { style: { bg: 'blue' }, }, keys: true, mouse: false, style: { fg: 'white', bg: 'black', border: { fg: '#f0f0f0' } } }); screen.append(box); screen.key(['escape', 'q', 'C-c'], (ch, key) => { return process.exit(0); }); const dbPath = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10].map(n => '/home/thomas/NGS/ref/RNA/human.' + n + '.rna.gbff'); const result = yield (0, _1.getFromAcc)(arg[0], dbPath); // console.log(result) if (result) { box.setContent(result.sequence); box.focus(); const lineN = box.getScreenLines()[0].length; box.setContent(combineSTr([result.sequence, result.sequence.split('').map(e => '.').join('')], lineN)); screen.render(); } } }))();