Completed
Push — master ( 3b553a...0a5d2e )
by Jean-Christophe
01:30
created

Yuml::setClassContent()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 3
rs 10
c 0
b 0
f 0
cc 1
eloc 2
nc 1
nop 1
1
<?php
2
3
namespace micro\utils\yuml;
4
5
class Yuml {
6
	public static $classMask='[{classContent}]';
7
	public static $classSeparator='|';
8
	public static $memberSeparator=';';
9
	public static $parameterSeparator='‚';
10
	public static $parameterTypeSeparator=':';
11
	public static $groupeSeparator=",";
12
	public static $propertyMask='{access}{name}{type}';
13
	public static $methodMask='{access}{name}({parameters}){type}';
14
	public static $public='+';
15
	public static $protected='#';
16
	public static $private='-';
17
18
	public static function parseMask($element,$variable,$value) {
19
		$result=preg_replace('/(\{)'.$variable.'(\})/sim', $value, $element);
20
		return $result;
21
	}
22
23
	public static function parseMaskArray($element,$variables,$values) {
24
		$result=$element;
25
		$countValues=\sizeof($values);
26
		$maxVariables=\sizeof($variables)-1;
27
		for($i=0;$i<$countValues;$i++){
28
			$j=\min($maxVariables,$i);
29
			$result=self::parseMask($result, $variables[$j], $values[$i]);
30
		}
31
		return $result;
32
	}
33
34
	public static function getNamesInMask($mask){
35
		\preg_match_all('@\{(.*?)\}@sim', $mask,$matches);
36
		if(isset($matches[1]))
37
			return $matches[1];
38
		return [];
39
	}
40
41
	private static function replaceMaskValues($mask,$values){
42
		return self::parseMaskArray($mask, self::getNamesInMask($mask), $values);
43
	}
44
45
	public static function setPropertyVariables($values){
46
		return self::replaceMaskValues(self::$propertyMask, $values);
47
	}
48
49
	public static function setMethodVariables($values){
50
		return self::replaceMaskValues(self::$methodMask, $values);
51
	}
52
53
	public static function setClassContent($content){
54
		return self::parseMask(self::$classMask, 'classContent', $content);
55
	}
56
}
57