Skip to main content

openapi_nexus/ir/lower/
mod.rs

1//! Lowering pass: converts versioned OpenAPI specs into the version-agnostic IR.
2//!
3//! Entry point: `lower(parsed: ParsedSpec) -> Result<IrSpec, LowerError>`
4//!
5//! Dispatches to version-specific lowering functions that all produce the same `IrSpec`.
6
7pub mod v30;
8pub mod v31;
9pub mod v32;
10
11use crate::ir::types::IrSpec;
12use crate::parser::ParsedSpec;
13
14mod error;
15pub use error::LowerError;
16
17/// Lower a parsed OpenAPI spec (any supported version) into the IR.
18pub fn lower(parsed: ParsedSpec) -> Result<IrSpec, LowerError> {
19    lower_impl(&parsed)
20}
21
22fn lower_impl(parsed: &ParsedSpec) -> Result<IrSpec, LowerError> {
23    match parsed {
24        ParsedSpec::V30(spec) => v30::lower_v30(spec),
25        ParsedSpec::V31(spec) => v31::lower_v31(spec),
26        ParsedSpec::V32(spec) => v32::lower_v32(spec),
27    }
28}