PluginProbe
WPIDE – File Manager & Code Editor / 3.5.9
WPIDE – File Manager & Code Editor v3.5.9
3.5.9 3.5.8 3.5.7 2.0.14 2.0.15 2.0.16 2.0.2 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8 2.0.9 2.1 2.2 2.3 2.3.1 2.3.2 2.4.0 2.5 2.6 3.0 3.1 3.2 3.3 All 55 releases
wpide / vendor / nikic / php-parser / lib / PhpParser / Node / Scalar / DNumber.php

DNumber.php in WPIDE – File Manager & Code Editor 3.5.9, at vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/DNumber.php

78 lines 2.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php declare(strict_types=1);
2
3 namespace PhpParser\Node\Scalar;
4
5 use PhpParser\Node\Scalar;
6
7 class DNumber extends Scalar
8 {
9 /** @var float Number value */
10 public $value;
11
12 /**
13 * Constructs a float number scalar node.
14 *
15 * @param float $value Value of the number
16 * @param array $attributes Additional attributes
17 */
18 public function __construct(float $value, array $attributes = []) {
19 $this->attributes = $attributes;
20 $this->value = $value;
21 }
22
23 public function getSubNodeNames() : array {
24 return ['value'];
25 }
26
27 /**
28 * @param mixed[] $attributes
29 */
30 public static function fromString(string $str, array $attributes = []): DNumber
31 {
32 $attributes['rawValue'] = $str;
33 $float = self::parse($str);
34
35 return new DNumber($float, $attributes);
36 }
37
38 /**
39 * @internal
40 *
41 * Parses a DNUMBER token like PHP would.
42 *
43 * @param string $str A string number
44 *
45 * @return float The parsed number
46 */
47 public static function parse(string $str) : float {
48 $str = str_replace('_', '', $str);
49
50 // Check whether this is one of the special integer notations.
51 if ('0' === $str[0]) {
52 // hex
53 if ('x' === $str[1] || 'X' === $str[1]) {
54 return hexdec($str);
55 }
56
57 // bin
58 if ('b' === $str[1] || 'B' === $str[1]) {
59 return bindec($str);
60 }
61
62 // oct, but only if the string does not contain any of '.eE'.
63 if (false === strpbrk($str, '.eE')) {
64 // substr($str, 0, strcspn($str, '89')) cuts the string at the first invalid digit
65 // (8 or 9) so that only the digits before that are used.
66 return octdec(substr($str, 0, strcspn($str, '89')));
67 }
68 }
69
70 // dec
71 return (float) $str;
72 }
73
74 public function getType() : string {
75 return 'Scalar_DNumber';
76 }
77 }
78