summaryrefslogtreecommitdiff
path: root/vendor
diff options
context:
space:
mode:
authorSteven Verbeek <sverbeek@modernmedia.ca>2012-03-19 21:57:29 -0300
committerSteven Verbeek <sverbeek@modernmedia.ca>2012-03-19 21:57:29 -0300
commit35d0de8f367e949c3bab50506916ca87eeb5d5ab (patch)
tree36a681fe714f608b70f595f8c5d414a943cdd370 /vendor
parent2a7cd2f1b5ed824bafafeb2004746a384be44453 (diff)
parentcadf12c60cc27c5b0b8273c1de4b190a0e88bd7d (diff)
downloadgitlab-ce-35d0de8f367e949c3bab50506916ca87eeb5d5ab.tar.gz
merging upstream changes
Diffstat (limited to 'vendor')
-rw-r--r--vendor/assets/javascripts/jquery.highlight.js53
1 files changed, 53 insertions, 0 deletions
diff --git a/vendor/assets/javascripts/jquery.highlight.js b/vendor/assets/javascripts/jquery.highlight.js
new file mode 100644
index 00000000000..7a67cf99844
--- /dev/null
+++ b/vendor/assets/javascripts/jquery.highlight.js
@@ -0,0 +1,53 @@
+/*
+
+highlight v3
+
+Highlights arbitrary terms.
+
+<http://johannburkard.de/blog/programming/javascript/highlight-javascript-text-higlighting-jquery-plugin.html>
+
+MIT license.
+
+Johann Burkard
+<http://johannburkard.de>
+<mailto:jb@eaio.com>
+
+*/
+
+jQuery.fn.highlight = function(pat) {
+ function innerHighlight(node, pat) {
+ var skip = 0;
+ if (node.nodeType == 3) {
+ var pos = node.data.toUpperCase().indexOf(pat);
+ if (pos >= 0) {
+ var spannode = document.createElement('span');
+ spannode.className = 'highlight_word';
+ var middlebit = node.splitText(pos);
+ var endbit = middlebit.splitText(pat.length);
+ var middleclone = middlebit.cloneNode(true);
+ spannode.appendChild(middleclone);
+ middlebit.parentNode.replaceChild(spannode, middlebit);
+ skip = 1;
+ }
+ }
+ else if (node.nodeType == 1 && node.childNodes && !/(script|style)/i.test(node.tagName)) {
+ for (var i = 0; i < node.childNodes.length; ++i) {
+ i += innerHighlight(node.childNodes[i], pat);
+ }
+ }
+ return skip;
+ }
+ return this.each(function() {
+ innerHighlight(this, pat.toUpperCase());
+ });
+};
+
+jQuery.fn.removeHighlight = function() {
+ return this.find("span.highlight").each(function() {
+ this.parentNode.firstChild.nodeName;
+ with (this.parentNode) {
+ replaceChild(this.firstChild, this);
+ normalize();
+ }
+ }).end();
+};