Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit4597c12

Browse files
committed
[Yaml] Allow using _ in some numeric notations
1 parent0b67fa3 commit4597c12

File tree

2 files changed

+18
-3
lines changed

2 files changed

+18
-3
lines changed

‎src/Symfony/Component/Yaml/Inline.php‎

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,7 @@ public static function dump($value, $flags = 0)
206206
case Escaper::requiresDoubleQuoting($value):
207207
return Escaper::escapeWithDoubleQuotes($value);
208208
case Escaper::requiresSingleQuoting($value):
209+
casepreg_match('{^[0-9]+[_0-9]*$}',$value):
209210
casepreg_match(self::getHexRegex(),$value):
210211
casepreg_match(self::getTimestampRegex(),$value):
211212
return Escaper::escapeWithSingleQuotes($value);
@@ -564,6 +565,8 @@ private static function evaluateScalar($scalar, $flags, $references = array())
564565
return;
565566
case0 ===strpos($scalar,'!!float'):
566567
return (float)substr($scalar,8);
568+
casepreg_match('{^[+-]?[0-9][0-9_]*$}',$scalar):
569+
$scalar =str_replace('_','', (string)$scalar);
567570
casectype_digit($scalar):
568571
$raw =$scalar;
569572
$cast = (int)$scalar;
@@ -576,6 +579,8 @@ private static function evaluateScalar($scalar, $flags, $references = array())
576579
return'0' ==$scalar[1] ?octdec($scalar) : (((string)$raw === (string)$cast) ?$cast :$raw);
577580
caseis_numeric($scalar):
578581
casepreg_match(self::getHexRegex(),$scalar):
582+
$scalar =str_replace('_','',$scalar);
583+
579584
return'0x' ===$scalar[0].$scalar[1] ?hexdec($scalar) : (float)$scalar;
580585
case'.inf' ===$scalarLower:
581586
case'.nan' ===$scalarLower:
@@ -584,8 +589,8 @@ private static function evaluateScalar($scalar, $flags, $references = array())
584589
returnlog(0);
585590
case0 ===strpos($scalar,'!!binary'):
586591
returnself::evaluateBinaryScalar(substr($scalar,9));
587-
casepreg_match('/^(-|\+)?[0-9,]+(\.[0-9]+)?$/',$scalar):
588-
return (float)str_replace(',','',$scalar);
592+
casepreg_match('/^(-|\+)?[0-9][0-9,_]*(\.[0-9_]+)?$/',$scalar):
593+
return (float)str_replace(array(',','_'),'',$scalar);
589594
casepreg_match(self::getTimestampRegex(),$scalar):
590595
if (Yaml::PARSE_DATETIME &$flags) {
591596
returnnew \DateTime($scalar,new \DateTimeZone('UTC'));
@@ -662,6 +667,6 @@ private static function getTimestampRegex()
662667
*/
663668
privatestaticfunctiongetHexRegex()
664669
{
665-
return'~^0x[0-9a-f]++$~i';
670+
return'~^0x[0-9a-f_]++$~i';
666671
}
667672
}

‎src/Symfony/Component/Yaml/Tests/InlineTest.php‎

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -286,11 +286,16 @@ public function getTestsForParse()
286286
array('true',true),
287287
array('12',12),
288288
array('-12', -12),
289+
array('1_2',12),
290+
array('_12','_12'),
291+
array('12_',12),
289292
array('"quoted string"','quoted string'),
290293
array("'quoted string'",'quoted string'),
291294
array('12.30e+02',12.30e+02),
292295
array('0x4D2',0x4D2),
296+
array('0x_4_D_2_',0x4D2),
293297
array('02333',02333),
298+
array('0_2_3_3_3',02333),
294299
array('.Inf', -log(0)),
295300
array('-.Inf',log(0)),
296301
array("'686e444'",'686e444'),
@@ -438,10 +443,15 @@ public function getTestsForDump()
438443
array('false',false),
439444
array('true',true),
440445
array('12',12),
446+
array("'1_2'",'1_2'),
447+
array('_12','_12'),
448+
array("'12_'",'12_'),
441449
array("'quoted string'",'quoted string'),
442450
array('!!float 1230',12.30e+02),
443451
array('1234',0x4D2),
444452
array('1243',02333),
453+
array("'0x_4_D_2_'",'0x_4_D_2_'),
454+
array("'0_2_3_3_3'",'0_2_3_3_3'),
445455
array('.Inf', -log(0)),
446456
array('-.Inf',log(0)),
447457
array("'686e444'",'686e444'),

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp