witx-codegen 0.11.4

WITX code generator for WebAssembly guest modules.
Documentation
use std::io::Write;

use super::*;

impl DocGenerator {
    fn define_union_member<T: Write>(
        w: &mut PrettyWriter<T>,
        _union_name: &str,
        _i: usize,
        member: &ASUnionMember,
    ) -> Result<(), Error> {
        let member_type = member.type_.as_ref();
        w.write_line(format!(
            "{}: {}",
            member.name.as_var(),
            member_type.as_lang(),
        ))?;
        Ok(())
    }

    pub fn define_as_union<T: Write>(
        w: &mut PrettyWriter<T>,
        name: &str,
        union_: &ASUnion,
    ) -> Result<(), Error> {
        let tag_repr = union_.tag_repr.as_ref();
        w.write_lines(format!(
            "### {}\nTagged union with tag type: {} and the following possibilities:",
            name.as_type(),
            tag_repr.as_lang()
        ))?
        .eob()?;
        {
            let mut w = w.new_block();
            for (i, member) in union_.members.iter().enumerate() {
                Self::define_union_member(&mut w, name, i, member)?;
            }
        }
        Ok(())
    }
}