web/wp-admin/js/word-count.dev.js
changeset 194 32102edaa81b
parent 136 bde1974c263b
--- a/web/wp-admin/js/word-count.dev.js	Thu Sep 16 15:45:36 2010 +0000
+++ b/web/wp-admin/js/word-count.dev.js	Mon Nov 19 18:26:13 2012 +0100
@@ -1,32 +1,33 @@
-// Word count
-(function($) {
+(function($,undefined) {
 	wpWordCount = {
 
-		init : function() {
-			var t = this, last = 0, co = $('#content');
-
-			$('#wp-word-count').html( wordCountL10n.count.replace( /%d/, '<span id="word-count">0</span>' ) );
-			t.block = 0;
-			t.wc(co.val());
-			co.keyup( function(e) {
-				if ( e.keyCode == last ) return true;
-				if ( 13 == e.keyCode || 8 == last || 46 == last ) t.wc(co.val());
-				last = e.keyCode;
-				return true;
-			});
+		settings : {
+			strip : /<[a-zA-Z\/][^<>]*>/g, // strip HTML tags
+			clean : /[0-9.(),;:!?%#$¿'"_+=\\/-]+/g, // regexp to remove punctuation, etc.
+			w : /\S\s+/g, // word-counting regexp
+			c : /\S/g // char-counting regexp for asian languages
 		},
 
-		wc : function(tx) {
-			var t = this, w = $('#word-count'), tc = 0;
+		block : 0,
+
+		wc : function(tx, type) {
+			var t = this, w = $('.word-count'), tc = 0;
 
-			if ( t.block ) return;
+			if ( type === undefined )
+				type = wordCountL10n.type;
+			if ( type !== 'w' && type !== 'c' )
+				type = 'w';
+
+			if ( t.block )
+				return;
+
 			t.block = 1;
 
 			setTimeout( function() {
 				if ( tx ) {
-					tx = tx.replace( /<.[^<>]*?>/g, ' ' ).replace( /&nbsp;|&#160;/gi, ' ' );
-					tx = tx.replace( /[0-9.(),;:!?%#$¿'"_+=\\/-]*/g, '' );
-					tx.replace( /\S\s+/g, function(){tc++;} );
+					tx = tx.replace( t.settings.strip, ' ' ).replace( /&nbsp;|&#160;/gi, ' ' );
+					tx = tx.replace( t.settings.clean, '' );
+					tx.replace( t.settings[type], function(){tc++;} );
 				}
 				w.html(tc.toString());
 
@@ -35,5 +36,7 @@
 		}
 	}
 
-	$(document).ready( function(){ wpWordCount.init(); } );
+	$(document).bind( 'wpcountwords', function(e, txt) {
+		wpWordCount.wc(txt);
+	});
 }(jQuery));