Emoji: before parsing added nodes test if the text in them contains emoji chars. That speeds up the processing quite a bit.

See #32125.
Built from https://develop.svn.wordpress.org/trunk@32335


git-svn-id: http://core.svn.wordpress.org/trunk@32306 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
Andrew Ozz 2015-05-03 19:08:24 +00:00
parent 4e971bea9f
commit 86674d41af
4 changed files with 22 additions and 5 deletions

File diff suppressed because one or more lines are too long

View File

@ -70,7 +70,7 @@
node = node.parentNode;
}
if ( node && node.nodeType === 1 ) {
if ( node && node.nodeType === 1 && test( node.textContent ) ) {
parse( node );
}
}
@ -84,6 +84,22 @@
parse( document.body );
}
/**
* Test if a text string contains emoji characters
*
* @since 4.3.0
*
* @param {String} text The string to test
* @returns Boolean
*/
function test( text ) {
if ( text && twemoji ) {
return twemoji.test( text );
}
return false;
}
/**
* Given an element or string, parse any emoji characters into Twemoji images.
*
@ -144,7 +160,8 @@
return {
replaceEmoji: replaceEmoji,
parse: parse
parse: parse,
test: test
};
}

View File

@ -1 +1 @@
!function(a,b){function c(){function c(){if(!i){if("undefined"==typeof a.twemoji){if(j>600)return;return a.clearTimeout(f),f=a.setTimeout(c,50),void j++}e=a.twemoji,i=!0,g&&new g(function(a){for(var b,c,e,f,g=a.length;g--;){if(b=a[g].addedNodes,c=a[g].removedNodes,e=b.length,1===e&&1===c.length&&3===b[0].nodeType&&"IMG"===c[0].nodeName&&b[0].data===c[0].alt)return;for(;e--;)f=b[e],3===f.nodeType&&(f=f.parentNode),f&&1===f.nodeType&&d(f)}}).observe(document.body,{childList:!0,subtree:!0}),d(document.body)}}function d(a,c){return h&&e?(c=c||{},e.parse(a,{base:b.baseUrl,ext:b.ext,className:c.className||"emoji",imgAttr:c.imgAttr,callback:function(a,c){switch(a){case"a9":case"ae":case"2122":case"2194":case"2660":case"2663":case"2665":case"2666":return!1}return b.supports.flag||!b.supports.simple||/^1f1(?:e[6-9a-f]|f[0-9a-f])-1f1(?:e[6-9a-f]|f[0-9a-f])$/.test(a)?"".concat(c.base,a,c.ext):!1}})):a}var e,f,g=a.MutationObserver||a.WebKitMutationObserver||a.MozMutationObserver,h=!1,i=!1,j=0;return b&&(h=!b.supports.simple||!b.supports.flag,b.DOMReady?c():b.readyCallback=c),{replaceEmoji:h,parse:d}}a.wp=a.wp||{},a.wp.emoji=new c}(window,window._wpemojiSettings);
!function(a,b){function c(){function c(){if(!j){if("undefined"==typeof a.twemoji){if(k>600)return;return a.clearTimeout(g),g=a.setTimeout(c,50),void k++}f=a.twemoji,j=!0,h&&new h(function(a){for(var b,c,f,g,h=a.length;h--;){if(b=a[h].addedNodes,c=a[h].removedNodes,f=b.length,1===f&&1===c.length&&3===b[0].nodeType&&"IMG"===c[0].nodeName&&b[0].data===c[0].alt)return;for(;f--;)g=b[f],3===g.nodeType&&(g=g.parentNode),g&&1===g.nodeType&&d(g.textContent)&&e(g)}}).observe(document.body,{childList:!0,subtree:!0}),e(document.body)}}function d(a){return a&&f?f.test(a):!1}function e(a,c){return i&&f?(c=c||{},f.parse(a,{base:b.baseUrl,ext:b.ext,className:c.className||"emoji",imgAttr:c.imgAttr,callback:function(a,c){switch(a){case"a9":case"ae":case"2122":case"2194":case"2660":case"2663":case"2665":case"2666":return!1}return b.supports.flag||!b.supports.simple||/^1f1(?:e[6-9a-f]|f[0-9a-f])-1f1(?:e[6-9a-f]|f[0-9a-f])$/.test(a)?"".concat(c.base,a,c.ext):!1}})):a}var f,g,h=a.MutationObserver||a.WebKitMutationObserver||a.MozMutationObserver,i=!1,j=!1,k=0;return b&&(i=!b.supports.simple||!b.supports.flag,b.DOMReady?c():b.readyCallback=c),{replaceEmoji:i,parse:e,test:d}}a.wp=a.wp||{},a.wp.emoji=new c}(window,window._wpemojiSettings);

View File

@ -4,7 +4,7 @@
*
* @global string $wp_version
*/
$wp_version = '4.3-alpha-32334';
$wp_version = '4.3-alpha-32335';
/**
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.