From ac2d2c9b1bb42f3cad9f176b4072c2db58978d6d Mon Sep 17 00:00:00 2001 From: Mark Thorn Date: Tue, 3 Mar 2020 10:03:28 -0800 Subject: [PATCH] Fix ArgumentError with leading and trailing underscores in number strings. --- lib/psych/scalar_scanner.rb | 2 +- test/psych/test_scalar_scanner.rb | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/psych/scalar_scanner.rb b/lib/psych/scalar_scanner.rb index cea2a453..d565a336 100644 --- a/lib/psych/scalar_scanner.rb +++ b/lib/psych/scalar_scanner.rb @@ -101,7 +101,7 @@ def tokenize string ### # Parse and return an int from +string+ def parse_int string - Integer(string.gsub(/[,]/, '')) + Integer(string.gsub(/[,_]/, '')) end ### diff --git a/test/psych/test_scalar_scanner.rb b/test/psych/test_scalar_scanner.rb index d12a9053..1bd6488e 100644 --- a/test/psych/test_scalar_scanner.rb +++ b/test/psych/test_scalar_scanner.rb @@ -120,6 +120,7 @@ def test_scan_int_commas_and_underscores assert_equal 123_456_789, ss.tokenize('123_456_789') assert_equal 123_456_789, ss.tokenize('123,456,789') assert_equal 123_456_789, ss.tokenize('1_2,3,4_5,6_789') + assert_equal 123_456_789, ss.tokenize('1_2,3,4_5,6_789_') assert_equal 0b010101010, ss.tokenize('0b010101010') assert_equal 0b010101010, ss.tokenize('0b0,1_0,1_,0,1_01,0') @@ -129,6 +130,8 @@ def test_scan_int_commas_and_underscores assert_equal 0x123456789abcdef, ss.tokenize('0x123456789abcdef') assert_equal 0x123456789abcdef, ss.tokenize('0x12_,34,_56,_789abcdef') + assert_equal 0x123456789abcdef, ss.tokenize('0x_12_,34,_56,_789abcdef') + assert_equal 0x123456789abcdef, ss.tokenize('0x12_,34,_56,_789abcdef__') end end end