Make WordPress Core

Changeset 33344


Ignore:
Timestamp:
07/21/2015 03:23:45 PM (9 years ago)
Author:
iseulde
Message:

Editor: word count: exclude HTML comments and entities

Also make sure type is one of the three allowed types and remove unnecessary regex flags.

See #30966.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-admin/js/word-count.js

    r33320 r33344  
    1515
    1616        if ( shortcodes && shortcodes.length ) {
    17             this.settings.shortcodesRegExp = new RegExp( '\\[\\/?(?:' + shortcodes.join( '|' ) + ')[^\\]]*?\\]', 'gi' );
     17            this.settings.shortcodesRegExp = new RegExp( '\\[\\/?(?:' + shortcodes.join( '|' ) + ')[^\\]]*?\\]', 'g' );
    1818        }
    1919    }
     
    2121    WordCounter.prototype.settings = {
    2222        HTMLRegExp: /<\/?[a-z][^>]*?>/gi,
     23        HTMLcommentRegExp: /<!--[\s\S]*?-->/g,
    2324        spaceRegExp: /&nbsp;|&#160;/gi,
    24         connectorRegExp: /--|\u2014/gi,
     25        HTMLEntityRegExp: /&\S+?;/g,
     26        connectorRegExp: /--|\u2014/g,
    2527        removeRegExp: new RegExp( [
    2628            '[',
     
    6163        wordsRegExp: /\S\s+/g,
    6264        charactersRegExp: /\S/g,
    63         allRegExp: /[^\f\n\r\t\v\u00ad\u2028\u2029]/g,
     65        allRegExp: /[^\f\n\r\t\v\u00AD\u2028\u2029]/g,
    6466        l10n: window.wordCountL10n || {}
    6567    };
     
    6870        var count = 0;
    6971
    70         type = type || this.settings.l10n.type || 'words';
     72        type = type || this.settings.l10n.type;
     73
     74        if ( type !== 'characters' && type !== 'all' ) {
     75            type = 'words';
     76        }
    7177
    7278        if ( text ) {
     
    7480
    7581            text = text.replace( this.settings.HTMLRegExp, '\n' );
     82            text = text.replace( this.settings.HTMLcommentRegExp, '' );
    7683
    7784            if ( this.settings.shortcodesRegExp ) {
     
    8289
    8390            if ( type === 'words' ) {
     91                text = text.replace( this.settings.HTMLEntityRegExp, '' );
    8492                text = text.replace( this.settings.connectorRegExp, ' ' );
    8593                text = text.replace( this.settings.removeRegExp, '' );
    8694            } else {
     95                text = text.replace( this.settings.HTMLEntityRegExp, 'a' );
    8796                text = text.replace( this.settings.astralRegExp, 'a' );
    8897            }
  • trunk/tests/qunit/wp-admin/js/word-count.js

    r33320 r33344  
    5959                characters: 1,
    6060                all: 1
     61            },
     62            {
     63                message: 'HTML comment.',
     64                string: 'one<!-- comment -->two three',
     65                words: 2,
     66                characters: 11,
     67                all: 12
     68            },
     69            {
     70                message: 'HTML entity.',
     71                string: '&gt; test',
     72                words: 1,
     73                characters: 5,
     74                all: 6
    6175            }
    6276        ], function( test ) {
Note: See TracChangeset for help on using the changeset viewer.