X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/449d082fcc4873c1f7d363a0d9f7409be7f6e77d..caeaf8dc94b5e3f75dc98ec92dc7b76049cdddb6:/wp-admin/js/word-count.js diff --git a/wp-admin/js/word-count.js b/wp-admin/js/word-count.js index 474056e9..0c537ba1 100644 --- a/wp-admin/js/word-count.js +++ b/wp-admin/js/word-count.js @@ -1,39 +1,44 @@ -// Word count -(function(JQ) { +/* global wordCountL10n */ +var wpWordCount; +(function($,undefined) { wpWordCount = { - init : function() { - var t = this, last = 0, co = JQ('#content'); - - JQ('#wp-word-count').html( wordCountL10n.count.replace( /%d/, '0' ) ); - 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 = JQ('#word-count'), tc = 0; + block : 0, + + wc : function(tx, type) { + var t = this, w = $('.word-count'), tc = 0; + + if ( type === undefined ) + type = wordCountL10n.type; + if ( type !== 'w' && type !== 'c' ) + type = 'w'; + + if ( t.block ) + return; - if ( t.block ) return; t.block = 1; setTimeout( function() { if ( tx ) { - tx = tx.replace( /<.[^<>]*?>/g, ' ' ).replace( / /gi, ' ' ); - tx = tx.replace( /[0-9.(),;:!?%#$¿'"_+=\\/-]*/g, '' ); - tx.replace( /\S\s+/g, function(){tc++;} ); + tx = tx.replace( t.settings.strip, ' ' ).replace( / | /gi, ' ' ); + tx = tx.replace( t.settings.clean, '' ); + tx.replace( t.settings[type], function(){tc++;} ); } w.html(tc.toString()); setTimeout( function() { t.block = 0; }, 2000 ); }, 1 ); } - } -}(jQuery)); + }; -jQuery(document).ready( function(){ wpWordCount.init(); } ); + $(document).bind( 'wpcountwords', function(e, txt) { + wpWordCount.wc(txt); + }); +}(jQuery));