all files / dist/ index.js

89.66% Statements 52/58
69.23% Branches 27/39
86.96% Functions 20/23
92.45% Lines 49/53
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125                                                                                                          14×     12×   12×     12×                                    
'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)
    };
  });
};