PluginProbe
BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot / 3.8.9
BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot v3.8.9
4.9.2 4.9.1 4.9.0 4.8.2 4.8.1 4.8.0 4.7.0 4.6.2 4.6.1 4.6.0 4.5.6 4.5.5 4.5.4 4.5.3 4.5.2 4.5.1 4.5.0 4.4.1 4.4.0 3.3.4 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 All 200 releases
betterdocs / includes / Dependencies / PhpParser / Node / Scalar / LNumber.php

LNumber.php in BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot 3.8.9, at includes/Dependencies/PhpParser/Node/Scalar/LNumber.php

68 lines 2.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace WPDeveloper\BetterDocs\Dependencies\PhpParser\Node\Scalar;
4
5 use WPDeveloper\BetterDocs\Dependencies\PhpParser\Error;
6 use WPDeveloper\BetterDocs\Dependencies\PhpParser\Node\Scalar;
7
8 class LNumber extends Scalar
9 {
10 /* For use in "kind" attribute */
11 const KIND_BIN = 2;
12 const KIND_OCT = 8;
13 const KIND_DEC = 10;
14 const KIND_HEX = 16;
15
16 /** @var int Number value */
17 public $value;
18
19 /**
20 * Constructs an integer number scalar node.
21 *
22 * @param int $value Value of the number
23 * @param array $attributes Additional attributes
24 */
25 public function __construct($value, array $attributes = array()) {
26 parent::__construct($attributes);
27 $this->value = $value;
28 }
29
30 public function getSubNodeNames() {
31 return array('value');
32 }
33
34 /**
35 * Constructs an LNumber node from a string number literal.
36 *
37 * @param string $str String number literal (decimal, octal, hex or binary)
38 * @param array $attributes Additional attributes
39 * @param bool $allowInvalidOctal Whether to allow invalid octal numbers (PHP 5)
40 *
41 * @return LNumber The constructed LNumber, including kind attribute
42 */
43 public static function fromString($str, array $attributes = array(), $allowInvalidOctal = false) {
44 if ('0' !== $str[0] || '0' === $str) {
45 $attributes['kind'] = LNumber::KIND_DEC;
46 return new LNumber((int) $str, $attributes);
47 }
48
49 if ('x' === $str[1] || 'X' === $str[1]) {
50 $attributes['kind'] = LNumber::KIND_HEX;
51 return new LNumber(hexdec($str), $attributes);
52 }
53
54 if ('b' === $str[1] || 'B' === $str[1]) {
55 $attributes['kind'] = LNumber::KIND_BIN;
56 return new LNumber(bindec($str), $attributes);
57 }
58
59 if (!$allowInvalidOctal && strpbrk($str, '89')) {
60 throw new Error('Invalid numeric literal', $attributes);
61 }
62
63 // use intval instead of octdec to get proper cutting behavior with malformed numbers
64 $attributes['kind'] = LNumber::KIND_OCT;
65 return new LNumber(intval($str, 8), $attributes);
66 }
67 }
68