1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- /**
- * Created by Estevao on 12-01-2015.
- */
- /**
- * Input: an email address, e.g. "foo@example.com"
- *
- * Output: the email address as a mailto link, with each character
- * of the address encoded as either a decimal or hex entity, in
- * the hopes of foiling most address harvesting spam bots. E.g.:
- *
- * <a href="mailto:foo@e
- * xample.com">foo
- * @example.com</a>
- *
- * Based on a filter by Matthew Wickline, posted to the BBEdit-Talk
- * mailing list: <http://tinyurl.com/yu7ue>
- *
- */
- showdown.subParser('encodeEmailAddress', function (addr) {
- 'use strict';
- var encode = [
- function (ch) {
- return '&#' + ch.charCodeAt(0) + ';';
- },
- function (ch) {
- return '&#x' + ch.charCodeAt(0).toString(16) + ';';
- },
- function (ch) {
- return ch;
- }
- ];
- addr = 'mailto:' + addr;
- addr = addr.replace(/./g, function (ch) {
- if (ch === '@') {
- // this *must* be encoded. I insist.
- ch = encode[Math.floor(Math.random() * 2)](ch);
- } else if (ch !== ':') {
- // leave ':' alone (to spot mailto: later)
- var r = Math.random();
- // roughly 10% raw, 45% hex, 45% dec
- ch = (
- r > 0.9 ? encode[2](ch) : r > 0.45 ? encode[1](ch) : encode[0](ch)
- );
- }
- return ch;
- });
- addr = '<a href="' + addr + '">' + addr + '</a>';
- addr = addr.replace(/">.+:/g, '">'); // strip the mailto: from the visible part
- return addr;
- });
|