Completed
Push — master ( 1597db...37b3e5 )
by mw
16:02
created

ParserFunctionFactory   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 100
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 7

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 5
c 0
b 0
f 0
lcom 0
cbo 7
dl 0
loc 100
rs 10
ccs 36
cts 36
cp 1

3 Methods

Rating   Name   Duplication   Size   Complexity  
B newInterlanguageLinkParserFunctionDefinition() 0 46 3
A newInterlanguageListParserFunctionDefinition() 0 13 1
A newAnnotatedLanguageParserFunctionDefinition() 0 13 1
1
<?php
2
3
namespace SIL;
4
5
use SMW\ApplicationFactory;
6
use Parser;
7
8
/**
9
 * @license GNU GPL v2+
10
 * @since 1.0
11
 *
12
 * @author mwjames
13
 */
14
class ParserFunctionFactory {
15
16
	/**
17
	 * @since  1.0
18
	 *
19
	 * @param InterlanguageLinksLookup $interlanguageLinksLookup
20
	 * @param PageContentLanguageOnTheFlyModifier $pageContentLanguageOnTheFlyModifier
21
	 *
22
	 * @return array
23
	 */
24 8
	public function newInterlanguageLinkParserFunctionDefinition( InterlanguageLinksLookup $interlanguageLinksLookup, PageContentLanguageOnTheFlyModifier $pageContentLanguageOnTheFlyModifier ) {
25
26
		$interlanguageLinkParserFunctionDefinition = function( $parser, $languageCode, $linkReference = '' ) use ( $interlanguageLinksLookup, $pageContentLanguageOnTheFlyModifier ) {
27
28 8
			$pageContentLanguageDbModifier = new PageContentLanguageDbModifier(
29 8
				$parser->getTitle()
30 8
			);
31
32
			// MW 1.24+
33 8
			$pageContentLanguageDbModifier->markAsPageLanguageByDB(
34 8
				isset( $GLOBALS['wgPageLanguageUseDB'] ) ? $GLOBALS['wgPageLanguageUseDB'] : false
35 8
			);
36
37 8
			$parserData = ApplicationFactory::getInstance()->newParserData(
38 8
				$parser->getTitle(),
39 8
				$parser->getOutput()
40 8
			);
41
42 8
			$languageLinkAnnotator = new LanguageLinkAnnotator( $parserData );
43
44 8
			$siteLanguageLinksParserOutputAppender = new SiteLanguageLinksParserOutputAppender(
45 8
				$parser->getOutput(),
46
				$interlanguageLinksLookup
47 8
			);
48
49 8
			$interlanguageLinkParserFunction = new InterlanguageLinkParserFunction(
50 8
				$parser->getTitle(),
51 8
				$languageLinkAnnotator,
52 8
				$siteLanguageLinksParserOutputAppender,
53 8
				$pageContentLanguageOnTheFlyModifier,
54
				$pageContentLanguageDbModifier
55 8
			);
56
57 8
			$interlanguageLinkParserFunction->setRevisionModeState(
58 8
				$GLOBALS['wgRequest']->getVal( 'action' ) === 'edit' || $GLOBALS['wgRequest']->getCheck( 'wpPreview' )
59 8
			);
60
61 8
			$interlanguageLinkParserFunction->setInterlanguageLinksHideState(
62 8
				$GLOBALS['wgHideInterlanguageLinks']
63 8
			);
64
65 8
			return $interlanguageLinkParserFunction->parse( $languageCode, $linkReference );
66 3
		};
67
68 3
		return array( 'interlanguagelink', $interlanguageLinkParserFunctionDefinition, Parser::SFH_NO_HASH );
69
	}
70
71
	/**
72
	 * @since  1.0
73
	 *
74
	 * @param InterlanguageLinksLookup $interlanguageLinksLookup
75
	 *
76
	 * @return array
77
	 */
78
	public function newInterlanguageListParserFunctionDefinition( InterlanguageLinksLookup $interlanguageLinksLookup ) {
79
80 3
		$interlanguageListParserFunctionDefinition = function( $parser, $target, $template = '' ) use ( $interlanguageLinksLookup ) {
81
82 2
			$interlanguageListParserFunction = new InterlanguageListParserFunction(
83
				$interlanguageLinksLookup
84 2
			);
85
86 2
			return $interlanguageListParserFunction->parse( $target, $template );
87 3
		};
88
89 3
		return array( 'interlanguagelist', $interlanguageListParserFunctionDefinition, Parser::SFH_NO_HASH );
90
	}
91
92
	/**
93
	 * @since  1.4
94
	 *
95
	 * @param InterlanguageLinksLookup $interlanguageLinksLookup
96
	 *
97
	 * @return array
98
	 */
99
	public function newAnnotatedLanguageParserFunctionDefinition( InterlanguageLinksLookup $interlanguageLinksLookup ) {
100
101
		$annotatedLanguageParserFunctionDefinition = function( $parser, $template = '' ) use ( $interlanguageLinksLookup ) {
102
103
			$annotatedLanguageParserFunction = new AnnotatedLanguageParserFunction(
104
				$interlanguageLinksLookup
105
			);
106
107
			return $annotatedLanguageParserFunction->parse( $parser->getTitle(), $template );
108
		};
109
110
		return array( 'annotatedlanguage', $annotatedLanguageParserFunctionDefinition, Parser::SFH_NO_HASH );
111
	}
112
113
}
114