var _regenerator = require("babel-runtime/regenerator"); var _regenerator2 = _interopRequireDefault(_regenerator); var _asyncToGenerator2 = require("babel-runtime/helpers/asyncToGenerator"); var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const unirest = require("unirest"); const cheerio = require("cheerio"); const speech = ['Noun', 'Pronoun', 'Adjectives', 'Numerals', 'Verb', 'Adverb', 'Article', 'Preposition', 'Conjunction', 'Interjection', 'Abbreviation']; var patch = function patch(re, s) { re = eval("/" + re + "/ig"); var k = s.match(re); if (k) { return k.length; } else { return 0; } }; var verify_word = function verify_word(word) { return new Promise(function (resolve, reject) { var req = unirest("GET", "https://en.wiktionary.org/w/api.php"); req.query({ "action": "query", "list": "search", "format": "json", "utf8": "", "srprop": "", "srsearch": word, "srwhat": "nearmatch" }); req.end(function (res) { console.log(res) if (res.error) reject(res.error); var data = res.body.query.search; if (data.length == 0) { reject({ info: 'word does not exist' }); } else { resolve(data[0].title); } }); }); }; var get_wiki_entry = function get_wiki_entry(word) { return new Promise(function (resolve, reject) { var req = unirest("GET", "https://en.wiktionary.org/w/index.php"); req.query({ "title": word, "printable": "yes" }); req.end(function (res) { if (res.error) reject(res.error); var dictionary = { word: word, language: 'en', definitions: [] }; // console.log(res.body); var $ = cheerio.load(res.body); var cnt = 0; $('.toc').find('.toclevel-1').each(function (i, elem) { if (i == 0) { var text = $(elem).text(); for (var x in speech) { cnt += patch(speech[x], text); } } else { return; } }); $('.mw-parser-output').find('ol').each(function (i, elem) { if (i < cnt) { $(elem).find('ul').empty(); var curspeech = $(elem).prev().prev().text(); var onedefinition = { speech: curspeech, lines: [] }; $(elem).children().each(function (i1, elem1) { var print = $(elem1).text().split('\n'); var oneline = { define: '', examples: [] }; for (var x in print) { if (x == 0) { oneline['define'] = print[x]; } else { if (print[x]) { oneline['examples'].push(print[x]); } } } onedefinition['lines'].push(oneline); }); dictionary['definitions'].push(onedefinition); } }); resolve(dictionary); }); }); }; var wiki = function () { var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(word) { var word1, dict; return _regenerator2.default.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: _context.prev = 0; _context.next = 3; return verify_word(word); case 3: word1 = _context.sent; _context.next = 6; return get_wiki_entry(word1); case 6: dict = _context.sent; return _context.abrupt("return", dict); case 10: _context.prev = 10; _context.t0 = _context["catch"](0); return _context.abrupt("return", Promise.reject(_context.t0)); case 13: case "end": return _context.stop(); } } }, _callee, undefined, [[0, 10]]); })); return function wiki(_x) { return _ref.apply(this, arguments); }; }(); module.exports = wiki;