In `wptexturize()`, allow dashes before and after curly quotes. Example: This is what she said---"Wow that is cool."

Adds unit tests.

Props adamsilverstein, miqrogroove.
Fixes #20342.

Built from https://develop.svn.wordpress.org/trunk@28726


git-svn-id: http://core.svn.wordpress.org/trunk@28540 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
Scott Taylor 2014-06-10 14:22:15 +00:00
parent 3d3c166f11
commit 4c067bd327
1 changed files with 7 additions and 6 deletions

View File

@ -91,8 +91,8 @@ function wptexturize($text) {
$cockney = $cockneyreplace = array();
}
$static_characters = array_merge( array( '---', '...', '``', '\'\'', ' (tm)' ), $cockney );
$static_replacements = array_merge( array( $em_dash, '…', $opening_quote, $closing_quote, ' ™' ), $cockneyreplace );
$static_characters = array_merge( array( '...', '``', '\'\'', ' (tm)' ), $cockney );
$static_replacements = array_merge( array( '…', $opening_quote, $closing_quote, ' ™' ), $cockneyreplace );
$spaces = wp_spaces_regexp();
@ -113,9 +113,9 @@ function wptexturize($text) {
$dynamic[ '/\'(?=\d)/' ] = $apos;
}
// Single quote at start, or preceded by (, {, <, [, ", or spaces.
// Single quote at start, or preceded by (, {, <, [, ", -, or spaces.
if ( "'" !== $opening_single_quote ) {
$dynamic[ '/(?<=\A|[([{<"]|' . $spaces . ')\'/' ] = $opening_single_quote;
$dynamic[ '/(?<=\A|[([{<"\-]|' . $spaces . ')\'/' ] = $opening_single_quote;
}
// Apostrophe in a word. No spaces or double apostrophes.
@ -133,9 +133,9 @@ function wptexturize($text) {
$dynamic[ '/(?<=\d)\'/' ] = $prime;
}
// Double quote at start, or preceded by (, {, <, [, or spaces, and not followed by spaces.
// Double quote at start, or preceded by (, {, <, [, -, or spaces, and not followed by spaces.
if ( '"' !== $opening_quote ) {
$dynamic[ '/(?<=\A|[([{<]|' . $spaces . ')"(?!' . $spaces . ')/' ] = $opening_quote;
$dynamic[ '/(?<=\A|[([{<\-]|' . $spaces . ')"(?!' . $spaces . ')/' ] = $opening_quote;
}
// Any remaining double quotes.
@ -149,6 +149,7 @@ function wptexturize($text) {
}
// Dashes and spaces
$dynamic[ '/---/' ] = $em_dash;
$dynamic[ '/(?<=' . $spaces . ')--(?=' . $spaces . ')/' ] = $em_dash;
$dynamic[ '/(?<!xn)--/' ] = $en_dash;
$dynamic[ '/(?<=' . $spaces . ')-(?=' . $spaces . ')/' ] = $en_dash;