///|
fn required_importer(
maybe_importer : @core.Maybe[@json.JsonImporter],
) -> @json.JsonImporter {
match maybe_importer.get() {
Some(importer) => importer
None => abort("missing importer")
}
}
///|
pub fn layout_json(input_graph : String) -> String raise {
let runtime = @all_engine.new_layout_runtime()
let session = @core.new_layout_session()
let maybe_importer : @core.Maybe[@json.JsonImporter] = @core.maybe_create()
let root = @test.elk_graph_json_for_graph(input_graph)
.remember_importer(maybe_importer)
.to_elk()
let engine = @core.new_recursive_graph_layout_engine(runtime, session)
engine.layout(root, @test.new_basic_progress_monitor())
let importer = required_importer(maybe_importer)
importer.transfer_layout(root)
match importer.get_input_model() {
Some(model) => Json::object(model).stringify()
None => {
@core.layout_runtime_raise_unsupported_configuration(
"missing input model",
)
"{}"
}
}
}
///|
fn main raise {
println(layout_json(case_input_graph_json()))
}