/** * @param Parser $parser * @param PPFrame $frame * @param array $args * * @return array Wikitext */ public function runPropertyParserFunction(Parser $parser, PPFrame $frame, array $args) { $propertyLabelOrId = $frame->expand($args[0]); unset($args[0]); // Create a child frame, so that we can access arguments by name. $childFrame = $frame->newChild($args, $parser->getTitle()); $entityId = $this->getEntityIdForStatementListProvider($parser, $childFrame, $args); if ($entityId === null) { return $this->buildResult(''); } $renderer = $this->rendererFactory->newRendererFromParser($parser); $rendered = $renderer->render($entityId, $propertyLabelOrId); $result = $this->buildResult($rendered); // Track usage of "other" (that is, not label/title/sitelinks) data from the item. $usageAcc = new ParserOutputUsageAccumulator($parser->getOutput()); $usageAcc->addOtherUsage($entityId); return $result; }