'use strict';
var store = require('dot-file-config')('.dictionary-cli-npm', {
cloudSync: false
});
store.data.requests = store.data.requests || {};
var meow = require('meow');
var cli = meow({
pkg: './../package.json',
help: ['Usage', ' dictionary <lang-from> <lang-to> <input>', '', ' # if input match /[a-zA-Z]/ it will translate from english to <lang>, otherwise from <lang> to english', ' dictionary --en=<lang> <input>', ' # if input match /[а-яА-Я]/ it will translate from russian to <lang>, otherwise from <lang> to russian', ' dictionary --ru=<lang> <input>', '', ' dictionary <lang> --export', ' dictionary <lang> --export > history.txt', '', 'Data', ' ' + store.path]
});
var p = console.log.bind(console);
var fromLang = undefined;
var toLang = undefined;
var input = undefined;
var setupLangs = function setupLangs(lang, regEx) {
input = cli.input.join(' ');
if (regEx.test(input)) {
fromLang = lang;
toLang = cli.flags[lang];
} else {
fromLang = cli.flags[lang];
toLang = lang;
}
};
if (cli.flags.en) {
setupLangs('en', /[a-zA-Z]+/);
} else if (cli.flags.ru) {
setupLangs('ru', /[а-яА-Я]+/);
} else {
input = cli.input.slice(2).join(' ');
}
Iif (cli.flags.export && cli.input.length !== 1 || !cli.flags.export && input.length === 0) {
cli.showHelp();
} else Iif (cli.flags.export) {
var result = require('./exporter').default(store.data.requests, cli.input[0]);
require('lodash/collection/shuffle')(result).forEach(function (word) {
p(word);
});
} else {
fromLang = fromLang || cli.input[0];
toLang = toLang || cli.input[1];
var lib = require('./index');
lib.translate(fromLang, toLang, input, cli.flags.forceSpell).then(function (_ref) {
var type = _ref.type;
var result = _ref.result;
var corrected = _ref.corrected;
if (type === 'dictionary') {
result.forEach(function (r) {
p(r.title);
r.translations.forEach(function (r) {
if (r.means) {
p(' - ' + r.means);
}
p(' - ' + r.translation);
r.examples.forEach(function (r) {
p(' -- ' + r.title);
});
});
});
} else {
if (corrected) {
p('nothing found by "' + input + '", corrected to "' + corrected + '"');
}
p(result);
}
store.data.requests[new Date().toString()] = {
input: input,
fromLang: fromLang,
toLang: toLang,
result: result,
type: type
};
store.save();
}).catch(function (err) {
if (err.message === 'no translation') {
console.log('no translation');
} else {
throw err;
}
});
} |