Passed
Push — master ( 1624f2...3d792a )
by
unknown
01:39
created

TermSerializer::serialize()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 4
ccs 3
cts 3
cp 1
rs 10
cc 1
eloc 3
nc 1
nop 1
crap 1
1
<?php
2
3
namespace Wikibase\DataModel\Serializers;
4
5
use Serializers\Exceptions\UnsupportedObjectException;
6
use Serializers\Serializer;
7
use Wikibase\DataModel\Term\Term;
8
use Wikibase\DataModel\Term\TermFallback;
9
10
/**
11
 * Package private
12
 *
13
 * @license GPL-2.0+
14
 * @author Addshore
15
 */
16
class TermSerializer implements Serializer {
17
18
	/**
19
	 * @param Term $object
20
	 *
21
	 * @return string[]
22
	 */
23 7
	public function serialize( $object ) {
24 7
		$this->assertIsSerializerFor( $object );
25 6
		return $this->getSerialized( $object );
26
	}
27
28 7
	private function assertIsSerializerFor( $object ) {
29 7
		if ( !( $object instanceof Term ) ) {
30 1
			throw new UnsupportedObjectException(
31
				$object,
32 1
				'TermSerializer can only serialize Term objects'
33
			);
34
		}
35 6
	}
36
37
	/**
38
	 * @param Term $term
39
	 *
40
	 * @return string[]
41
	 */
42 6
	private function getSerialized( Term $term ) {
43
		$result = array(
44 6
			'language' => $term->getLanguageCode(),
45 6
			'value' => $term->getText(),
46
		);
47
48 6
		if ( $term instanceof TermFallback ) {
49 1
			$result['language'] = $term->getActualLanguageCode();
50 1
			$result['source'] = $term->getSourceLanguageCode();
51
		}
52
53 6
		return $result;
54
	}
55
56
}
57