You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							104 lines
						
					
					
						
							2.6 KiB
						
					
					
				
			
		
		
	
	
							104 lines
						
					
					
						
							2.6 KiB
						
					
					
				var linkifyStr = (function (linkifyjs) {
 | 
						|
	'use strict';
 | 
						|
 | 
						|
	/**
 | 
						|
		Convert strings of text into linkable HTML text
 | 
						|
	*/
 | 
						|
 | 
						|
	function escapeText(text) {
 | 
						|
	  return text.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');
 | 
						|
	}
 | 
						|
 | 
						|
	function escapeAttr(href) {
 | 
						|
	  return href.replace(/"/g, '"');
 | 
						|
	}
 | 
						|
 | 
						|
	function attributesToString(attributes) {
 | 
						|
	  if (!attributes) {
 | 
						|
	    return '';
 | 
						|
	  }
 | 
						|
 | 
						|
	  var result = [];
 | 
						|
 | 
						|
	  for (var attr in attributes) {
 | 
						|
	    var val = attributes[attr] + '';
 | 
						|
	    result.push("".concat(attr, "=\"").concat(escapeAttr(val), "\""));
 | 
						|
	  }
 | 
						|
 | 
						|
	  return result.join(' ');
 | 
						|
	}
 | 
						|
	/**
 | 
						|
	 * Convert a plan text string to an HTML string with links. Expects that the
 | 
						|
	 * given strings does not contain any HTML entities. Use the linkify-html
 | 
						|
	 * interface if you need to parse HTML entities.
 | 
						|
	 *
 | 
						|
	 * @param {string} str string to linkify
 | 
						|
	 * @param {object} [opts] overridable options
 | 
						|
	 * @returns {string}
 | 
						|
	 */
 | 
						|
 | 
						|
 | 
						|
	function linkifyStr(str) {
 | 
						|
	  var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
 | 
						|
	  opts = new linkifyjs.Options(opts);
 | 
						|
	  var tokens = linkifyjs.tokenize(str);
 | 
						|
	  var result = [];
 | 
						|
 | 
						|
	  for (var i = 0; i < tokens.length; i++) {
 | 
						|
	    var token = tokens[i];
 | 
						|
 | 
						|
	    if (token.t === 'nl' && opts.nl2br) {
 | 
						|
	      result.push('<br>\n');
 | 
						|
	      continue;
 | 
						|
	    } else if (!token.isLink || !opts.check(token)) {
 | 
						|
	      result.push(escapeText(token.toString()));
 | 
						|
	      continue;
 | 
						|
	    }
 | 
						|
 | 
						|
	    var _opts$resolve = opts.resolve(token),
 | 
						|
	        formatted = _opts$resolve.formatted,
 | 
						|
	        formattedHref = _opts$resolve.formattedHref,
 | 
						|
	        tagName = _opts$resolve.tagName,
 | 
						|
	        className = _opts$resolve.className,
 | 
						|
	        target = _opts$resolve.target,
 | 
						|
	        rel = _opts$resolve.rel,
 | 
						|
	        attributes = _opts$resolve.attributes;
 | 
						|
 | 
						|
	    var link = ["<".concat(tagName, " href=\"").concat(escapeAttr(formattedHref), "\"")];
 | 
						|
 | 
						|
	    if (className) {
 | 
						|
	      link.push(" class=\"".concat(escapeAttr(className), "\""));
 | 
						|
	    }
 | 
						|
 | 
						|
	    if (target) {
 | 
						|
	      link.push(" target=\"".concat(escapeAttr(target), "\""));
 | 
						|
	    }
 | 
						|
 | 
						|
	    if (rel) {
 | 
						|
	      link.push(" rel=\"".concat(escapeAttr(rel), "\""));
 | 
						|
	    }
 | 
						|
 | 
						|
	    if (attributes) {
 | 
						|
	      link.push(" ".concat(attributesToString(attributes)));
 | 
						|
	    }
 | 
						|
 | 
						|
	    link.push(">".concat(escapeText(formatted), "</").concat(tagName, ">"));
 | 
						|
	    result.push(link.join(''));
 | 
						|
	  }
 | 
						|
 | 
						|
	  return result.join('');
 | 
						|
	}
 | 
						|
 | 
						|
	if (!String.prototype.linkify) {
 | 
						|
	  Object.defineProperty(String.prototype, 'linkify', {
 | 
						|
	    writable: false,
 | 
						|
	    value: function linkify(options) {
 | 
						|
	      return linkifyStr(this, options);
 | 
						|
	    }
 | 
						|
	  });
 | 
						|
	}
 | 
						|
 | 
						|
	return linkifyStr;
 | 
						|
 | 
						|
})(linkify);
 |