/**
  * @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);
 }
Exemple #2
0
 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;
 }
Exemple #3
0
 /**
  * @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());
 }
Exemple #4
0
 /**
  * @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());
 }