oaspec/codegen/ir

Types

A top-level declaration with optional doc comment.

pub type Declaration {
  Declaration(doc: option.Option(String), type_def: TypeDef)
}

Constructors

A named, typed field in a record constructor.

pub type Field {
  Field(name: String, type_expr: String)
}

Constructors

  • Field(name: String, type_expr: String)

A complete generated Gleam source file.

pub type Module {
  Module(
    header: String,
    imports: List(String),
    declarations: List(Declaration),
  )
}

Constructors

  • Module(
      header: String,
      imports: List(String),
      declarations: List(Declaration),
    )

The shapes of type definition that the OpenAPI generator produces.

pub type TypeDef {
  TypeAlias(name: String, target: String)
  RecordType(name: String, fields: List(Field))
  UnionType(name: String, variants: List(Variant))
  EnumType(name: String, variants: List(String))
}

Constructors

  • TypeAlias(name: String, target: String)

    pub type Foo = Bar

  • RecordType(name: String, fields: List(Field))

    pub type Foo { Foo(field1: Type1, field2: Type2) }

  • UnionType(name: String, variants: List(Variant))

    pub type Foo { FooBar(Bar) FooBaz(Baz) }

  • EnumType(name: String, variants: List(String))

    pub type Status { StatusActive StatusInactive }

A variant in a union type.

pub type Variant {
  VariantWithType(name: String, inner_type: String)
  VariantEmpty(name: String)
}

Constructors

  • VariantWithType(name: String, inner_type: String)

    Variant with a wrapped type: FooBar(Bar)

  • VariantEmpty(name: String)

    Variant with no payload: FooNone

Search Document