'use strict';
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; };
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.translate = undefined;
var _yandex = require('./yandex');
var _yandex2 = _interopRequireDefault(_yandex);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var translateKey = 'trnsl.1.1.20131018T175412Z.6e9fa29e525b4697.3542f82ffa6916d1ccd64201d8a72c023892ae5e';
var dictionaryKey = 'dict.1.1.20140616T070444Z.ecfe60ba07dd3ebc.9ce897a05d9daa488b050e5ec030f625d666530a';
var yandex = new _yandex2.default(process.env.YANDEX_TRANSLATE_KEY || translateKey, process.env.YANDEX_DICTIONARY_KEY || dictionaryKey);
var translate = exports.translate = function translate(fromLang, toLang, text, forceSpell) {
var translateFn = function translateFn(text) {
return yandex.translate(fromLang, toLang, text);
};
var spellCheckFn = function spellCheckFn(text) {
return yandex.spellCheck(fromLang, text);
};
var translateFallback = function translateFallback() {
return translateFn(text).then(function (translate) {
if (translate === text) {
var _ret = function () {
var onSpellResult = function onSpellResult(spellResult) {
Iif (spellResult === text) {
return { type: 'translate', result: translate };
} else {
return onSpellSuccess(spellResult);
}
};
var onSpellSuccess = function onSpellSuccess(spellResult) {
return translateFn(spellResult).then(function (correctedTranslate) {
return {
type: 'translate',
result: correctedTranslate,
corrected: translate !== correctedTranslate ? spellResult : undefined
};
});
};
var result = yandex.spellCheck(fromLang, text).then(onSpellResult);
;
;
return {
v: result
};
}();
Eif ((typeof _ret === 'undefined' ? 'undefined' : _typeof(_ret)) === "object") return _ret.v;
} else {
return { type: 'translate', result: translate };
}
});
};
var dictionary = function dictionary(text) {
return yandex.dictionary(fromLang, toLang, text).then(function (result) {
if (result.length === 0) {
return translateFallback();
} else {
return { type: 'dictionary', result: formatDictionary(result) };
}
});
};
console.log(forceSpell);
Iif (forceSpell) {
spellCheckFn(text).then(function (text) {
console.log(text);return dictionary(text);
}).then(null, translateFallback);
} else {
return dictionary(text).then(null, translateFallback);
}
};
var joiner = function joiner(array, delimiter) {
return array.length > 0 ? '(' + array.join(' | ') + ')' : '';
};
var formatDictionaryTranslations = function formatDictionaryTranslations(translation) {
var synonyms = (translation.syn || []).map(function (syn) {
return syn.text;
});
var means = (translation.mean || []).map(function (means) {
return means.text;
});
return {
translation: translation.text + ' ' + joiner(synonyms),
means: means.join(' | '),
examples: (translation.ex || []).map(function (ex) {
var translations = ex.tr.map(function (_) {
return _.text;
});
return {
title: ex.text + ' ' + joiner(translations),
text: ex.text,
translations: translations
};
})
};
};
var formatDictionary = function formatDictionary(result) {
return result.map(function (word) {
return {
title: word.text + ' [' + word.ts + '] (' + word.pos + ')',
translations: word.tr.map(formatDictionaryTranslations)
};
});
}; |