Template:Team:UC Davis/regex.js

From 2011.igem.org

/*!

* jQuery replaceText - v1.1 - 11/21/2009
* http://benalman.com/projects/jquery-replacetext-plugin/
* 
* Copyright (c) 2009 "Cowboy" Ben Alman
* Dual licensed under the MIT and GPL licenses.
* http://benalman.com/about/license/
*/

// Script: jQuery replaceText: String replace for your jQueries! // // *Version: 1.1, Last updated: 11/21/2009* // // Project Home - http://benalman.com/projects/jquery-replacetext-plugin/ // GitHub - http://github.com/cowboy/jquery-replacetext/ // Source - http://github.com/cowboy/jquery-replacetext/raw/master/jquery.ba-replacetext.js // (Minified) - http://github.com/cowboy/jquery-replacetext/raw/master/jquery.ba-replacetext.min.js (0.5kb) // // About: License // // Copyright (c) 2009 "Cowboy" Ben Alman, // Dual licensed under the MIT and GPL licenses. // http://benalman.com/about/license/ // // About: Examples // // This working example, complete with fully commented code, illustrates one way // in which this plugin can be used. // // replaceText - http://benalman.com/code/projects/jquery-replacetext/examples/replacetext/ // // About: Support and Testing // // Information about what version or versions of jQuery this plugin has been // tested with, and what browsers it has been tested in. // // jQuery Versions - 1.3.2, 1.4.1 // Browsers Tested - Internet Explorer 6-8, Firefox 2-3.6, Safari 3-4, Chrome, Opera 9.6-10.1. // // About: Release History // // 1.1 - (11/21/2009) Simplified the code and API substantially. // 1.0 - (11/21/2009) Initial release

(function($){

 '$:nomunge'; // Used by YUI compressor.
 
 // Method: jQuery.fn.replaceText
 // 
 // Replace text in specified elements. Note that only text content will be
 // modified, leaving all tags and attributes untouched. The new text can be
 // either text or HTML.
 // 
 // Uses the String prototype replace method, full documentation on that method
 // can be found here: 
 // 
 // https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Objects/String/Replace
 // 
 // Usage:
 // 
 // > jQuery('selector').replaceText( search, replace [, text_only ] );
 // 
 // Arguments:
 // 
 //  search - (RegExp|String) A RegExp object or substring to be replaced.
 //    Because the String prototype replace method is used internally, this
 //    argument should be specified accordingly.
 //  replace - (String|Function) The String that replaces the substring received
 //    from the search argument, or a function to be invoked to create the new
 //    substring. Because the String prototype replace method is used internally,
 //    this argument should be specified accordingly.
 //  text_only - (Boolean) If true, any HTML will be rendered as text. Defaults
 //    to false.
 // 
 // Returns:
 // 
 //  (jQuery) The initial jQuery collection of elements.
 
 $.fn.replaceText = function( search, replace, text_only ) {
   return this.each(function(){
     var node = this.firstChild,
       val,
       new_val,
       
       // Elements to be removed at the end.
       remove = [];
     
     // Only continue if firstChild exists.
     if ( node ) {
       
       // Loop over all childNodes.
       do {
         
         // Only process text nodes.
         if ( node.nodeType === 3 ) {
           
           // The original node value.
           val = node.nodeValue;
           
           // The new value.
           new_val = val.replace( search, replace );
           
           // Only replace text if the new value is actually different!
           if ( new_val !== val ) {
             
             if ( !text_only && /</.test( new_val ) ) {
               // The new value contains HTML, set it in a slower but far more
               // robust way.
               $(node).before( new_val );
               
               // Don't remove the node yet, or the loop will lose its place.
               remove.push( node );
             } else {
               // The new value contains no HTML, so it can be set in this
               // very fast, simple way.
               node.nodeValue = new_val;
             }
           }
         }
         
       } while ( node = node.nextSibling );
     }
     
     // Time to remove those elements!
     remove.length && $(remove).remove();
   });
 };  
 

})(jQuery);