@@ -25,7 +25,7 @@ module Internals
25
25
end
26
26
27
27
# https://github.com/JuliaLang/julia/issues/36605
28
- readstring (f:: AbstractString ) = isfile (f) ? read (f, String) : error (repr (f), " : No such file" )
28
+ _readstring (f:: AbstractString ) = isfile (f) ? read (f, String) : error (repr (f), " : No such file" )
29
29
30
30
"""
31
31
Parser()
@@ -36,12 +36,14 @@ explicitly create a `Parser` but instead one directly use use
36
36
will however reuse some internal data structures which can be beneficial for
37
37
performance if a larger number of small files are parsed.
38
38
"""
39
- const Parser = Internals. Parser
39
+ struct Parser
40
+ _p:: Internals.Parser{Dates}
41
+ end
40
42
41
43
# Dates-enabled constructors
42
- Parser () = Parser {Dates} ()
43
- Parser (io:: IO ) = Parser {Dates} (io)
44
- Parser (str:: String ; filepath= nothing ) = Parser {Dates} (str; filepath)
44
+ Parser () = Parser (Internals . Parser {Dates} () )
45
+ Parser (io:: IO ) = Parser (Internals . Parser {Dates} (io) )
46
+ Parser (str:: String ; filepath= nothing ) = Parser (Internals . Parser {Dates} (str; filepath) )
45
47
46
48
"""
47
49
parsefile(f::AbstractString)
@@ -53,9 +55,9 @@ Parse file `f` and return the resulting table (dictionary). Throw a
53
55
See also [`TOML.tryparsefile`](@ref).
54
56
"""
55
57
parsefile (f:: AbstractString ) =
56
- Internals. parse (Parser ( readstring (f); filepath= abspath (f)))
58
+ Internals. parse (Internals . Parser {Dates} ( _readstring (f); filepath= abspath (f)))
57
59
parsefile (p:: Parser , f:: AbstractString ) =
58
- Internals. parse (Internals. reinit! (p, readstring (f); filepath= abspath (f)))
60
+ Internals. parse (Internals. reinit! (p. _p, _readstring (f); filepath= abspath (f)))
59
61
60
62
"""
61
63
tryparsefile(f::AbstractString)
@@ -67,9 +69,9 @@ Parse file `f` and return the resulting table (dictionary). Return a
67
69
See also [`TOML.parsefile`](@ref).
68
70
"""
69
71
tryparsefile (f:: AbstractString ) =
70
- Internals. tryparse (Parser ( readstring (f); filepath= abspath (f)))
72
+ Internals. tryparse (Internals . Parser {Dates} ( _readstring (f); filepath= abspath (f)))
71
73
tryparsefile (p:: Parser , f:: AbstractString ) =
72
- Internals. tryparse (Internals. reinit! (p, readstring (f); filepath= abspath (f)))
74
+ Internals. tryparse (Internals. reinit! (p. _p, _readstring (f); filepath= abspath (f)))
73
75
74
76
"""
75
77
parse(x::Union{AbstractString, IO})
@@ -80,10 +82,11 @@ Throw a [`ParserError`](@ref) upon failure.
80
82
81
83
See also [`TOML.tryparse`](@ref).
82
84
"""
85
+ parse (p:: Parser ) = Internals. parse (p. _p)
83
86
parse (str:: AbstractString ) =
84
- Internals. parse (Parser (String (str)))
87
+ Internals. parse (Internals . Parser {Dates} (String (str)))
85
88
parse (p:: Parser , str:: AbstractString ) =
86
- Internals. parse (Internals. reinit! (p, String (str)))
89
+ Internals. parse (Internals. reinit! (p. _p , String (str)))
87
90
parse (io:: IO ) = parse (read (io, String))
88
91
parse (p:: Parser , io:: IO ) = parse (p, read (io, String))
89
92
@@ -96,10 +99,11 @@ Return a [`ParserError`](@ref) upon failure.
96
99
97
100
See also [`TOML.parse`](@ref).
98
101
"""
102
+ tryparse (p:: Parser ) = Internals. tryparse (p. _p)
99
103
tryparse (str:: AbstractString ) =
100
- Internals. tryparse (Parser (String (str)))
104
+ Internals. tryparse (Internals . Parser {Dates} (String (str)))
101
105
tryparse (p:: Parser , str:: AbstractString ) =
102
- Internals. tryparse (Internals. reinit! (p, String (str)))
106
+ Internals. tryparse (Internals. reinit! (p. _p , String (str)))
103
107
tryparse (io:: IO ) = tryparse (read (io, String))
104
108
tryparse (p:: Parser , io:: IO ) = tryparse (p, read (io, String))
105
109
@@ -131,4 +135,17 @@ supported type.
131
135
"""
132
136
const print = Internals. Printer. print
133
137
138
+ public Parser, parsefile, tryparsefile, parse, tryparse, ParserError, print
139
+
140
+ # These methods are private Base interfaces, but we do our best to support them over
141
+ # the TOML stdlib types anyway to minimize downstream breakage.
142
+ Base. TOMLCache (p:: Parser ) = Base. TOMLCache (p. _p, Dict {String, Base.CachedTOMLDict} ())
143
+ Base. TOMLCache (p:: Parser , d:: Base.CachedTOMLDict ) = Base. TOMLCache (p. _p, d)
144
+ Base. TOMLCache (p:: Parser , d:: Dict{String, Dict{String, Any}} ) = Base. TOMLCache (p. _p, d)
145
+
146
+ Internals. reinit! (p:: Parser , str:: String ; filepath:: Union{Nothing, String} = nothing ) =
147
+ Internals. reinit! (p. _p, str; filepath)
148
+ Internals. parse (p:: Parser ) = Internals. parse (p. _p)
149
+ Internals. tryparse (p:: Parser ) = Internals. tryparse (p. _p)
150
+
134
151
end
0 commit comments