/** * @see SnakFormatter::formatSnak * * @param Snak $snak * * @throws InvalidArgumentException * @throws FormattingException * @return string Either plain text, wikitext or HTML, depending on the SnakFormatter provided. */ public function formatSnak(Snak $snak) { try { return $this->snakFormatter->formatSnak($snak); } catch (MismatchingDataValueTypeException $ex) { if ($ex->getDataValueType() === UnDeserializableValue::getType()) { $warningText = $this->formatWarning('wikibase-undeserializable-value'); } else { $warningText = $this->formatWarning('wikibase-snakformatter-valuetype-mismatch', $ex->getDataValueType(), $ex->getExpectedValueType()); } } catch (PropertyDataTypeLookupException $ex) { $warningText = $this->formatWarning('wikibase-snakformatter-property-not-found', $snak->getPropertyId()->getSerialization()); } catch (FormattingException $ex) { $warningText = $this->formatWarning('wikibase-snakformatter-formatting-exception', $ex->getMessage()); } if ($snak instanceof PropertyValueSnak && $this->fallbackFormatter) { $value = $snak->getDataValue(); $valueText = $this->fallbackFormatter->format($value); if ($valueText !== '') { return $valueText . ' ' . $warningText; } } return $warningText; }
/** * @dataProvider instanceProvider * * @param UnDeserializableValue $value * @param array $arguments */ public function testGetTargetType(UnDeserializableValue $value, array $arguments) { $this->assertEquals($arguments[1], $value->getTargetType()); }
/** * @param DataValue $value * * @return boolean */ private function isUnDeserializableValue(DataValue $value) { return $value->getType() === UnDeserializableValue::getType(); }