'use strict';
Object.defineProperty(exports, '__esModule', {
value: true
});
// istanbul ignore next
var _slicedToArray = (function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i['return']) _i['return'](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { Eif (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError('Invalid attempt to destructure non-iterable instance'); } }; })();
exports['default'] = render;
// istanbul ignore next
function _toConsumableArray(arr) { Eif (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } }
function escapeMarkdown(input) {
return [
// escaping symbols: # * ( ) [ ] _
[/([#\*\(\)\[\]_\\`])/g, '\\$1'],
// escaping less and more signs
[/\</g, '<'], [/\>/g, '>']].reduce(function (input, _ref) {
var _ref2 = _slicedToArray(_ref, 2);
var replaceFrom = _ref2[0];
var replaceTo = _ref2[1];
return input.replace(replaceFrom, replaceTo);
}, input);
}
function renderEntityMention(data) {
return '[@' + escapeMarkdown(data.screen_name) + '](https://twitter.com/' + data.screen_name + ' "' + data.name + '")';
}
function renderEntityMedia(data) {
return '[' + escapeMarkdown(data.display_url) + '](' + data.url + ')';
}
function renderEntityHashtag(data) {
return '[' + escapeMarkdown(data.text) + '](https://twitter.com/search?q=%23' + data.text + ')';
}
function renderEntityUrl(data) {
return '[' + escapeMarkdown(data.display_url) + '](' + data.url + ' "' + data.expanded_url + '")';
}
function renderEntity(type, data) {
switch (type) {
case 'user_mentions':
return renderEntityMention(data);
case 'media':
return renderEntityMedia(data);
case 'hashtags':
return renderEntityHashtag(data);
case 'urls':
return renderEntityUrl(data);
default:
return null;
}
}
function render(tweet) {
var text = tweet.text;
var _tweet$entities = tweet.entities;
var entities = _tweet$entities === undefined ? {} : _tweet$entities;
vEar replacements = [];
Object.keys(entities).forEach(function (entityKey) {
replacements.push.apply(replacements, _toConsumableArray(entities[entityKey].map(function (entity) {
return [renderEntity(entityKey, entity), entity.indices[0], entity.indices[1]];
})));
});
if (0 === replacements.length) {
return escapeMarkdown(tweet.text);
}
var lastPos = text.length;
var parts = replacements.sort(function (a, b) {
return b[1] - a[1];
}).map(function (replacement) {
I var output = [replacement[0]];
if (replacement[2] < lastPos) {
output.push(escapeMarkdown(text.substr(replacement[2], lastPos - replacement[2])));
}
lastPos = replacement[1];
return output.join('');
});
if (lastPos > 0) {
parts.push(escapeMarkdown(text.substr(0, lastPos)));
}
return parts.reverse().join('');
}
module.exports = exports['default'];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9zaWxlbnQvUHJvamVjdHMvdHdlZXQubWQvaW5kZXguanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O3FCQTRDd0IsTUFBTTs7Ozs7QUE1QzlCLFNBQVMsY0FBYyxDQUFDLEtBQUssRUFBRTtBQUM5QixRQUFPOzs7QUFHTixFQUFDLHNCQUFzQixFQUFFLE1BQU0sQ0FBQzs7O0FBR2hDLEVBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxFQUNmLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUVmLENBQUMsTUFBTSxDQUFDLFVBQUMsS0FBSyxFQUFFLElBQXdCOzZCQUF4QixJQUF3Qjs7TUFBdkIsV0FBVztNQUFFLFNBQVM7U0FBTSxLQUFLLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUM7RUFBQSxFQUFFLEtBQUssQ0FBQyxDQUFDO0NBQzVGOztBQUVELFNBQVMsbUJBQW1CLENBQUMsSUFBSSxFQUFFO0FBQ2xDLGVBQVksY0FBYyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsOEJBQXlCLElBQUksQ0FBQyxXQUFXLFVBQUssSUFBSSxDQUFDLElBQUksUUFBSztDQUN4Rzs7QUFFRCxTQUFTLGlCQUFpQixDQUFDLElBQUksRUFBRTtBQUNoQyxjQUFXLGNBQWMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQUssSUFBSSxDQUFDLEdBQUcsT0FBSTtDQUM1RDs7QUFFRCxTQUFTLG1CQUFtQixDQUFDLElBQUksRUFBRTtBQUNsQyxjQUFXLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLDBDQUFxQyxJQUFJLENBQUMsSUFBSSxPQUFJO0NBQ3RGOztBQUVELFNBQVMsZUFBZSxDQUFDLElBQUksRUFBRTtBQUM5QixjQUFXLGNBQWMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQUssSUFBSSxDQUFDLEdBQUcsVUFBSyxJQUFJLENBQUMsWUFBWSxRQUFLO0NBQ25GOztBQUVELFNBQVMsWUFBWSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUU7QUFDakMsU0FBUSxJQUFJO0FBQ1gsT0FBSyxlQUFlO0FBQ25CLFVBQU8sbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUM7QUFBQSxBQUNsQyxPQUFLLE9BQU87QUFDWCxVQUFPLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO0FBQUEsQUFDaEMsT0FBSyxVQUFVO0FBQ2QsVUFBTyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUFBLEFBQ2xDLE9BQUssTUFBTTtBQUNWLFVBQU8sZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQUEsQUFDOUI7QUFDQyxVQUFPLElBQUksQ0FBQztBQUFBLEVBQ2I7Q0FDRDs7QUFFYyxTQUFTLE1BQU0sQ0FBQyxLQUFLLEVBQUU7S0FDN0IsSUFBSSxHQUFxQixLQUFLLENBQTlCLElBQUk7dUJBQXFCLEtBQUssQ0FBeEIsUUFBUTtLQUFSLFFBQVEsbUNBQUcsRUFBRzs7QUFDNUIsS0FBTSxZQUFZLEdBQUcsRUFBRSxDQUFDOztBQUV4QixPQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFBLFNBQVMsRUFBSTtBQUMxQyxjQUFZLENBQUMsSUFBSSxNQUFBLENBQWpCLFlBQVkscUJBQ1IsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFBLE1BQU07VUFBSSxDQUNwQyxZQUFZLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxFQUMvQixNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUNqQixNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUNqQjtHQUFBLENBQUMsRUFDRixDQUFDO0VBQ0YsQ0FBQyxDQUFDOztBQUVILEtBQUksQ0FBQyxLQUFLLFlBQVksQ0FBQyxNQUFNLEVBQUU7QUFDOUIsU0FBTyxjQUFjLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0VBQ2xDOztBQUVELEtBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7QUFDMUIsS0FBTSxLQUFLLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFDLENBQUMsRUFBRSxDQUFDO1NBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7RUFBQSxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQUEsV0FBVyxFQUFJO0FBQ3pFLE1BQUksTUFBTSxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7O0FBRTlCLE1BQUksV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sRUFBRTtBQUM3QixTQUFNLENBQUMsSUFBSSxDQUNWLGNBQWMsQ0FDYixJQUFJLENBQUMsTUFBTSxDQUNWLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFDZCxPQUFPLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUN4QixDQUNELENBQ0QsQ0FBQztHQUNGOztBQUVELFNBQU8sR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7O0FBRXpCLFNBQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztFQUN2QixDQUFDLENBQUM7O0FBRUgsS0FBSSxPQUFPLEdBQUcsQ0FBQyxFQUFFO0FBQ2hCLE9BQUssQ0FBQyxJQUFJLENBQ1QsY0FBYyxDQUNiLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUN2QixDQUNELENBQUM7RUFDRjs7QUFFRCxRQUFPLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7Q0FDaEMiLCJmaWxlIjoiL1VzZXJzL3NpbGVudC9Qcm9qZWN0cy90d2VldC5tZC9pbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIGVzY2FwZU1hcmtkb3duKGlucHV0KSB7XG5cdHJldHVybiBbXG5cblx0XHQvLyBlc2NhcGluZyBzeW1ib2xzOiAjICogKCApIFsgXSBfXG5cdFx0Wy8oWyNcXCpcXChcXClcXFtcXF1fXFxcXGBdKS9nLCAnXFxcXCQxJ10sXG5cblx0XHQvLyBlc2NhcGluZyBsZXNzIGFuZCBtb3JlIHNpZ25zXG5cdFx0Wy9cXDwvZywgJyZsdDsnXSxcblx0XHRbL1xcPi9nLCAnJmd0OyddXG5cblx0XS5yZWR1Y2UoKGlucHV0LCBbcmVwbGFjZUZyb20sIHJlcGxhY2VUb10pID0+IGlucHV0LnJlcGxhY2UocmVwbGFjZUZyb20sIHJlcGxhY2VUbyksIGlucHV0KTtcbn1cblxuZnVuY3Rpb24gcmVuZGVyRW50aXR5TWVudGlvbihkYXRhKSB7XG5cdHJldHVybiBgW0Ake2VzY2FwZU1hcmtkb3duKGRhdGEuc2NyZWVuX25hbWUpfV0oaHR0cHM6Ly90d2l0dGVyLmNvbS8ke2RhdGEuc2NyZWVuX25hbWV9IFwiJHtkYXRhLm5hbWV9XCIpYDtcbn1cblxuZnVuY3Rpb24gcmVuZGVyRW50aXR5TWVkaWEoZGF0YSkge1xuXHRyZXR1cm4gYFske2VzY2FwZU1hcmtkb3duKGRhdGEuZGlzcGxheV91cmwpfV0oJHtkYXRhLnVybH0pYDtcbn1cblxuZnVuY3Rpb24gcmVuZGVyRW50aXR5SGFzaHRhZyhkYXRhKSB7XG5cdHJldHVybiBgWyR7ZXNjYXBlTWFya2Rvd24oZGF0YS50ZXh0KX1dKGh0dHBzOi8vdHdpdHRlci5jb20vc2VhcmNoP3E9JTIzJHtkYXRhLnRleHR9KWA7XG59XG5cbmZ1bmN0aW9uIHJlbmRlckVudGl0eVVybChkYXRhKSB7XG5cdHJldHVybiBgWyR7ZXNjYXBlTWFya2Rvd24oZGF0YS5kaXNwbGF5X3VybCl9XSgke2RhdGEudXJsfSBcIiR7ZGF0YS5leHBhbmRlZF91cmx9XCIpYDtcbn1cblxuZnVuY3Rpb24gcmVuZGVyRW50aXR5KHR5cGUsIGRhdGEpIHtcblx0c3dpdGNoICh0eXBlKSB7XG5cdFx0Y2FzZSAndXNlcl9tZW50aW9ucyc6XG5cdFx0XHRyZXR1cm4gcmVuZGVyRW50aXR5TWVudGlvbihkYXRhKTtcblx0XHRjYXNlICdtZWRpYSc6XG5cdFx0XHRyZXR1cm4gcmVuZGVyRW50aXR5TWVkaWEoZGF0YSk7XG5cdFx0Y2FzZSAnaGFzaHRhZ3MnOlxuXHRcdFx0cmV0dXJuIHJlbmRlckVudGl0eUhhc2h0YWcoZGF0YSk7XG5cdFx0Y2FzZSAndXJscyc6XG5cdFx0XHRyZXR1cm4gcmVuZGVyRW50aXR5VXJsKGRhdGEpO1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0fVxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiByZW5kZXIodHdlZXQpIHtcblx0Y29uc3QgeyB0ZXh0LCBlbnRpdGllcyA9IHsgfSB9ID0gdHdlZXQ7XG5cdGNvbnN0IHJlcGxhY2VtZW50cyA9IFtdO1xuXG5cdE9iamVjdC5rZXlzKGVudGl0aWVzKS5mb3JFYWNoKGVudGl0eUtleSA9PiB7XG5cdFx0cmVwbGFjZW1lbnRzLnB1c2goXG5cdFx0XHQuLi5lbnRpdGllc1tlbnRpdHlLZXldLm1hcChlbnRpdHkgPT4gW1xuXHRcdFx0XHRyZW5kZXJFbnRpdHkoZW50aXR5S2V5LCBlbnRpdHkpLFxuXHRcdFx0XHRlbnRpdHkuaW5kaWNlc1swXSxcblx0XHRcdFx0ZW50aXR5LmluZGljZXNbMV1cblx0XHRcdF0pXG5cdFx0KTtcblx0fSk7XG5cblx0aWYgKDAgPT09IHJlcGxhY2VtZW50cy5sZW5ndGgpIHtcblx0XHRyZXR1cm4gZXNjYXBlTWFya2Rvd24odHdlZXQudGV4dCk7XG5cdH1cblxuXHRsZXQgbGFzdFBvcyA9IHRleHQubGVuZ3RoO1xuXHRjb25zdCBwYXJ0cyA9IHJlcGxhY2VtZW50cy5zb3J0KChhLCBiKSA9PiBiWzFdIC0gYVsxXSkubWFwKHJlcGxhY2VtZW50ID0+IHtcblx0XHRsZXQgb3V0cHV0ID0gW3JlcGxhY2VtZW50WzBdXTtcblxuXHRcdGlmIChyZXBsYWNlbWVudFsyXSA8IGxhc3RQb3MpIHtcblx0XHRcdG91dHB1dC5wdXNoKFxuXHRcdFx0XHRlc2NhcGVNYXJrZG93bihcblx0XHRcdFx0XHR0ZXh0LnN1YnN0cihcblx0XHRcdFx0XHRcdHJlcGxhY2VtZW50WzJdLFxuXHRcdFx0XHRcdFx0bGFzdFBvcyAtIHJlcGxhY2VtZW50WzJdXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpXG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdGxhc3RQb3MgPSByZXBsYWNlbWVudFsxXTtcblxuXHRcdHJldHVybiBvdXRwdXQuam9pbignJyk7XG5cdH0pO1xuXG5cdGlmIChsYXN0UG9zID4gMCkge1xuXHRcdHBhcnRzLnB1c2goXG5cdFx0XHRlc2NhcGVNYXJrZG93bihcblx0XHRcdFx0dGV4dC5zdWJzdHIoMCwgbGFzdFBvcylcblx0XHRcdClcblx0XHQpO1xuXHR9XG5cblx0cmV0dXJuIHBhcnRzLnJldmVyc2UoKS5qb2luKCcnKTtcbn1cbiJdfQ== |