Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package rubygem-tomlrb for openSUSE:Factory checked in at 2022-08-09 15:26:56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/rubygem-tomlrb (Old) and /work/SRC/openSUSE:Factory/.rubygem-tomlrb.new.1521 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "rubygem-tomlrb" Tue Aug 9 15:26:56 2022 rev:6 rq:993526 version:2.0.3 Changes: -------- --- /work/SRC/openSUSE:Factory/rubygem-tomlrb/rubygem-tomlrb.changes 2021-01-21 21:54:38.445776730 +0100 +++ /work/SRC/openSUSE:Factory/.rubygem-tomlrb.new.1521/rubygem-tomlrb.changes 2022-08-09 15:27:13.969433255 +0200 @@ -1,0 +2,6 @@ +Thu Aug 4 13:32:38 UTC 2022 - Stephan Kulow <co...@suse.com> + +updated to version 2.0.3 + no changelog found + +------------------------------------------------------------------- Old: ---- tomlrb-2.0.1.gem New: ---- tomlrb-2.0.3.gem ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ rubygem-tomlrb.spec ++++++ --- /var/tmp/diff_new_pack.YbgV3H/_old 2022-08-09 15:27:14.473434695 +0200 +++ /var/tmp/diff_new_pack.YbgV3H/_new 2022-08-09 15:27:14.477434706 +0200 @@ -1,7 +1,7 @@ # # spec file for package rubygem-tomlrb # -# Copyright (c) 2021 SUSE LLC +# Copyright (c) 2022 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -24,7 +24,7 @@ # Name: rubygem-tomlrb -Version: 2.0.1 +Version: 2.0.3 Release: 0 %define mod_name tomlrb %define mod_full_name %{mod_name}-%{version} ++++++ tomlrb-2.0.1.gem -> tomlrb-2.0.3.gem ++++++ Binary files old/checksums.yaml.gz and new/checksums.yaml.gz differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/tomlrb/generated_parser.rb new/lib/tomlrb/generated_parser.rb --- old/lib/tomlrb/generated_parser.rb 2020-12-20 02:42:11.000000000 +0100 +++ new/lib/tomlrb/generated_parser.rb 2022-05-28 14:09:33.000000000 +0200 @@ -1,6 +1,6 @@ # # DO NOT MODIFY!!!! -# This file is automatically generated by Racc 1.5.1 +# This file is automatically generated by Racc 1.6.0 # from Racc grammar file "". # @@ -10,94 +10,100 @@ ##### State transition tables begin ### racc_action_table = [ - 2, 43, 16, 41, 17, 42, 18, 44, 45, 19, - 20, 14, 21, 22, 8, 4, 10, 48, 49, 12, - 23, 39, 69, 70, 71, 72, 67, 68, 64, 65, - 62, 63, 66, 52, 36, 56, 46, 53, 12, 69, - 70, 71, 72, 67, 68, 64, 65, 62, 63, 66, - 84, 83, 56, 39, 75, 12, 69, 70, 71, 72, - 67, 68, 64, 65, 62, 63, 66, 88, 80, 56, - 86, 81, 12, 69, 70, 71, 72, 67, 68, 64, - 65, 62, 63, 66, 88, 41, 56, 86, nil, 12, - 69, 70, 71, 72, 67, 68, 64, 65, 62, 63, - 66, 88, nil, 56, 86, nil, 12, 69, 70, 71, - 72, 67, 68, 64, 65, 62, 63, 66, 88, nil, - 56, 86, 29, 12, 30, nil, 31, nil, nil, 32, - 33, 27, 34, 35, 29, nil, 30, 25, 31, nil, - nil, 32, 33, 78, 34, 35, 16, nil, 17, 25, - 18, nil, nil, 19, 20, 74, 21, 22, 93, nil, - nil, 91, nil, nil, nil, 92 ] + 2, 45, 16, 56, 17, 44, 18, 55, 23, 19, + 20, 14, 21, 22, 8, 4, 10, 36, 16, 12, + 17, 48, 18, 46, 47, 19, 20, 42, 21, 22, + 50, 51, 87, 86, 39, 54, 39, 72, 73, 74, + 75, 70, 71, 67, 68, 65, 66, 69, 78, nil, + 59, nil, nil, 12, 72, 73, 74, 75, 70, 71, + 67, 68, 65, 66, 69, nil, nil, 59, nil, nil, + 12, 72, 73, 74, 75, 70, 71, 67, 68, 65, + 66, 69, 91, nil, 59, 89, nil, 12, 72, 73, + 74, 75, 70, 71, 67, 68, 65, 66, 69, 91, + nil, 59, 89, nil, 12, 72, 73, 74, 75, 70, + 71, 67, 68, 65, 66, 69, 91, nil, 59, 89, + nil, 12, 72, 73, 74, 75, 70, 71, 67, 68, + 65, 66, 69, 91, nil, 59, 89, 29, 12, 30, + nil, 31, nil, nil, 32, 33, 27, 34, 35, 29, + nil, 30, 25, 31, nil, nil, 32, 33, 81, 34, + 35, 16, nil, 17, 25, 18, nil, nil, 19, 20, + 77, 21, 22, 16, nil, 17, nil, 18, nil, nil, + 19, 20, 42, 21, 22, 16, nil, 17, nil, 18, + nil, nil, 19, 20, 85, 21, 22, 95, nil, nil, + 93, nil, nil, nil, 94 ] racc_action_check = [ - 1, 13, 1, 11, 1, 13, 1, 24, 24, 1, - 1, 1, 1, 1, 1, 1, 1, 26, 26, 1, - 2, 11, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 40, 10, 42, 25, 40, 42, 53, - 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, - 54, 54, 53, 38, 48, 53, 55, 55, 55, 55, - 55, 55, 55, 55, 55, 55, 55, 55, 51, 55, - 55, 52, 55, 88, 88, 88, 88, 88, 88, 88, - 88, 88, 88, 88, 88, 80, 88, 88, nil, 88, - 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, - 92, 92, nil, 92, 92, nil, 92, 93, 93, 93, - 93, 93, 93, 93, 93, 93, 93, 93, 93, nil, - 93, 93, 9, 93, 9, nil, 9, nil, nil, 9, - 9, 9, 9, 9, 49, nil, 49, 9, 49, nil, - nil, 49, 49, 49, 49, 49, 43, nil, 43, 49, - 43, nil, nil, 43, 43, 43, 43, 43, 87, nil, - nil, 87, nil, nil, nil, 87 ] + 1, 13, 1, 41, 1, 13, 1, 41, 2, 1, + 1, 1, 1, 1, 1, 1, 1, 10, 11, 1, + 11, 25, 11, 24, 24, 11, 11, 11, 11, 11, + 26, 26, 57, 57, 38, 40, 11, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, 50, nil, + 44, nil, nil, 44, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, nil, nil, 55, nil, nil, + 55, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, nil, 58, 58, nil, 58, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + nil, 91, 91, nil, 91, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, nil, 94, 94, + nil, 94, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, nil, 95, 95, 9, 95, 9, + nil, 9, nil, nil, 9, 9, 9, 9, 9, 51, + nil, 51, 9, 51, nil, nil, 51, 51, 51, 51, + 51, 45, nil, 45, 51, 45, nil, nil, 45, 45, + 45, 45, 45, 54, nil, 54, nil, 54, nil, nil, + 54, 54, 54, 54, 54, 56, nil, 56, nil, 56, + nil, nil, 56, 56, 56, 56, 56, 90, nil, nil, + 90, nil, nil, nil, 90 ] racc_action_pointer = [ - nil, 0, 20, nil, nil, nil, nil, nil, nil, 120, - 18, 1, nil, -17, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, -7, 19, 0, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 33, nil, - 15, nil, 19, 144, nil, nil, nil, nil, 37, 132, - nil, 47, 69, 36, 36, 53, nil, nil, nil, nil, + nil, 0, 8, nil, nil, nil, nil, nil, nil, 135, + 1, 16, nil, -17, nil, nil, nil, nil, nil, nil, + nil, nil, nil, nil, 9, 4, 13, nil, nil, nil, + nil, nil, nil, nil, nil, nil, nil, nil, 14, nil, + 14, -15, nil, nil, 34, 159, nil, nil, nil, nil, + 31, 147, nil, nil, 171, 51, 183, 18, 68, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 83, nil, nil, nil, nil, nil, nil, 144, 70, nil, - nil, nil, 87, 104, nil, nil, nil ] + nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, + 183, 85, nil, nil, 102, 119, nil, nil, nil ] racc_action_default = [ - -1, -77, -77, -2, -3, -4, -5, -6, -7, -77, - -11, -77, -31, -77, -43, -44, -45, -46, -47, -48, - -49, -50, -51, 97, -77, -13, -77, -20, -21, -22, - -23, -24, -25, -26, -27, -28, -10, -29, -77, -32, - -77, -37, -65, -77, -8, -9, -12, -14, -16, -77, - -30, -33, -77, -65, -77, -65, -59, -60, -61, -62, - -63, -64, -66, -67, -68, -69, -70, -71, -72, -73, - -74, -75, -76, -41, -42, -15, -17, -18, -19, -34, - -77, -36, -38, -39, -40, -52, -53, -77, -65, -35, - -54, -56, -65, -65, -55, -57, -58 ] + -1, -79, -79, -2, -3, -4, -5, -6, -7, -79, + -11, -79, -31, -79, -45, -46, -47, -48, -49, -50, + -51, -52, -53, 99, -79, -13, -79, -20, -21, -22, + -23, -24, -25, -26, -27, -28, -10, -29, -79, -32, + -33, -79, -39, -40, -67, -79, -8, -9, -12, -14, + -16, -79, -30, -34, -79, -67, -79, -79, -67, -61, + -62, -63, -64, -65, -66, -68, -69, -70, -71, -72, + -73, -74, -75, -76, -77, -78, -43, -44, -15, -17, + -18, -19, -35, -36, -37, -38, -41, -42, -54, -55, + -79, -67, -56, -58, -67, -67, -57, -59, -60 ] racc_goto_table = [ - 38, 15, 24, 85, 28, 37, 54, 1, 3, 5, - 6, 7, 9, 47, 51, 79, 13, 82, 90, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 50, nil, nil, nil, 94, nil, nil, nil, - 95, 96, 76, 73, 77, nil, nil, nil, nil, nil, + 15, 24, 38, 88, 28, 37, 57, 1, 3, 5, + 6, 7, 9, 49, 53, 13, 92, 83, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 89 ] + nil, nil, 52, nil, nil, nil, 96, nil, nil, 97, + 98, nil, nil, 79, 76, 82, 80, nil, nil, nil, + nil, nil, nil, nil, nil, 84 ] racc_goto_check = [ - 13, 19, 7, 22, 10, 12, 17, 1, 2, 3, - 4, 5, 6, 9, 15, 16, 18, 17, 23, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 12, nil, nil, nil, 22, nil, nil, nil, - 22, 22, 7, 19, 10, nil, nil, nil, nil, nil, + 18, 7, 13, 22, 10, 12, 17, 1, 2, 3, + 4, 5, 6, 9, 15, 19, 23, 17, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 13 ] + nil, nil, 12, nil, nil, nil, 22, nil, nil, 22, + 22, nil, nil, 7, 18, 13, 10, nil, nil, nil, + nil, nil, nil, nil, nil, 18 ] racc_goto_pointer = [ - nil, 7, 7, 8, 9, 10, 11, -7, nil, -13, - -5, nil, -6, -11, nil, -26, -36, -36, 15, 0, - nil, nil, -52, -69, nil, nil, nil ] + nil, 7, 7, 8, 9, 10, 11, -8, nil, -13, + -5, nil, -6, -9, nil, -26, nil, -38, -1, 14, + nil, nil, -55, -74, nil, nil, nil ] racc_goto_default = [ - nil, nil, nil, nil, nil, 59, nil, nil, 26, nil, - nil, 11, nil, nil, 40, nil, nil, 87, nil, nil, - 58, 55, nil, nil, 57, 60, 61 ] + nil, nil, nil, nil, nil, 62, nil, nil, 26, nil, + nil, 11, nil, nil, 40, nil, 41, 90, 43, nil, + 61, 58, nil, nil, 60, 63, 64 ] racc_reduce_table = [ 0, 0, :racc_error, @@ -123,7 +129,7 @@ 1, 31, :_reduce_20, 1, 31, :_reduce_21, 1, 33, :_reduce_none, - 1, 33, :_reduce_none, + 1, 33, :_reduce_23, 1, 33, :_reduce_none, 1, 33, :_reduce_none, 1, 33, :_reduce_none, @@ -133,54 +139,56 @@ 3, 28, :_reduce_none, 1, 34, :_reduce_31, 1, 35, :_reduce_32, + 1, 36, :_reduce_none, 2, 36, :_reduce_none, - 3, 36, :_reduce_none, - 2, 39, :_reduce_none, - 3, 37, :_reduce_36, - 1, 37, :_reduce_37, 2, 38, :_reduce_none, - 4, 27, :_reduce_39, - 4, 27, :_reduce_40, - 3, 41, :_reduce_41, - 3, 41, :_reduce_42, - 1, 41, :_reduce_43, - 1, 41, :_reduce_44, - 1, 42, :_reduce_none, - 1, 42, :_reduce_none, - 1, 42, :_reduce_none, - 1, 42, :_reduce_none, - 1, 42, :_reduce_none, - 1, 42, :_reduce_none, - 1, 42, :_reduce_none, + 3, 37, :_reduce_36, + 3, 39, :_reduce_37, + 3, 39, :_reduce_38, + 1, 39, :_reduce_39, + 1, 39, :_reduce_40, + 4, 27, :_reduce_41, + 4, 27, :_reduce_42, + 3, 42, :_reduce_43, + 3, 42, :_reduce_44, + 1, 42, :_reduce_45, + 1, 42, :_reduce_46, + 1, 41, :_reduce_none, + 1, 41, :_reduce_48, + 1, 41, :_reduce_none, + 1, 41, :_reduce_none, + 1, 41, :_reduce_none, + 1, 41, :_reduce_none, + 1, 41, :_reduce_none, 2, 43, :_reduce_none, - 1, 45, :_reduce_53, + 1, 45, :_reduce_55, 2, 45, :_reduce_none, 2, 45, :_reduce_none, - 1, 46, :_reduce_56, + 1, 46, :_reduce_58, 2, 46, :_reduce_none, 2, 46, :_reduce_none, - 1, 44, :_reduce_59, - 1, 40, :_reduce_60, + 1, 44, :_reduce_61, + 1, 40, :_reduce_62, 1, 40, :_reduce_none, 1, 40, :_reduce_none, 1, 47, :_reduce_none, 1, 47, :_reduce_none, 0, 49, :_reduce_none, - 1, 49, :_reduce_66, - 1, 49, :_reduce_67, 1, 49, :_reduce_68, 1, 49, :_reduce_69, 1, 49, :_reduce_70, 1, 49, :_reduce_71, 1, 49, :_reduce_72, - 1, 48, :_reduce_73, - 1, 48, :_reduce_74, + 1, 49, :_reduce_73, + 1, 49, :_reduce_74, 1, 48, :_reduce_75, - 1, 48, :_reduce_76 ] + 1, 48, :_reduce_76, + 1, 48, :_reduce_77, + 1, 48, :_reduce_78 ] -racc_reduce_n = 77 +racc_reduce_n = 79 -racc_shift_n = 97 +racc_shift_n = 99 racc_token_table = { false => 0, @@ -265,12 +273,12 @@ "inline_table_start", "inline_table_end", "inline_continued", - "inline_assignment_key", - "inline_assignment_value", + "inline_assignment", "inline_next", + "inline_assignment_key", "value", - "assignment_key", "assignment_key_component", + "assignment_key", "array", "start_array", "array_continued", @@ -382,7 +390,12 @@ # reduce 22 omitted -# reduce 23 omitted +module_eval(<<'.,.,', 'parser.y', 43) + def _reduce_23(val, _values, result) + result = StringUtils.replace_escaped_chars(val[0]) + result + end +.,., # reduce 24 omitted @@ -408,8 +421,7 @@ module_eval(<<'.,.,', 'parser.y', 59) def _reduce_32(val, _values, result) array = @handler.end_(:inline) - array.map!.with_index{ |n,i| i.even? ? n.to_sym : n } if @handler.symbolize_keys - @handler.push(Hash[*array]) + @handler.push_inline(array) result end @@ -421,12 +433,10 @@ # reduce 35 omitted -module_eval(<<'.,.,', 'parser.y', 73) +module_eval(<<'.,.,', 'parser.y', 72) def _reduce_36(val, _values, result) - array = @handler.end_(:inline) - array.each { |key| @handler.push(key) } - @handler.start_(:inline) - @handler.push(val[2]) + keys = @handler.end_(:inline_keys) + @handler.push(keys) result end @@ -434,49 +444,78 @@ module_eval(<<'.,.,', 'parser.y', 78) def _reduce_37(val, _values, result) - @handler.push(val[0]) + @handler.push(val[2]) + result end .,., -# reduce 38 omitted +module_eval(<<'.,.,', 'parser.y', 80) + def _reduce_38(val, _values, result) + val[2].split('.').each { |k| @handler.push(k) } + result + end +.,., -module_eval(<<'.,.,', 'parser.y', 85) +module_eval(<<'.,.,', 'parser.y', 82) def _reduce_39(val, _values, result) + keys = val[0].split('.') + @handler.start_(:inline_keys) + keys.each { |key| @handler.push(key) } + + result + end +.,., + +module_eval(<<'.,.,', 'parser.y', 87) + def _reduce_40(val, _values, result) + @handler.start_(:inline_keys) + @handler.push(val[0]) + + result + end +.,., + +module_eval(<<'.,.,', 'parser.y', 93) + def _reduce_41(val, _values, result) keys = @handler.end_(:keys) - @handler.push(keys.pop) + value = keys.pop + @handler.validate_value(value) + @handler.push(value) @handler.assign(keys) result end .,., -module_eval(<<'.,.,', 'parser.y', 90) - def _reduce_40(val, _values, result) +module_eval(<<'.,.,', 'parser.y', 100) + def _reduce_42(val, _values, result) keys = @handler.end_(:keys) - @handler.push(keys.pop) + value = keys.pop + @handler.validate_value(value) + @handler.push(value) @handler.assign(keys) result end .,., -module_eval(<<'.,.,', 'parser.y', 96) - def _reduce_41(val, _values, result) +module_eval(<<'.,.,', 'parser.y', 108) + def _reduce_43(val, _values, result) @handler.push(val[2]) result end .,., -module_eval(<<'.,.,', 'parser.y', 97) - def _reduce_42(val, _values, result) +module_eval(<<'.,.,', 'parser.y', 109) + def _reduce_44(val, _values, result) val[2].split('.').each { |k| @handler.push(k) } result end .,., -module_eval(<<'.,.,', 'parser.y', 99) - def _reduce_43(val, _values, result) +module_eval(<<'.,.,', 'parser.y', 111) + def _reduce_45(val, _values, result) keys = val[0].split('.') @handler.start_(:keys) keys.each { |key| @handler.push(key) } @@ -485,20 +524,21 @@ end .,., -module_eval(<<'.,.,', 'parser.y', 103) - def _reduce_44(val, _values, result) +module_eval(<<'.,.,', 'parser.y', 115) + def _reduce_46(val, _values, result) @handler.start_(:keys); @handler.push(val[0]) result end .,., -# reduce 45 omitted - -# reduce 46 omitted - # reduce 47 omitted -# reduce 48 omitted +module_eval(<<'.,.,', 'parser.y', 119) + def _reduce_48(val, _values, result) + result = StringUtils.replace_escaped_chars(val[0]) + result + end +.,., # reduce 49 omitted @@ -508,61 +548,65 @@ # reduce 52 omitted -module_eval(<<'.,.,', 'parser.y', 118) - def _reduce_53(val, _values, result) - array = @handler.end_(:array); @handler.push(array) +# reduce 53 omitted + +# reduce 54 omitted + +module_eval(<<'.,.,', 'parser.y', 130) + def _reduce_55(val, _values, result) + array = @handler.end_(:array); @handler.push(array.compact) result end .,., -# reduce 54 omitted +# reduce 56 omitted -# reduce 55 omitted +# reduce 57 omitted -module_eval(<<'.,.,', 'parser.y', 123) - def _reduce_56(val, _values, result) - array = @handler.end_(:array); @handler.push(array) +module_eval(<<'.,.,', 'parser.y', 135) + def _reduce_58(val, _values, result) + array = @handler.end_(:array); @handler.push(array.compact) result end .,., -# reduce 57 omitted +# reduce 59 omitted -# reduce 58 omitted +# reduce 60 omitted -module_eval(<<'.,.,', 'parser.y', 128) - def _reduce_59(val, _values, result) +module_eval(<<'.,.,', 'parser.y', 140) + def _reduce_61(val, _values, result) @handler.start_(:array) result end .,., -module_eval(<<'.,.,', 'parser.y', 131) - def _reduce_60(val, _values, result) +module_eval(<<'.,.,', 'parser.y', 143) + def _reduce_62(val, _values, result) @handler.push(val[0]) result end .,., -# reduce 61 omitted - -# reduce 62 omitted - # reduce 63 omitted # reduce 64 omitted # reduce 65 omitted -module_eval(<<'.,.,', 'parser.y', 140) - def _reduce_66(val, _values, result) +# reduce 66 omitted + +# reduce 67 omitted + +module_eval(<<'.,.,', 'parser.y', 152) + def _reduce_68(val, _values, result) result = val[0].to_f result end .,., -module_eval(<<'.,.,', 'parser.y', 142) - def _reduce_67(val, _values, result) +module_eval(<<'.,.,', 'parser.y', 154) + def _reduce_69(val, _values, result) v = val[0] result = if v.end_with?('nan') Float::NAN @@ -574,15 +618,15 @@ end .,., -module_eval(<<'.,.,', 'parser.y', 149) - def _reduce_68(val, _values, result) +module_eval(<<'.,.,', 'parser.y', 161) + def _reduce_70(val, _values, result) result = val[0].to_i result end .,., -module_eval(<<'.,.,', 'parser.y', 151) - def _reduce_69(val, _values, result) +module_eval(<<'.,.,', 'parser.y', 163) + def _reduce_71(val, _values, result) base = case val[0][1] when "x" then 16 when "o" then 8 @@ -594,15 +638,15 @@ end .,., -module_eval(<<'.,.,', 'parser.y', 158) - def _reduce_70(val, _values, result) +module_eval(<<'.,.,', 'parser.y', 170) + def _reduce_72(val, _values, result) result = val[0] == 'true' ? true : false result end .,., -module_eval(<<'.,.,', 'parser.y', 160) - def _reduce_71(val, _values, result) +module_eval(<<'.,.,', 'parser.y', 172) + def _reduce_73(val, _values, result) v = val[0] result = if v[6].nil? if v[4].nil? @@ -611,6 +655,11 @@ LocalDateTime.new(v[0], v[1], v[2], v[3] || 0, v[4] || 0, v[5].to_f) end else + # Patch for 24:00:00 which Ruby parses + if v[3].to_i == 24 && v[4].to_i == 0 && v[5].to_i == 0 + v[3] = (v[3].to_i + 1).to_s + end + Time.new(v[0], v[1], v[2], v[3] || 0, v[4] || 0, v[5].to_f, v[6]) end @@ -618,36 +667,36 @@ end .,., -module_eval(<<'.,.,', 'parser.y', 171) - def _reduce_72(val, _values, result) +module_eval(<<'.,.,', 'parser.y', 188) + def _reduce_74(val, _values, result) result = LocalTime.new(*val[0]) result end .,., -module_eval(<<'.,.,', 'parser.y', 174) - def _reduce_73(val, _values, result) +module_eval(<<'.,.,', 'parser.y', 191) + def _reduce_75(val, _values, result) result = StringUtils.replace_escaped_chars(StringUtils.multiline_replacements(val[0])) result end .,., -module_eval(<<'.,.,', 'parser.y', 175) - def _reduce_74(val, _values, result) +module_eval(<<'.,.,', 'parser.y', 192) + def _reduce_76(val, _values, result) result = StringUtils.replace_escaped_chars(val[0]) result end .,., -module_eval(<<'.,.,', 'parser.y', 176) - def _reduce_75(val, _values, result) +module_eval(<<'.,.,', 'parser.y', 193) + def _reduce_77(val, _values, result) result = StringUtils.strip_spaces(val[0]) result end .,., -module_eval(<<'.,.,', 'parser.y', 177) - def _reduce_76(val, _values, result) +module_eval(<<'.,.,', 'parser.y', 194) + def _reduce_78(val, _values, result) result = val[0] result end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/tomlrb/handler.rb new/lib/tomlrb/handler.rb --- old/lib/tomlrb/handler.rb 2020-12-20 02:42:11.000000000 +0100 +++ new/lib/tomlrb/handler.rb 2022-05-28 14:09:33.000000000 +0200 @@ -13,6 +13,10 @@ end def set_context(identifiers, is_array_of_tables: false) + if identifiers.empty? + raise ParseError, 'Array needs a name' + end + @current_table = identifiers.dup @keys.add_table_key identifiers, is_array_of_tables @current = @output @@ -21,7 +25,6 @@ identifierz.each do |k| k = k.to_sym if @symbolize_keys if @current[k].is_a?(Array) - @current[k] << {} if @current[k].empty? @current = @current[k].last else @current[k] ||= {} @@ -32,7 +35,6 @@ end def deal_with_array_of_tables(identifiers, is_array_of_tables) - identifiers.map!{|n| n.gsub("\"", '')} stringified_identifier = identifiers.join('.') if is_array_of_tables @@ -66,6 +68,32 @@ @stack << o end + def push_inline(inline_arrays) + merged_inline = {} + + inline_arrays.each do |inline_array| + current = merged_inline + value = inline_array.pop + inline_array.each_with_index do |inline_key, inline_index| + inline_key = inline_key.to_sym if @symbolize_keys + last_key = inline_index == inline_array.size - 1 + + if last_key + if current[inline_key].nil? + current[inline_key] = value + else + raise Key::KeyConflict, "Inline key #{inline_key} is already used" + end + else + current[inline_key] ||= {} + current = current[inline_key] + end + end + end + + push(merged_inline) + end + def start_(type) push([type]) end @@ -73,16 +101,23 @@ def end_(type) array = [] while (value = @stack.pop) != [type] - raise ParseError, 'Unclosed table' if value.nil? + raise ParseError, 'Unclosed table' if @stack.empty? array.unshift(value) end array end + def validate_value(value) + if value.nil? + raise ParseError, 'Value must be present' + end + end + private def assign_key_path(current, key, key_emptied) if key_emptied + raise ParseError, "Cannot overwrite value with key #{key}" unless current.kind_of?(Hash) current[key] = @stack.pop return current @@ -156,7 +191,7 @@ def find_or_create_first_pair_key(current, key, declared, table_keys_empty) existed = current[key] - if existed && existed.declared? && (existed.type == :pair) && declared && table_keys_empty + if existed && (existed.type == :pair) && declared && table_keys_empty raise Key::KeyConflict, "Key #{key} is already used" end k = Key.new(key, :pair, declared) @@ -199,7 +234,7 @@ private def validate_already_declared_as_different_key(type, declared, existed) - if declared && existed && existed.declared? && existed.type != type + if existed && existed.declared? && existed.type != type raise KeyConflict, "Key #{existed.key} is already used as #{existed.type} key" end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/tomlrb/parser.y new/lib/tomlrb/parser.y --- old/lib/tomlrb/parser.y 2020-12-20 02:42:11.000000000 +0100 +++ new/lib/tomlrb/parser.y 2022-05-28 14:09:33.000000000 +0200 @@ -41,7 +41,7 @@ ; table_identifier_component : IDENTIFIER - | STRING_BASIC + | STRING_BASIC { result = StringUtils.replace_escaped_chars(val[0]) } | STRING_LITERAL | INTEGER | NON_DEC_INTEGER @@ -58,38 +58,50 @@ inline_table_end : '}' { array = @handler.end_(:inline) - array.map!.with_index{ |n,i| i.even? ? n.to_sym : n } if @handler.symbolize_keys - @handler.push(Hash[*array]) + @handler.push_inline(array) } ; inline_continued - : inline_assignment_key inline_assignment_value - | inline_assignment_key inline_assignment_value inline_next + : inline_assignment + | inline_assignment inline_next ; inline_next : ',' inline_continued ; - inline_assignment_key - : inline_assignment_key '.' IDENTIFIER { - array = @handler.end_(:inline) - array.each { |key| @handler.push(key) } - @handler.start_(:inline) - @handler.push(val[2]) + inline_assignment + : inline_assignment_key '=' value { + keys = @handler.end_(:inline_keys) + @handler.push(keys) } - | IDENTIFIER { @handler.push(val[0]) } ; - inline_assignment_value - : '=' value + inline_assignment_key + : inline_assignment_key '.' assignment_key_component { + @handler.push(val[2]) + } + | inline_assignment_key '.' FLOAT { val[2].split('.').each { |k| @handler.push(k) } } + | FLOAT { + keys = val[0].split('.') + @handler.start_(:inline_keys) + keys.each { |key| @handler.push(key) } + } + | assignment_key_component { + @handler.start_(:inline_keys) + @handler.push(val[0]) + } ; assignment : assignment_key '=' value EOS { keys = @handler.end_(:keys) - @handler.push(keys.pop) + value = keys.pop + @handler.validate_value(value) + @handler.push(value) @handler.assign(keys) } | assignment_key '=' value NEWLINE { keys = @handler.end_(:keys) - @handler.push(keys.pop) + value = keys.pop + @handler.validate_value(value) + @handler.push(value) @handler.assign(keys) } ; @@ -105,7 +117,7 @@ ; assignment_key_component : IDENTIFIER - | STRING_BASIC + | STRING_BASIC { result = StringUtils.replace_escaped_chars(val[0]) } | STRING_LITERAL | INTEGER | NON_DEC_INTEGER @@ -116,12 +128,12 @@ : start_array array_continued ; array_continued - : ']' { array = @handler.end_(:array); @handler.push(array) } + : ']' { array = @handler.end_(:array); @handler.push(array.compact) } | value array_next | NEWLINE array_continued ; array_next - : ']' { array = @handler.end_(:array); @handler.push(array) } + : ']' { array = @handler.end_(:array); @handler.push(array.compact) } | ',' array_continued | NEWLINE array_continued ; @@ -166,6 +178,11 @@ LocalDateTime.new(v[0], v[1], v[2], v[3] || 0, v[4] || 0, v[5].to_f) end else + # Patch for 24:00:00 which Ruby parses + if v[3].to_i == 24 && v[4].to_i == 0 && v[5].to_i == 0 + v[3] = (v[3].to_i + 1).to_s + end + Time.new(v[0], v[1], v[2], v[3] || 0, v[4] || 0, v[5].to_f, v[6]) end } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/tomlrb/scanner.rb new/lib/tomlrb/scanner.rb --- old/lib/tomlrb/scanner.rb 2020-12-20 02:42:11.000000000 +0100 +++ new/lib/tomlrb/scanner.rb 2022-05-28 14:09:33.000000000 +0200 @@ -12,11 +12,14 @@ STRING_LITERAL_MULTI = /'{3}([^\u0000-\u0008\u000B\u000C\u000E-\u001F\u007F]*?'{3,5})/m DATETIME = /(-?\d{4})-(\d{2})-(\d{2})(?:(?:t|\s)(\d{2}):(\d{2}):(\d{2}(?:\.\d+)?))?(z|[-+]\d{2}:\d{2})?/i LOCAL_TIME = /(\d{2}):(\d{2}):(\d{2}(?:\.\d+)?)/ - FLOAT = /[+-]?(?:(?:\d|[1-9](?:_?\d)*)\.\d(?:_?\d)*|\d+(?=[eE]))(?:[eE][+-]?[0-9_]+)?(?!\w)/ + FLOAT = /[+-]?(?:(?:\d|[1-9](?:_?\d)*)\.\d(?:_?\d)*|\d+(?=[eE]))(?:[eE][+-]?[0-9]+(_[0-9])*[0-9]*)?(?!\w)/ FLOAT_KEYWORD = /[+-]?(?:inf|nan)\b/ INTEGER = /[+-]?([1-9](_?\d)*|0)(?![A-Za-z0-9_-]+)/ - NON_DEC_INTEGER = /0(?:x[0-9A-Fa-f][0-9A-Fa-f_]*|o[0-7][0-7_]*|b[01][01_]*)/ + NON_DEC_INTEGER = /0(?:x[0-9A-Fa-f]+(?:_[0-9A-Fa-f])*[0-9A-Fa-f]*|o[0-7]+(?:_[0-7])*[0-7]*|b[01]+(?:_[01])*[01]*)/ BOOLEAN = /true|false/ + SPACED_ARRAY_OF_TABLES_START = /^\[[ \t]+\[(#{IDENTIFIER}|#{STRING_BASIC}|#{STRING_LITERAL}|#{INTEGER}|#{NON_DEC_INTEGER}|#{FLOAT_KEYWORD}|#{BOOLEAN})\]\]$/ + SPACED_ARRAY_OF_TABLES_END = /^\[\[(#{IDENTIFIER}|#{STRING_BASIC}|#{STRING_LITERAL}|#{INTEGER}|#{NON_DEC_INTEGER}|#{FLOAT_KEYWORD}|#{BOOLEAN})\][ \t]+\]$/ + SPACED_ARRAY_OF_TABLES_BOTH = /^\[[ \t]+\[(#{IDENTIFIER}|#{STRING_BASIC}|#{STRING_LITERAL}|#{INTEGER}|#{NON_DEC_INTEGER}|#{FLOAT_KEYWORD}|#{BOOLEAN})\][ \t]+\]$/ def initialize(io) @ss = StringScanner.new(io.read) @@ -26,6 +29,9 @@ def next_token case when @ss.scan(NEWLINE) then [:NEWLINE, nil] + when @ss.scan(SPACED_ARRAY_OF_TABLES_START) then raise ParseError.new("Array of tables has spaces in starting brackets") + when @ss.scan(SPACED_ARRAY_OF_TABLES_END) then raise ParseError.new("Array of tables has spaces in ending brackets") + when @ss.scan(SPACED_ARRAY_OF_TABLES_BOTH) then raise ParseError.new("Array of tables has spaces in starting and ending brackets") when @ss.scan(SPACE) then next_token when @ss.scan(COMMENT) then next_token when @ss.scan(DATETIME) then process_datetime @@ -47,7 +53,7 @@ def process_datetime if @ss[7] - offset = @ss[7].gsub('Z', '+00:00') + offset = @ss[7].gsub(/[zZ]/, '+00:00') end args = [@ss[1], @ss[2], @ss[3], @ss[4], @ss[5], @ss[6], offset] [:DATETIME, args] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/tomlrb/version.rb new/lib/tomlrb/version.rb --- old/lib/tomlrb/version.rb 2020-12-20 02:42:11.000000000 +0100 +++ new/lib/tomlrb/version.rb 2022-05-28 14:09:33.000000000 +0200 @@ -1,3 +1,3 @@ module Tomlrb - VERSION = '2.0.1'.freeze + VERSION = '2.0.3'.freeze end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/metadata new/metadata --- old/metadata 2020-12-20 02:42:11.000000000 +0100 +++ new/metadata 2022-05-28 14:09:33.000000000 +0200 @@ -1,15 +1,29 @@ --- !ruby/object:Gem::Specification name: tomlrb version: !ruby/object:Gem::Version - version: 2.0.1 + version: 2.0.3 platform: ruby authors: - Francois Bernier autorequire: bindir: bin cert_chain: [] -date: 2020-12-20 00:00:00.000000000 Z -dependencies: [] +date: 2022-05-28 00:00:00.000000000 Z +dependencies: +- !ruby/object:Gem::Dependency + name: psych + requirement: !ruby/object:Gem::Requirement + requirements: + - - "~>" + - !ruby/object:Gem::Version + version: '4' + type: :development + prerelease: false + version_requirements: !ruby/object:Gem::Requirement + requirements: + - - "~>" + - !ruby/object:Gem::Version + version: '4' description: A racc based toml parser email: - frankbern...@gmail.com @@ -48,7 +62,7 @@ - !ruby/object:Gem::Version version: '0' requirements: [] -rubygems_version: 3.1.4 +rubygems_version: 3.3.7 signing_key: specification_version: 4 summary: A racc based toml parser