X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Fparser%2FStripState.php;h=b11dc8c388de2679649c56873b7795577a1f7af7;hb=c3f5ee0973fba27bab9a50f83eb637de72f7c659;hp=5d1743e61c24f997c983d51c83ab0892222011f7;hpb=ca28853e225fb8c3a2715c6f5bcc558d9e482590;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/parser/StripState.php b/includes/parser/StripState.php index 5d1743e61c..b11dc8c388 100644 --- a/includes/parser/StripState.php +++ b/includes/parser/StripState.php @@ -37,15 +37,20 @@ class StripState { const UNSTRIP_RECURSION_LIMIT = 20; /** - * @param string $prefix + * @param string|null $prefix + * @since 1.26 The prefix argument should be omitted, as the strip marker + * prefix string is now a constant. */ - public function __construct( $prefix ) { - $this->prefix = $prefix; + public function __construct( $prefix = null ) { + if ( $prefix !== null ) { + wfDeprecated( __METHOD__ . ' with called with $prefix argument' . + ' (call with no arguments instead)', '1.26' ); + } $this->data = array( 'nowiki' => array(), 'general' => array() ); - $this->regex = "/{$this->prefix}([^\x7f]+)" . Parser::MARKER_SUFFIX . '/'; + $this->regex = '/' . Parser::MARKER_PREFIX . "([^\x7f]+)" . Parser::MARKER_SUFFIX . '/'; $this->circularRefGuard = array(); } @@ -117,12 +122,10 @@ class StripState { return $text; } - wfProfileIn( __METHOD__ ); $oldType = $this->tempType; $this->tempType = $type; $text = preg_replace_callback( $this->regex, array( $this, 'unstripCallback' ), $text ); $this->tempType = $oldType; - wfProfileOut( __METHOD__ ); return $text; } @@ -146,7 +149,11 @@ class StripState { } $this->circularRefGuard[$marker] = true; $this->recursionLevel++; - $ret = $this->unstripType( $this->tempType, $this->data[$this->tempType][$marker] ); + $value = $this->data[$this->tempType][$marker]; + if ( $value instanceof Closure ) { + $value = $value(); + } + $ret = $this->unstripType( $this->tempType, $value ); $this->recursionLevel--; unset( $this->circularRefGuard[$marker] ); return $ret; @@ -164,10 +171,10 @@ class StripState { * @return StripState */ public function getSubState( $text ) { - $subState = new StripState( $this->prefix ); + $subState = new StripState(); $pos = 0; while ( true ) { - $startPos = strpos( $text, $this->prefix, $pos ); + $startPos = strpos( $text, Parser::MARKER_PREFIX, $pos ); $endPos = strpos( $text, Parser::MARKER_SUFFIX, $pos ); if ( $startPos === false || $endPos === false ) { break; @@ -200,7 +207,7 @@ class StripState { * @return array */ public function merge( $otherState, $texts ) { - $mergePrefix = Parser::getRandomString(); + $mergePrefix = wfRandomString( 16 ); foreach ( $otherState->data as $type => $items ) { foreach ( $items as $key => $value ) { @@ -220,7 +227,7 @@ class StripState { */ protected function mergeCallback( $m ) { $key = $m[1]; - return "{$this->prefix}{$this->tempMergePrefix}-$key" . Parser::MARKER_SUFFIX; + return Parser::MARKER_PREFIX . $this->tempMergePrefix . '-' . $key . Parser::MARKER_SUFFIX; } /**