<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[52789] trunk: Formatting: Make terms in `wpautop()` and `shortcode_unautop()` more welcoming and inclusive.</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { white-space: pre-line; overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta" style="font-size: 105%">
<dt style="float: left; width: 6em; font-weight: bold">Revision</dt> <dd><a style="font-weight: bold" href="https://core.trac.wordpress.org/changeset/52789">52789</a><script type="application/ld+json">{"@context":"http://schema.org","@type":"EmailMessage","description":"Review this Commit","action":{"@type":"ViewAction","url":"https://core.trac.wordpress.org/changeset/52789","name":"Review Commit"}}</script></dd>
<dt style="float: left; width: 6em; font-weight: bold">Author</dt> <dd>hellofromTonya</dd>
<dt style="float: left; width: 6em; font-weight: bold">Date</dt> <dd>2022-02-23 20:01:55 +0000 (Wed, 23 Feb 2022)</dd>
</dl>

<pre style='padding-left: 1em; margin: 2em 0; border-left: 2px solid #ccc; line-height: 1.25; font-size: 105%; font-family: sans-serif'>Formatting: Make terms in `wpautop()` and `shortcode_unautop()` more welcoming and inclusive.

The developer facing humor in these functions were from a different era of WordPress. Tolerance for in-jokes and other developer facing humor has decreased over the years. Terms like "pee" and "tinkle" may make some folks chuckle while for others it makes them uncomfortable.

Terminology of the past is being (or has been) re-evaluated to transform words into a language that are inclusive and welcome for all. This commit is part of that effort as it replaces.

Follow-up <a href="https://core.trac.wordpress.org/changeset/13">[13]</a>, <a href="https://core.trac.wordpress.org/changeset/9255">[9255]</a>.

Props ricomoorman, tzipporahwitty, ironprogrammer, peterwilsoncc, jeremyfelt, Viper007Bond, rmccue, SergeyBiryukov, hellofromTonya.
Fixes <a href="https://core.trac.wordpress.org/ticket/25615">#25615</a>.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunksrcwpincludesformattingphp">trunk/src/wp-includes/formatting.php</a></li>
<li><a href="#trunktestsphpunittestsformattingwpAutopphp">trunk/tests/phpunit/tests/formatting/wpAutop.php</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunksrcwpincludesformattingphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/formatting.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/formatting.php      2022-02-22 16:05:13 UTC (rev 52788)
+++ trunk/src/wp-includes/formatting.php        2022-02-23 20:01:55 UTC (rev 52789)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -433,74 +433,74 @@
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * @since 0.71
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @param string $pee The text which has to be formatted.
- * @param bool   $br  Optional. If set, this will convert all remaining line breaks
- *                    after paragraphing. Line breaks within `<script>`, `<style>`,
- *                    and `<svg>` tags are not affected. Default true.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @param string $text The text which has to be formatted.
+ * @param bool   $br   Optional. If set, this will convert all remaining line breaks
+ *                     after paragraphing. Line breaks within `<script>`, `<style>`,
+ *                     and `<svg>` tags are not affected. Default true.
</ins><span class="cx" style="display: block; padding: 0 10px">  * @return string Text which has been converted into correct paragraph tags.
</span><span class="cx" style="display: block; padding: 0 10px">  */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-function wpautop( $pee, $br = true ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+function wpautop( $text, $br = true ) {
</ins><span class="cx" style="display: block; padding: 0 10px">         $pre_tags = array();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if ( trim( $pee ) === '' ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ if ( trim( $text ) === '' ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                 return '';
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        // Just to make things a little easier, pad the end.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        $pee = $pee . "\n";
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $text = $text . "\n";
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /*
</span><span class="cx" style="display: block; padding: 0 10px">         * Pre tags shouldn't be touched by autop.
</span><span class="cx" style="display: block; padding: 0 10px">         * Replace pre tags with placeholders and bring them back after autop.
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if ( strpos( $pee, '<pre' ) !== false ) {
-               $pee_parts = explode( '</pre>', $pee );
-               $last_pee  = array_pop( $pee_parts );
-               $pee       = '';
-               $i         = 0;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ if ( strpos( $text, '<pre' ) !== false ) {
+               $text_parts = explode( '</pre>', $text );
+               $last_part  = array_pop( $text_parts );
+               $text       = '';
+               $i          = 0;
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                foreach ( $pee_parts as $pee_part ) {
-                       $start = strpos( $pee_part, '<pre' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         foreach ( $text_parts as $text_part ) {
+                       $start = strpos( $text_part, '<pre' );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        // Malformed HTML?
</span><span class="cx" style="display: block; padding: 0 10px">                        if ( false === $start ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                $pee .= $pee_part;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         $text .= $text_part;
</ins><span class="cx" style="display: block; padding: 0 10px">                                 continue;
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        $name              = "<pre wp-pre-tag-$i></pre>";
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $pre_tags[ $name ] = substr( $pee_part, $start ) . '</pre>';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $pre_tags[ $name ] = substr( $text_part, $start ) . '</pre>';
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $pee .= substr( $pee_part, 0, $start ) . $name;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $text .= substr( $text_part, 0, $start ) . $name;
</ins><span class="cx" style="display: block; padding: 0 10px">                         $i++;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $pee .= $last_pee;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $text .= $last_part;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">        // Change multiple <br>'s into two line breaks, which will turn into paragraphs.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        $pee = preg_replace( '|<br\s*/?>\s*<br\s*/?>|', "\n\n", $pee );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $text = preg_replace( '|<br\s*/?>\s*<br\s*/?>|', "\n\n", $text );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        $allblocks = '(?:table|thead|tfoot|caption|col|colgroup|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|form|map|area|blockquote|address|math|style|p|h[1-6]|hr|fieldset|legend|section|article|aside|hgroup|header|footer|nav|figure|figcaption|details|menu|summary)';
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        // Add a double line break above block-level opening tags.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        $pee = preg_replace( '!(<' . $allblocks . '[\s/>])!', "\n\n$1", $pee );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $text = preg_replace( '!(<' . $allblocks . '[\s/>])!', "\n\n$1", $text );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        // Add a double line break below block-level closing tags.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        $pee = preg_replace( '!(</' . $allblocks . '>)!', "$1\n\n", $pee );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $text = preg_replace( '!(</' . $allblocks . '>)!', "$1\n\n", $text );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        // Add a double line break after hr tags, which are self closing.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        $pee = preg_replace( '!(<hr\s*?/?>)!', "$1\n\n", $pee );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $text = preg_replace( '!(<hr\s*?/?>)!', "$1\n\n", $text );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        // Standardize newline characters to "\n".
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        $pee = str_replace( array( "\r\n", "\r" ), "\n", $pee );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $text = str_replace( array( "\r\n", "\r" ), "\n", $text );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        // Find newlines in all elements and add placeholders.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        $pee = wp_replace_in_html_tags( $pee, array( "\n" => ' <!-- wpnl --> ' ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $text = wp_replace_in_html_tags( $text, array( "\n" => ' <!-- wpnl --> ' ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        // Collapse line breaks before and after <option> elements so they don't get autop'd.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if ( strpos( $pee, '<option' ) !== false ) {
-               $pee = preg_replace( '|\s*<option|', '<option', $pee );
-               $pee = preg_replace( '|</option>\s*|', '</option>', $pee );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ if ( strpos( $text, '<option' ) !== false ) {
+               $text = preg_replace( '|\s*<option|', '<option', $text );
+               $text = preg_replace( '|</option>\s*|', '</option>', $text );
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /*
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -507,10 +507,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * Collapse line breaks inside <object> elements, before <param> and <embed> elements
</span><span class="cx" style="display: block; padding: 0 10px">         * so they don't get autop'd.
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if ( strpos( $pee, '</object>' ) !== false ) {
-               $pee = preg_replace( '|(<object[^>]*>)\s*|', '$1', $pee );
-               $pee = preg_replace( '|\s*</object>|', '</object>', $pee );
-               $pee = preg_replace( '%\s*(</?(?:param|embed)[^>]*>)\s*%', '$1', $pee );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ if ( strpos( $text, '</object>' ) !== false ) {
+               $text = preg_replace( '|(<object[^>]*>)\s*|', '$1', $text );
+               $text = preg_replace( '|\s*</object>|', '</object>', $text );
+               $text = preg_replace( '%\s*(</?(?:param|embed)[^>]*>)\s*%', '$1', $text );
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /*
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -517,87 +517,87 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * Collapse line breaks inside <audio> and <video> elements,
</span><span class="cx" style="display: block; padding: 0 10px">         * before and after <source> and <track> elements.
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if ( strpos( $pee, '<source' ) !== false || strpos( $pee, '<track' ) !== false ) {
-               $pee = preg_replace( '%([<\[](?:audio|video)[^>\]]*[>\]])\s*%', '$1', $pee );
-               $pee = preg_replace( '%\s*([<\[]/(?:audio|video)[>\]])%', '$1', $pee );
-               $pee = preg_replace( '%\s*(<(?:source|track)[^>]*>)\s*%', '$1', $pee );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ if ( strpos( $text, '<source' ) !== false || strpos( $text, '<track' ) !== false ) {
+               $text = preg_replace( '%([<\[](?:audio|video)[^>\]]*[>\]])\s*%', '$1', $text );
+               $text = preg_replace( '%\s*([<\[]/(?:audio|video)[>\]])%', '$1', $text );
+               $text = preg_replace( '%\s*(<(?:source|track)[^>]*>)\s*%', '$1', $text );
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        // Collapse line breaks before and after <figcaption> elements.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if ( strpos( $pee, '<figcaption' ) !== false ) {
-               $pee = preg_replace( '|\s*(<figcaption[^>]*>)|', '$1', $pee );
-               $pee = preg_replace( '|</figcaption>\s*|', '</figcaption>', $pee );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ if ( strpos( $text, '<figcaption' ) !== false ) {
+               $text = preg_replace( '|\s*(<figcaption[^>]*>)|', '$1', $text );
+               $text = preg_replace( '|</figcaption>\s*|', '</figcaption>', $text );
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        // Remove more than two contiguous line breaks.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        $pee = preg_replace( "/\n\n+/", "\n\n", $pee );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $text = preg_replace( "/\n\n+/", "\n\n", $text );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        // Split up the contents into an array of strings, separated by double line breaks.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        $pees = preg_split( '/\n\s*\n/', $pee, -1, PREG_SPLIT_NO_EMPTY );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $paragraphs = preg_split( '/\n\s*\n/', $text, -1, PREG_SPLIT_NO_EMPTY );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        // Reset $pee prior to rebuilding.
-       $pee = '';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ // Reset $text prior to rebuilding.
+       $text = '';
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        // Rebuild the content as a string, wrapping every bit with a <p>.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        foreach ( $pees as $tinkle ) {
-               $pee .= '<p>' . trim( $tinkle, "\n" ) . "</p>\n";
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ foreach ( $paragraphs as $paragraph ) {
+               $text .= '<p>' . trim( $paragraph, "\n" ) . "</p>\n";
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        // Under certain strange conditions it could create a P of entirely whitespace.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        $pee = preg_replace( '|<p>\s*</p>|', '', $pee );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $text = preg_replace( '|<p>\s*</p>|', '', $text );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        // Add a closing <p> inside <div>, <address>, or <form> tag if missing.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        $pee = preg_replace( '!<p>([^<]+)</(div|address|form)>!', '<p>$1</p></$2>', $pee );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $text = preg_replace( '!<p>([^<]+)</(div|address|form)>!', '<p>$1</p></$2>', $text );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        // If an opening or closing block element tag is wrapped in a <p>, unwrap it.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        $pee = preg_replace( '!<p>\s*(</?' . $allblocks . '[^>]*>)\s*</p>!', '$1', $pee );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $text = preg_replace( '!<p>\s*(</?' . $allblocks . '[^>]*>)\s*</p>!', '$1', $text );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        // In some cases <li> may get wrapped in <p>, fix them.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        $pee = preg_replace( '|<p>(<li.+?)</p>|', '$1', $pee );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $text = preg_replace( '|<p>(<li.+?)</p>|', '$1', $text );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        // If a <blockquote> is wrapped with a <p>, move it inside the <blockquote>.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        $pee = preg_replace( '|<p><blockquote([^>]*)>|i', '<blockquote$1><p>', $pee );
-       $pee = str_replace( '</blockquote></p>', '</p></blockquote>', $pee );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $text = preg_replace( '|<p><blockquote([^>]*)>|i', '<blockquote$1><p>', $text );
+       $text = str_replace( '</blockquote></p>', '</p></blockquote>', $text );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        // If an opening or closing block element tag is preceded by an opening <p> tag, remove it.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        $pee = preg_replace( '!<p>\s*(</?' . $allblocks . '[^>]*>)!', '$1', $pee );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $text = preg_replace( '!<p>\s*(</?' . $allblocks . '[^>]*>)!', '$1', $text );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        // If an opening or closing block element tag is followed by a closing <p> tag, remove it.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        $pee = preg_replace( '!(</?' . $allblocks . '[^>]*>)\s*</p>!', '$1', $pee );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $text = preg_replace( '!(</?' . $allblocks . '[^>]*>)\s*</p>!', '$1', $text );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        // Optionally insert line breaks.
</span><span class="cx" style="display: block; padding: 0 10px">        if ( $br ) {
</span><span class="cx" style="display: block; padding: 0 10px">                // Replace newlines that shouldn't be touched with a placeholder.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $pee = preg_replace_callback( '/<(script|style|svg).*?<\/\\1>/s', '_autop_newline_preservation_helper', $pee );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $text = preg_replace_callback( '/<(script|style|svg).*?<\/\\1>/s', '_autop_newline_preservation_helper', $text );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Normalize <br>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $pee = str_replace( array( '<br>', '<br/>' ), '<br />', $pee );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $text = str_replace( array( '<br>', '<br/>' ), '<br />', $text );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Replace any new line characters that aren't preceded by a <br /> with a <br />.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $pee = preg_replace( '|(?<!<br />)\s*\n|', "<br />\n", $pee );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $text = preg_replace( '|(?<!<br />)\s*\n|', "<br />\n", $text );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Replace newline placeholders with newlines.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $pee = str_replace( '<WPPreserveNewline />', "\n", $pee );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $text = str_replace( '<WPPreserveNewline />', "\n", $text );
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        // If a <br /> tag is after an opening or closing block tag, remove it.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        $pee = preg_replace( '!(</?' . $allblocks . '[^>]*>)\s*<br />!', '$1', $pee );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $text = preg_replace( '!(</?' . $allblocks . '[^>]*>)\s*<br />!', '$1', $text );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        // If a <br /> tag is before a subset of opening or closing block tags, remove it.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        $pee = preg_replace( '!<br />(\s*</?(?:p|li|div|dl|dd|dt|th|pre|td|ul|ol)[^>]*>)!', '$1', $pee );
-       $pee = preg_replace( "|\n</p>$|", '</p>', $pee );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $text = preg_replace( '!<br />(\s*</?(?:p|li|div|dl|dd|dt|th|pre|td|ul|ol)[^>]*>)!', '$1', $text );
+       $text = preg_replace( "|\n</p>$|", '</p>', $text );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        // Replace placeholder <pre> tags with their original content.
</span><span class="cx" style="display: block; padding: 0 10px">        if ( ! empty( $pre_tags ) ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $pee = str_replace( array_keys( $pre_tags ), array_values( $pre_tags ), $pee );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $text = str_replace( array_keys( $pre_tags ), array_values( $pre_tags ), $text );
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        // Restore newlines in all elements.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if ( false !== strpos( $pee, '<!-- wpnl -->' ) ) {
-               $pee = str_replace( array( ' <!-- wpnl --> ', '<!-- wpnl -->' ), "\n", $pee );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ if ( false !== strpos( $text, '<!-- wpnl -->' ) ) {
+               $text = str_replace( array( ' <!-- wpnl --> ', '<!-- wpnl -->' ), "\n", $text );
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return $pee;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ return $text;
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -814,14 +814,14 @@
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * @global array $shortcode_tags
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @param string $pee The content.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @param string $text The content.
</ins><span class="cx" style="display: block; padding: 0 10px">  * @return string The filtered content.
</span><span class="cx" style="display: block; padding: 0 10px">  */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-function shortcode_unautop( $pee ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+function shortcode_unautop( $text ) {
</ins><span class="cx" style="display: block; padding: 0 10px">         global $shortcode_tags;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        if ( empty( $shortcode_tags ) || ! is_array( $shortcode_tags ) ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                return $pee;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         return $text;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        $tagregexp = implode( '|', array_map( 'preg_quote', array_keys( $shortcode_tags ) ) );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -861,7 +861,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                . '/';
</span><span class="cx" style="display: block; padding: 0 10px">        // phpcs:enable
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return preg_replace( $pattern, '$1', $pee );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ return preg_replace( $pattern, '$1', $text );
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span></span></pre></div>
<a id="trunktestsphpunittestsformattingwpAutopphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/tests/phpunit/tests/formatting/wpAutop.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/tests/phpunit/tests/formatting/wpAutop.php  2022-02-22 16:05:13 UTC (rev 52788)
+++ trunk/tests/phpunit/tests/formatting/wpAutop.php    2022-02-23 20:01:55 UTC (rev 52789)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -531,7 +531,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="cx" style="display: block; padding: 0 10px">         * @ticket 4857
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        public function test_that_text_before_blocks_is_peed() {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ public function test_that_text_before_blocks_is_wrapped_in_a_paragraph() {
</ins><span class="cx" style="display: block; padding: 0 10px">                 $content  = 'a<div>b</div>';
</span><span class="cx" style="display: block; padding: 0 10px">                $expected = "<p>a</p>\n<div>b</div>";
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -565,7 +565,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="cx" style="display: block; padding: 0 10px">         * @ticket 14674
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        public function test_the_hr_is_not_peed() {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ public function test_the_hr_is_not_wrapped_in_a_paragraph() {
</ins><span class="cx" style="display: block; padding: 0 10px">                 $content  = 'paragraph1<hr>paragraph2';
</span><span class="cx" style="display: block; padding: 0 10px">                $expected = "<p>paragraph1</p>\n<hr>\n<p>paragraph2</p>";
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span></span></pre>
</div>
</div>

</body>
</html>