HierarchyRendererFactory   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 59
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 4

Test Coverage

Coverage 96.15%

Importance

Changes 0
Metric Value
dl 0
loc 59
ccs 25
cts 26
cp 0.9615
rs 10
c 0
b 0
f 0
wmc 7
lcom 0
cbo 4

3 Methods

Rating   Name   Duplication   Size   Complexity  
A newPageRenderer() 0 12 3
A getPathStyle() 0 17 1
A newTreeListRenderer() 0 20 3
1
<?php
2
3
namespace SubPageList\Lister\UI;
4
5
use SubPageList\Lister\UI\PageRenderer\LinkingPageRenderer;
6
use SubPageList\Lister\UI\PageRenderer\PlainPageRenderer;
7
use SubPageList\Lister\UI\PageRenderer\TemplatePageRenderer;
8
9
/**
10
 * @since 1.2
11
 *
12
 * @licence GNU GPL v2+
13
 * @author Jeroen De Dauw < [email protected] >
14
 */
15
class HierarchyRendererFactory {
16
17
	/**
18
	 * @param array $options
19
	 *
20
	 * @return HierarchyRenderer
21
	 */
22 16
	public function newTreeListRenderer( array $options ) {
23
		$treeListOptions = [
24 16
			TreeListRenderer::OPT_SHOW_TOP_PAGE => $options['showpage'],
25
		];
26
27 16
		if ( $options['kidsonly'] ) {
28 1
			$treeListOptions[TreeListRenderer::OPT_MAX_DEPTH] = 1;
29
		}
30
31 16
		if ( $options['format'] === 'ol' ) {
32
			$treeListOptions[TreeListRenderer::OPT_FORMAT] = TreeListRenderer::FORMAT_OL;
33
		}
34
		
35 16
		$treeListOptions[TreeListRenderer::OPT_ADDLEVEL] = $options['addlevel'];
36
37 16
		return new TreeListRenderer(
38 16
			$this->newPageRenderer( $options ),
39
			$treeListOptions
40
		);
41
	}
42
43 16
	private function newPageRenderer( array $options ) {
44 16
		$renderer = new PlainPageRenderer( $this->getPathStyle( $options['pathstyle'] ) );
45
46 16
		if ( $options['template'] !== '' ) {
47 1
			$renderer = new TemplatePageRenderer( $renderer, $options['template'] );
48
		}
49 15
		else if ( $options['links'] ) {
50 14
			$renderer = new LinkingPageRenderer( $renderer );
51
		}
52
53 16
		return $renderer;
54
	}
55
56 16
	private function getPathStyle( $pathStyle ) {
57
		$styles = [
58 16
			'none' => PlainPageRenderer::PATH_NONE,
59 16
			'no' => PlainPageRenderer::PATH_NONE,
60
61 16
			'subpagename' => PlainPageRenderer::PATH_SUB_PAGE,
62 16
			'children' => PlainPageRenderer::PATH_SUB_PAGE,
63 16
			'notparent' => PlainPageRenderer::PATH_SUB_PAGE,
64
65 16
			'full' => PlainPageRenderer::PATH_FULL,
66 16
			'fullpagename' => PlainPageRenderer::PATH_FULL,
67
68 16
			'pagename' => PlainPageRenderer::PATH_NO_NS,
69
		];
70
71 16
		return $styles[$pathStyle];
72
	}
73
}