Helpers.php
2.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
<?php
namespace PhpOffice\PhpSpreadsheet\Calculation\TextData;
use PhpOffice\PhpSpreadsheet\Calculation\Calculation;
use PhpOffice\PhpSpreadsheet\Calculation\Exception as CalcExp;
use PhpOffice\PhpSpreadsheet\Calculation\Functions;
class Helpers
{
public static function convertBooleanValue(bool $value): string
{
if (Functions::getCompatibilityMode() == Functions::COMPATIBILITY_OPENOFFICE) {
return $value ? '1' : '0';
}
return ($value) ? Calculation::getTRUE() : Calculation::getFALSE();
}
/**
* @param mixed $value String value from which to extract characters
*/
public static function extractString($value): string
{
$value = Functions::flattenSingleValue($value);
if (is_bool($value)) {
return self::convertBooleanValue($value);
}
return (string) $value;
}
/**
* @param mixed $value
*/
public static function extractInt($value, int $minValue, int $gnumericNull = 0, bool $ooBoolOk = false): int
{
$value = Functions::flattenSingleValue($value);
if ($value === null) {
// usually 0, but sometimes 1 for Gnumeric
$value = (Functions::getCompatibilityMode() === Functions::COMPATIBILITY_GNUMERIC) ? $gnumericNull : 0;
}
if (is_bool($value) && ($ooBoolOk || Functions::getCompatibilityMode() !== Functions::COMPATIBILITY_OPENOFFICE)) {
$value = (int) $value;
}
if (!is_numeric($value)) {
throw new CalcExp(Functions::VALUE());
}
$value = (int) $value;
if ($value < $minValue) {
throw new CalcExp(Functions::VALUE());
}
return (int) $value;
}
/**
* @param mixed $value
*/
public static function extractFloat($value): float
{
$value = Functions::flattenSingleValue($value);
if ($value === null) {
$value = 0.0;
}
if (is_bool($value)) {
$value = (float) $value;
}
if (!is_numeric($value)) {
throw new CalcExp(Functions::VALUE());
}
return (float) $value;
}
/**
* @param mixed $value
*/
public static function validateInt($value): int
{
$value = Functions::flattenSingleValue($value);
if ($value === null) {
$value = 0;
} elseif (is_bool($value)) {
$value = (int) $value;
}
return (int) $value;
}
}