JSFiddle - React, Tailwind, and code Playground
by harperj1029
JavaScript
var uri = function(url, displayLength) {
var public = {};
url = url || '';
var r = /^(?:([^:\/?\#]+):)?(?:\/\/([^\/?\#]*))?([^?\#]*)(?:\?([^\#]*))?(?:\#(.*))?/;
var parts = url.match(r);
public.scheme = parts[1] || '';
public.authority = parts[2] || '';
public.path = parts[3] || '';
public.query = parts[4] || '';
public.fragment = parts[5] || '';
public.displayText = function() {
var length = displayLength || 20;
var result = (public.authority.replace('www.', '') + public.path.replace('www.', '')).substring(0, length);
if (result.length > 20) {
result = result.substring(0, 17) + '...';
}
return result;
};
public.toString = function() {
var result = (public.scheme || 'http') + '://';
if (public.authority) {
result += public.authority;
}
if (public.path) {
result += public.path;
}
if (public.query) {
result += '?' + public.query;
}
if (public.fragment) {
result += '#' + public.fragment;
}
return result;
};
return public;
};
var log = function(message) {
document.write(message + "<br/>");
};
Array.prototype.sum = function(predicate) {
predicate = predicate ||
function(match) {
if (typeof match == "string") {
return match.length;
}
return match;
};
var result = 0;
for (var i = 0; i < this.length; i++) {
result += predicate(this[i]);
}
return result;
};
var linkRegex = /\b(?:(?:https?|ftp|file):\/\/|www\.|ftp\.)(?:\([-A-Z0-9+&@#/%=~_|$?!:,.]*\)|[-A-Z0-9+&@#/%=~_|$?!:,.])*(?:\([-A-Z0-9+&@#/%=~_|$?!:,.]*\)|[A-Z0-9+&@#/%=~_|$])/gi;
var shortenUrls = function(input) {
var matches = (input.match(linkRegex) || []);
for (var i = 0; i < matches.length; i++) {
var uri = new uri(matches[i]);
input = input.replace(matches[i], '<a class="chat-link"...