nginxsonarrradarrplexorganizrdashboardbookmarkapplication-dashboardmuximuxlandingpagestartpagelandinghtpcserverhomepagesabnzbdheimdallembycouchpotatonzbget
		
		
		
		
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							68 lines
						
					
					
						
							1.8 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							68 lines
						
					
					
						
							1.8 KiB
						
					
					
				| <?php declare(strict_types=1); | |
| 
 | |
| namespace PhpParser\Node\Scalar; | |
| 
 | |
| use PhpParser\Node\Scalar; | |
| 
 | |
| class DNumber extends Scalar | |
| { | |
|     /** @var float Number value */ | |
|     public $value; | |
| 
 | |
|     /** | |
|      * Constructs a float number scalar node. | |
|      * | |
|      * @param float $value      Value of the number | |
|      * @param array $attributes Additional attributes | |
|      */ | |
|     public function __construct(float $value, array $attributes = []) { | |
|         parent::__construct($attributes); | |
|         $this->value = $value; | |
|     } | |
| 
 | |
|     public function getSubNodeNames() : array { | |
|         return ['value']; | |
|     } | |
| 
 | |
|     /** | |
|      * @internal | |
|      * | |
|      * Parses a DNUMBER token like PHP would. | |
|      * | |
|      * @param string $str A string number | |
|      * | |
|      * @return float The parsed number | |
|      */ | |
|     public static function parse(string $str) : float { | |
|         // if string contains any of .eE just cast it to float | |
|         if (false !== strpbrk($str, '.eE')) { | |
|             return (float) $str; | |
|         } | |
| 
 | |
|         // otherwise it's an integer notation that overflowed into a float | |
|         // if it starts with 0 it's one of the special integer notations | |
|         if ('0' === $str[0]) { | |
|             // hex | |
|             if ('x' === $str[1] || 'X' === $str[1]) { | |
|                 return hexdec($str); | |
|             } | |
| 
 | |
|             // bin | |
|             if ('b' === $str[1] || 'B' === $str[1]) { | |
|                 return bindec($str); | |
|             } | |
| 
 | |
|             // oct | |
|             // substr($str, 0, strcspn($str, '89')) cuts the string at the first invalid digit (8 or 9) | |
|             // so that only the digits before that are used | |
|             return octdec(substr($str, 0, strcspn($str, '89'))); | |
|         } | |
| 
 | |
|         // dec | |
|         return (float) $str; | |
|     } | |
|      | |
|     public function getType() : string { | |
|         return 'Scalar_DNumber'; | |
|     } | |
| }
 | |
| 
 |