diff --git a/src/YAML.jl b/src/YAML.jl index 4fabb1b..733943f 100644 --- a/src/YAML.jl +++ b/src/YAML.jl @@ -57,15 +57,18 @@ function _patch_constructors(more_constructors::_constructor, dicttype::_dicttyp return more_constructors end - """ load(x::Union{AbstractString, IO}) Parse the string or stream `x` as a YAML file, and return the first YAML document as a Julia object. """ -load(ts::TokenStream, constructor::Constructor) = - construct_document(constructor, compose(EventStream(ts))) +function load(tokenstream::TokenStream, constructor::Constructor) + resolver = Resolver() + eventstream = EventStream(tokenstream) + node = compose(eventstream, resolver) + construct_document(constructor, node) +end load(input::IO, constructor::Constructor) = load(TokenStream(input), constructor) diff --git a/src/composer.jl b/src/composer.jl index a24225f..edd599a 100644 --- a/src/composer.jl +++ b/src/composer.jl @@ -27,8 +27,8 @@ mutable struct Composer resolver::Resolver end -function compose(events::EventStream) - composer = Composer(events, Dict{String, Node}(), Resolver()) +function compose(events::EventStream, resolver::Resolver) + composer = Composer(events, Dict{String, Node}(), resolver) @assert forward!(composer.input) isa StreamStartEvent node = compose_document(composer) if peek(composer.input) isa StreamEndEvent