@@ -154,6 +154,8 @@ impl parser for parser {
154
154
fn parse ( ) -> result:: t < json , error > {
155
155
alt self . parse_value ( ) {
156
156
ok ( value) {
157
+ // Skip trailing whitespaces.
158
+ self . parse_whitespace ( ) ;
157
159
// Make sure there is no trailing characters.
158
160
if self . eof ( ) {
159
161
ok ( value)
@@ -627,6 +629,9 @@ mod tests {
627
629
assert from_str ( "null" ) == ok ( null) ;
628
630
assert from_str ( "true" ) == ok ( boolean ( true ) ) ;
629
631
assert from_str ( "false" ) == ok ( boolean ( false ) ) ;
632
+ assert from_str ( " null " ) == ok ( null) ;
633
+ assert from_str ( " true " ) == ok ( boolean ( true ) ) ;
634
+ assert from_str ( " false " ) == ok ( boolean ( false ) ) ;
630
635
}
631
636
632
637
#[ test]
@@ -654,6 +659,7 @@ mod tests {
654
659
assert from_str ( "0.4e5" ) == ok ( num ( 0.4e5 f) ) ;
655
660
assert from_str ( "0.4e+15" ) == ok ( num ( 0.4e15 f) ) ;
656
661
assert from_str ( "0.4e-01" ) == ok ( num ( 0.4e-01 f) ) ;
662
+ assert from_str ( " 3 " ) == ok ( num ( 3 f) ) ;
657
663
}
658
664
659
665
#[ test]
@@ -670,6 +676,7 @@ mod tests {
670
676
assert from_str ( "\" \\ n\" " ) == ok ( string ( "\n " ) ) ;
671
677
assert from_str ( "\" \\ r\" " ) == ok ( string ( "\r " ) ) ;
672
678
assert from_str ( "\" \\ t\" " ) == ok ( string ( "\t " ) ) ;
679
+ assert from_str ( " \" foo\" " ) == ok ( string ( "foo" ) ) ;
673
680
}
674
681
675
682
#[ test]
@@ -691,6 +698,7 @@ mod tests {
691
698
assert from_str ( "[ false ]" ) == ok ( list ( [ boolean ( false ) ] ) ) ;
692
699
assert from_str ( "[null]" ) == ok ( list ( [ null] ) ) ;
693
700
assert from_str ( "[3, 1]" ) == ok ( list ( [ num ( 3 f) , num ( 1 f) ] ) ) ;
701
+ assert from_str ( "\n [3, 2]\n " ) == ok ( list ( [ num ( 3 f) , num ( 2 f) ] ) ) ;
694
702
assert from_str ( "[2, [4, 1]]" ) ==
695
703
ok ( list ( [ num ( 2 f) , list ( [ num ( 4 f) , num ( 1 f) ] ) ] ) ) ;
696
704
}
@@ -727,6 +735,8 @@ mod tests {
727
735
728
736
assert eq ( result:: get ( from_str ( "{ \" a\" : null, \" b\" : true }" ) ) ,
729
737
mk_dict ( [ ( "a" , null) , ( "b" , boolean ( true ) ) ] ) ) ;
738
+ assert eq ( result:: get ( from_str ( "\n { \" a\" : null, \" b\" : true }\n " ) ) ,
739
+ mk_dict ( [ ( "a" , null) , ( "b" , boolean ( true ) ) ] ) ) ;
730
740
assert eq ( result:: get ( from_str ( "{\" a\" : 1.0 ,\" b\" : [ true ]}" ) ) ,
731
741
mk_dict ( [
732
742
( "a" , num ( 1.0 ) ) ,
0 commit comments