Tabs::trim()   C
last analyzed

Complexity

Conditions 8
Paths 26

Size

Total Lines 37
Code Lines 19

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 37
rs 5.3846
cc 8
eloc 19
nc 26
nop 1
1
<?php
2
3
/**
4
 * This software package is licensed under `AGPL, Commercial` license[s].
5
 *
6
 * @package maslosoft/zamm
7
 * @license AGPL, Commercial
8
 *
9
 * @copyright Copyright (c) Peter Maselkowski <[email protected]>
10
 * @link https://maslosoft.com/zamm/
11
 */
12
13
namespace Maslosoft\Zamm\Helpers;
14
15
/**
16
 * Tabs
17
 *
18
 * @author Piotr Maselkowski <pmaselkowski at gmail.com>
19
 */
20
class Tabs
21
{
22
23
	public static function trim(&$lines)
24
	{
25
		$string = false;
26
		if(is_string($lines))
27
		{
28
			$string = true;
29
			$lines = explode(PHP_EOL, $lines);
30
		}
31
		if(empty($lines))
32
		{
33
			return;
34
		}
35
		// Trim empty tabs columns
36
		$minTabs = 666;
37
		foreach ($lines as $line)
38
		{
39
			$matches = [];
40
			preg_match("~^\t*~", $line, $matches);
41
			if (!isset($matches[0]))
42
			{
43
				continue;
44
			}
45
			$minTabs = min([$minTabs, strlen($matches[0])]);
46
		}
47
		
48
		if ($minTabs < 666)
49
		{
50
			foreach ($lines as &$line)
51
			{
52
				$line = preg_replace("~^\t{{$minTabs}}~", '', $line);
53
			}
54
		}
55
		if($string)
56
		{
57
			$lines = implode(PHP_EOL, $lines);
58
		}
59
	}
60
61
}
62