/** * @dataProvider provideFactoryFunctions */ public function testNewParser($factoryFunctions) { $valueParserFactory = new ValueParserFactory($factoryFunctions); $options = new ParserOptions(); foreach ($valueParserFactory->getParserIds() as $id) { $parser = $valueParserFactory->newParser($id, $options); $this->assertInstanceOf('ValueParsers\\ValueParser', $parser); } }
/** * @return ValueParser * @throws LogicException */ private function getParser() { $params = $this->extractRequestParams(); $options = $this->getOptionsObject($params['options']); // Parsers are registered by datatype. // Note: parser used to be addressed by a name independent of datatype, using the 'parser' // parameter. For backwards compatibility, parsers are also registered under their old names // in $wgValueParsers, and thus in the ValueParserFactory. $name = $params['datatype'] ?: $params['parser']; if (empty($name)) { // If neither 'datatype' not 'parser' is given, tell the client to use 'datatype'. $this->errorReporter->dieError('No datatype given', 'param-illegal'); } try { $parser = $this->valueParserFactory->newParser($name, $options); return $parser; } catch (OutOfBoundsException $ex) { $this->errorReporter->dieError("Unknown datatype `{$name}`", 'unknown-datatype'); throw new LogicException('dieError() did not throw an exception'); } }