/** * @param $markup * @param Parser $parser * @param PPFrame $frame * @param array $params * * @return string * @throws UnimplementedNodeException when node used in markup does not exists * @throws XmlMarkupParseErrorException xml not well formatted * @throws InvalidInfoboxParamsException when unsupported attributes exist in params array */ public function render($markup, Parser $parser, PPFrame $frame, $params = null) { $infoboxNode = Nodes\NodeFactory::newFromXML($markup, $this->getFrameParams($frame)); $infoboxNode->setExternalParser(new Wikia\PortableInfobox\Parser\MediaWikiParserService($parser, $frame)); //get params if not overridden if (!isset($params)) { $params = $infoboxNode instanceof Nodes\NodeInfobox ? $infoboxNode->getParams() : []; } $infoboxParamsValidator = new Wikia\PortableInfobox\Helpers\InfoboParamsValidator(); $infoboxParamsValidator->validateParams($params); $data = $infoboxNode->getRenderData(); //save for later api usage $this->saveToParserOutput($parser->getOutput(), $infoboxNode); $theme = $this->getThemeWithDefault($params, $frame); $layout = $this->getLayout($params); return (new PortableInfoboxRenderService())->renderInfobox($data, $theme, $layout); }
protected function getChildNodes() { if (!isset($this->children)) { $this->children = []; foreach ($this->xmlNode as $child) { $this->children[] = NodeFactory::newFromSimpleXml($child, $this->infoboxData)->setExternalParser($this->externalParser); } } return $this->children; }
/** * @covers NodeGroup::getData * @dataProvider groupNodeTestProvider * * @param $markup * @param $params * @param $expected */ public function testNodeGroup($markup, $params, $expected) { $node = \Wikia\PortableInfobox\Parser\Nodes\NodeFactory::newFromXML($markup, $params); $this->assertEquals($expected, $node->getData()); }
/** * @covers NodeImage::getSource * @dataProvider sourceProvider * * @param $markup * @param $expected */ public function testSource($markup, $expected) { $node = \Wikia\PortableInfobox\Parser\Nodes\NodeFactory::newFromXML($markup, []); $this->assertEquals($expected, $node->getSource()); }