From 55da3090d0e7faa49e40a5bce0f68634fea5fc83 Mon Sep 17 00:00:00 2001 From: Subramanya Sastry Date: Thu, 3 Feb 2022 16:01:21 -0600 Subject: [PATCH] Ensure frame args are properly set up in the pipeline Currently unused but could be useful in the future to support T301080. Change-Id: I6431ee24b9b477c8a83ffd0dd5684ec43f73a519 --- src/Utils/PipelineUtils.php | 4 ++-- src/Wt2Html/Frame.php | 5 +++-- src/Wt2Html/ParserPipeline.php | 4 ++-- src/Wt2Html/TT/TemplateHandler.php | 2 +- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/Utils/PipelineUtils.php b/src/Utils/PipelineUtils.php index 3335d0adf..3bfa42909 100644 --- a/src/Utils/PipelineUtils.php +++ b/src/Utils/PipelineUtils.php @@ -76,8 +76,8 @@ public static function getDOMFragmentToken( * - string pipelineType * - array pipelineOpts * - array tplArgs - if set, defines parameters for the child frame - * - string tplArgs.name - * - array tplArgs.attribs + * - string tplArgs['name'] + * - KV[] tplArgs['attribs'] * - string srcText - if set, defines the source text for the expansion * - SourceRange srcOffsets - if set, defines the range within the * source text that $content corresponds to diff --git a/src/Wt2Html/Frame.php b/src/Wt2Html/Frame.php index b72c797a9..7b869acae 100644 --- a/src/Wt2Html/Frame.php +++ b/src/Wt2Html/Frame.php @@ -5,6 +5,7 @@ use Wikimedia\Parsoid\Config\Env; use Wikimedia\Parsoid\Tokens\EOFTk; +use Wikimedia\Parsoid\Tokens\KV; use Wikimedia\Parsoid\Tokens\Token; use Wikimedia\Parsoid\Utils\PHPUtils; use Wikimedia\Parsoid\Utils\PipelineUtils; @@ -40,7 +41,7 @@ class Frame { /** * @param Title $title * @param Env $env - * @param array $args + * @param KV[] $args * @param string $srcText * @param ?Frame $parentFrame */ @@ -93,7 +94,7 @@ public function getSrcText(): string { /** * Create a new child frame. * @param Title $title - * @param array $args + * @param KV[] $args * @param string $srcText * @return Frame */ diff --git a/src/Wt2Html/ParserPipeline.php b/src/Wt2Html/ParserPipeline.php index 8ce742ae6..ce144b01b 100644 --- a/src/Wt2Html/ParserPipeline.php +++ b/src/Wt2Html/ParserPipeline.php @@ -219,10 +219,10 @@ public function init( array $initialState = [] ) { $srcText = $initialState['srcText'] ?? null; if ( isset( $tplArgs['title'] ) ) { $title = $tplArgs['title']; - $args = $tplArgs['attribs']; + $args = $tplArgs['attribs']; // KV[] } else { $title = $frame->getTitle(); - $args = $frame->getArgs()->args; + $args = $frame->getArgs()->args; // KV[] } $frame = $frame->newChild( $title, $args, $srcText ); } diff --git a/src/Wt2Html/TT/TemplateHandler.php b/src/Wt2Html/TT/TemplateHandler.php index fdd1af684..2f224e1c7 100644 --- a/src/Wt2Html/TT/TemplateHandler.php +++ b/src/Wt2Html/TT/TemplateHandler.php @@ -1134,7 +1134,7 @@ private function onTemplate( Token $token ): TokenHandlerResult { /* If $tgt is not null, target will be present. */ $templateName = $tgt['target']; $templateTitle = $tgt['title']; - $attribs = []; + $attribs = array_slice( $token->attribs, 1 ); // Strip template name // We still need to check for limit violations because of the // higher precedence of extension tags, which can result in nested