@@ -103,20 +103,11 @@ namespace sourcemeta::blaze {
103103auto compile (const sourcemeta::core::JSON &schema,
104104 const sourcemeta::core::SchemaWalker &walker,
105105 const sourcemeta::core::SchemaResolver &resolver,
106- const Compiler &compiler, const Mode mode,
106+ const Compiler &compiler,
107+ const sourcemeta::core::SchemaFrame &frame, const Mode mode,
107108 const std::optional<std::string> &default_dialect) -> Template {
108109 assert (is_schema (schema));
109110
110- // Make sure the input schema is bundled, otherwise we won't be able to
111- // resolve remote references here
112- const sourcemeta::core::JSON result{
113- sourcemeta::core::bundle (schema, walker, resolver, default_dialect)};
114-
115- // Perform framing to resolve references later on
116- sourcemeta::core::SchemaFrame frame{
117- sourcemeta::core::SchemaFrame::Mode::References};
118- frame.analyse (result, walker, resolver, default_dialect);
119-
120111 const std::string base{sourcemeta::core::URI{
121112 sourcemeta::core::identify (
122113 schema, resolver,
@@ -144,7 +135,7 @@ auto compile(const sourcemeta::core::JSON &schema,
144135
145136 SchemaContext schema_context{
146137 sourcemeta::core::empty_pointer,
147- result ,
138+ schema ,
148139 vocabularies (schema, resolver, root_frame_entry.dialect ),
149140 sourcemeta::core::URI{root_frame_entry.base }.canonicalize ().recompose (),
150141 {},
@@ -207,10 +198,10 @@ auto compile(const sourcemeta::core::JSON &schema,
207198 }
208199
209200 auto unevaluated{
210- sourcemeta::core::unevaluated (result , frame, walker, resolver)};
201+ sourcemeta::core::unevaluated (schema , frame, walker, resolver)};
211202
212- const Context context{result ,
213- std::move ( frame) ,
203+ const Context context{schema ,
204+ frame,
214205 std::move (resources),
215206 walker,
216207 resolver,
@@ -275,6 +266,27 @@ auto compile(const sourcemeta::core::JSON &schema,
275266 }
276267}
277268
269+ auto compile (const sourcemeta::core::JSON &schema,
270+ const sourcemeta::core::SchemaWalker &walker,
271+ const sourcemeta::core::SchemaResolver &resolver,
272+ const Compiler &compiler, const Mode mode,
273+ const std::optional<std::string> &default_dialect) -> Template {
274+ assert (is_schema (schema));
275+
276+ // Make sure the input schema is bundled, otherwise we won't be able to
277+ // resolve remote references here
278+ const sourcemeta::core::JSON result{
279+ sourcemeta::core::bundle (schema, walker, resolver, default_dialect)};
280+
281+ // Perform framing to resolve references later on
282+ sourcemeta::core::SchemaFrame frame{
283+ sourcemeta::core::SchemaFrame::Mode::References};
284+ frame.analyse (result, walker, resolver, default_dialect);
285+
286+ return compile (result, walker, resolver, compiler, frame, mode,
287+ default_dialect);
288+ }
289+
278290auto compile (const Context &context, const SchemaContext &schema_context,
279291 const DynamicContext &dynamic_context,
280292 const sourcemeta::core::Pointer &schema_suffix,
0 commit comments