Code coverage report for tweet.md/index.js

Statements: 60.53% (46 / 76)      Branches: 31.03% (9 / 29)      Functions: 68.75% (11 / 16)      Lines: 82.93% (34 / 41)      Ignored: none     

All files » tweet.md/ » index.js
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 1021 4 1         12   1     4 1 1     1       1 12   12 12 12     1 1   1                       1   3   3 4                 3 2     3 3 3   1 1     1             1   1     1               1                   1  
'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, '&lt;'], [/\>/g, '&gt;']].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==