From e81df848feb08eaa4a79a2206356454aed4d866d Mon Sep 17 00:00:00 2001 From: Kristoffer Carlsson Date: Mon, 29 Mar 2021 16:29:47 +0200 Subject: [PATCH] Fix a small bug in the TOML parser and add an example of printing to a file (#40208) fix the TOML parser to parse 0e-3 and add an example of writing to a file (cherry picked from commit 2ec75d65ce13651f42f59456568aefe30901b9c6) --- base/toml_parser.jl | 2 -- stdlib/TOML/docs/src/index.md | 13 +++++++++++-- stdlib/TOML/test/values.jl | 5 +++-- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/base/toml_parser.jl b/base/toml_parser.jl index c69096504df0b5..956c62196d6b80 100644 --- a/base/toml_parser.jl +++ b/base/toml_parser.jl @@ -821,8 +821,6 @@ function parse_number_or_date_start(l::Parser) ate && return parse_int(l, contains_underscore) elseif accept(l, isdigit) return parse_local_time(l) - elseif peek(l) !== '.' - return ParserError(ErrLeadingZeroNotAllowedInteger) end end diff --git a/stdlib/TOML/docs/src/index.md b/stdlib/TOML/docs/src/index.md index e34bb8d85f2f1a..36e8ec62481083 100644 --- a/stdlib/TOML/docs/src/index.md +++ b/stdlib/TOML/docs/src/index.md @@ -65,8 +65,6 @@ format. ```jldoctest julia> using TOML -julia> fname = tempname(); - julia> data = Dict( "names" => ["Julia", "Julio"], "age" => [10, 20], @@ -75,6 +73,17 @@ julia> data = Dict( julia> TOML.print(data) names = ["Julia", "Julio"] age = [10, 20] + +julia> fname = tempname(); + +julia> open(fname, "w") do io + TOML.print(io, data) + end + +julia> TOML.parsefile(fname) +Dict{String, Any} with 2 entries: + "names" => ["Julia", "Julio"] + "age" => [10, 20] ``` Keys can be sorted according to some value diff --git a/stdlib/TOML/test/values.jl b/stdlib/TOML/test/values.jl index 9f09e26b01cdac..8337bb5a547148 100644 --- a/stdlib/TOML/test/values.jl +++ b/stdlib/TOML/test/values.jl @@ -39,6 +39,7 @@ end @test testval("1.0e0" , 1.0) @test testval("1.0e+0" , 1.0) @test testval("1.0e-0" , 1.0) + @test testval("0e-3" , 0.0) @test testval("1.001e-0" , 1.001) @test testval("2e10" , 2e10) @test testval("2e+10" , 2e10) @@ -53,8 +54,8 @@ end @test testval("+1_000" , 1000 |> Int64) @test testval("-1_000" , -1000 |> Int64) - @test failval("0_" , Internals.ErrLeadingZeroNotAllowedInteger) - @test failval("0__0" , Internals.ErrLeadingZeroNotAllowedInteger) + @test failval("0_" , Internals.ErrUnderscoreNotSurroundedByDigits) + @test failval("0__0" , Internals.ErrUnderscoreNotSurroundedByDigits) @test failval("__0" , Internals.ErrUnexpectedStartOfValue) @test failval("1_0_" , Internals.ErrTrailingUnderscoreNumber) @test failval("1_0__0" , Internals.ErrUnderscoreNotSurroundedByDigits)