X-Git-Url: http://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Ftidy%2FRemexCompatMunger.php;h=0cc99058238a78c00efd89f9cbfe1c550d8d89cd;hb=63d84811577ce990abd07e3b9d52c9f258cb7b21;hp=78a11045ed1d1e8dadf79d5f23103a0ae0907fac;hpb=c1c76c30386a9fa0760f12de1c62451a09d174a9;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/tidy/RemexCompatMunger.php b/includes/tidy/RemexCompatMunger.php index 78a11045ed..0cc9905823 100644 --- a/includes/tidy/RemexCompatMunger.php +++ b/includes/tidy/RemexCompatMunger.php @@ -72,6 +72,21 @@ class RemexCompatMunger implements TreeHandler { "mark" => true, ]; + /** + * For the purposes of this class, "metadata" elements are those that + * should neither trigger p-wrapping nor stop an outer p-wrapping, + * typically those that are themselves invisible in a browser's rendering. + * This isn't a complete list, it's just the tags that we're likely to + * encounter in practice. + * @var array + */ + private static $metadataElements = [ + 'style' => true, + 'script' => true, + 'link' => true, + 'meta' => true, + ]; + private static $formattingElements = [ 'a' => true, 'b' => true, @@ -261,14 +276,17 @@ class RemexCompatMunger implements TreeHandler { $under = $preposition === TreeBuilder::UNDER; $elementToEnd = null; - if ( $under && $parentData->isPWrapper && !$inline ) { + if ( isset( self::$metadataElements[$elementName] ) ) { + // The element is a metadata element, that we allow to appear in + // both inline and block contexts. + $this->trace( 'insert metadata' ); + } elseif ( $under && $parentData->isPWrapper && !$inline ) { // [B/b] The element is non-inline and the parent is a p-wrapper, // close the parent and insert into its parent instead $this->trace( 'insert B/b' ); $newParent = $this->serializer->getParentNode( $parent ); $parent = $newParent; $parentData = $parent->snData; - $pElement = $parentData->childPElement; $parentData->childPElement = null; $newRef = $refElement->userData; } elseif ( $under && $parentData->isSplittable