1pub mod error;
2pub mod ir;
3pub mod loader;
4pub mod model;
5pub mod resolve;
6pub mod util;
7
8use crate::{
9 error::Result,
10 ir::{FlowIR, NodeIR, RouteIR},
11 model::FlowDoc,
12};
13use indexmap::IndexMap;
14
15pub fn to_ir(flow: FlowDoc) -> Result<FlowIR> {
17 let mut nodes: IndexMap<String, NodeIR> = IndexMap::new();
18 for (id, node) in flow.nodes {
19 nodes.insert(
20 id,
21 NodeIR {
22 component: node.component,
23 payload_expr: node.payload,
24 routes: node
25 .routing
26 .into_iter()
27 .map(|route| RouteIR {
28 to: route.to,
29 out: route.out.unwrap_or(false),
30 })
31 .collect(),
32 },
33 );
34 }
35
36 Ok(FlowIR {
37 id: flow.id,
38 flow_type: flow.flow_type,
39 start: flow.start,
40 parameters: flow.parameters,
41 nodes,
42 })
43}