fanyi-n
Version:
A translate tool in your command line
74 lines (63 loc) • 1.92 kB
JavaScript
var chalk = require('chalk');
exports.iciba = function(data) {
var firstLine = '';
// word
firstLine += data.key + ' ';
// maybe string
if (typeof data.ps === 'string') {
data.ps = [data.ps];
}
if (typeof data.pos === 'string') {
data.pos = [data.pos];
}
if (typeof data.acceptation === 'string') {
data.acceptation = [data.acceptation];
}
// phonetic symbol
if (data.ps && data.ps.length) {
var ps = '';
data.ps.forEach(function(item, i) {
firstLine += chalk.magenta(' ' + (i === 0 ? '英' : '美') + '[ ' + item + ' ] ');
});
firstLine += ps;
}
log(firstLine + chalk.gray(' ~ iciba.com'));
// pos & acceptation
if (data.pos && data.pos.length) {
log();
data.pos.forEach(function(item, i) {
if (typeof data.pos[i] !== 'string' || !data.pos[i]) {
return;
}
log(chalk.gray('- ') + chalk.green(data.pos[i] + ' ' + data.acceptation[i].trim()));
});
}
// sentence
if (data.sent && data.sent.length) {
log();
data.sent.forEach(function(item, i) {
if (typeof item.orig !== 'string' && item.orig[0]) {
item.orig = item.orig[0].trim();
}
if (typeof item.trans !== 'string' && item.trans[0]) {
item.trans = item.trans[0].trim();
}
log(chalk.gray(i + 1 + '. ') + highlight(item.orig, data.key));
log(' ' + chalk.cyan(item.trans));
});
}
log();
};
function log(message, indentNum) {
indentNum = indentNum || 1;
var indent = '';
for (var i=1; i<indentNum; i++) {
indent += ' ';
}
console.log(indent, message || '');
}
function highlight(string, key, defaultColor) {
defaultColor = defaultColor || 'gray';
string = string.replace(new RegExp('(.*)(' + key + ')(.*)', 'gi'), '$1$2' + chalk[defaultColor]('$3'));
return string.replace(new RegExp('(.*?)(' + key + ')', 'gi'), chalk[defaultColor]('$1') + chalk.yellow('$2'));
}