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

TermSerializer   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 41
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 3

Test Coverage

Coverage 93.75%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 5
lcom 0
cbo 3
dl 0
loc 41
ccs 15
cts 16
cp 0.9375
rs 10
c 1
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A serialize() 0 4 1
A getSerialized() 0 13 2
A assertIsSerializerFor() 0 8 2
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