diff options
Diffstat (limited to 'public/vendor/plugins/autolink')
-rw-r--r-- | public/vendor/plugins/autolink/LICENSE | 21 | ||||
-rw-r--r-- | public/vendor/plugins/autolink/autolink.js | 45 |
2 files changed, 66 insertions, 0 deletions
diff --git a/public/vendor/plugins/autolink/LICENSE b/public/vendor/plugins/autolink/LICENSE new file mode 100644 index 0000000000..bb35e8b86d --- /dev/null +++ b/public/vendor/plugins/autolink/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2015 egoist 0x142857@gmail.com + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE.
\ No newline at end of file diff --git a/public/vendor/plugins/autolink/autolink.js b/public/vendor/plugins/autolink/autolink.js new file mode 100644 index 0000000000..039cd7db24 --- /dev/null +++ b/public/vendor/plugins/autolink/autolink.js @@ -0,0 +1,45 @@ +(function () { + var re = /((([A-Za-z]{3,9}:(?:\/\/)?)(?:[\-;:&=\+\$,\w]+@)?[A-Za-z0-9\.\-]+|(?:www\.|[\-;:&=\+\$,\w]+@)[A-Za-z0-9\.\-]+)((?:\/[\+~%\/\.\w\-]*)?\??(?:[\-\+:=&;%@\.\w]*)#?(?:[\.\!\/\\\w]*))?)/g; + function textNodesUnder(node) { + var textNodes = []; + if(typeof document.createTreeWalker === 'function') { + // Efficient TreeWalker + var currentNode, walker; + walker = document.createTreeWalker(node, NodeFilter.SHOW_TEXT, null, false); + while(currentNode = walker.nextNode()) { + textNodes.push(currentNode); + } + } else { + // Less efficient recursive function + for(node = node.firstChild; node; node = node.nextSibling) { + if(node.nodeType === 3) { + textNodes.push(node); + } else { + textNodes = textNodes.concat(textNodesUnder(node)); + } + } + } + return textNodes; + } + + function processNode(node) { + re.lastIndex = 0; + var results = re.exec(node.textContent); + if(results !== null) { + if($(node).parents().filter('pre>code').length === 0) { + $(node).replaceWith( + $('<span />').html( + node.nodeValue.replace(re, '<a href="$1">$1</a>') + ) + ); + } + } + } + + jQuery.fn.autolink = function () { + this.each(function () { + textNodesUnder(this).forEach(processNode); + }); + return this; + }; +})(); |