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

AliasGroupSerializer   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 48
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 3

Test Coverage

Coverage 95%

Importance

Changes 2
Bugs 0 Features 0
Metric Value
wmc 6
lcom 0
cbo 3
dl 0
loc 48
ccs 19
cts 20
cp 0.95
rs 10
c 2
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A serialize() 0 4 1
A getSerialized() 0 20 3
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\AliasGroup;
8
use Wikibase\DataModel\Term\AliasGroupFallback;
9
10
/**
11
 * Package private
12
 *
13
 * @license GPL-2.0+
14
 * @author Bene* < [email protected] >
15
 */
16
class AliasGroupSerializer implements Serializer {
17
18
	/**
19
	 * @param AliasGroup $object
20
	 *
21
	 * @return array[]
22
	 */
23 10
	public function serialize( $object ) {
24 10
		$this->assertIsSerializerFor( $object );
25 7
		return $this->getSerialized( $object );
26
	}
27
28 10
	private function assertIsSerializerFor( $object ) {
29 10
		if ( !( $object instanceof AliasGroup ) ) {
30 3
			throw new UnsupportedObjectException(
31
				$object,
32 3
				'AliasGroupSerializer can only serialize AliasGroup objects'
33
			);
34
		}
35 7
	}
36
37
	/**
38
	 * @param AliasGroup $aliasGroup
39
	 *
40
	 * @return array[]
41
	 */
42 7
	private function getSerialized( AliasGroup $aliasGroup ) {
43 7
		$serialization = array();
44 7
		$language = $aliasGroup->getLanguageCode();
45
46 7
		foreach ( $aliasGroup->getAliases() as $value ) {
47
			$result = array(
48 6
				'language' => $language,
49 6
				'value' => $value
50
			);
51
52 6
			if ( $aliasGroup instanceof AliasGroupFallback ) {
53 1
				$result['language'] = $aliasGroup->getActualLanguageCode();
54 1
				$result['source'] = $aliasGroup->getSourceLanguageCode();
55
			}
56
57 6
			$serialization[] = $result;
58
		}
59
60 7
		return $serialization;
61
	}
62
63
}
64