baobao_codegen/builder/
mod.rs

1//! Code generation building blocks.
2//!
3//! This module provides the core primitives for generating code:
4//! - [`CodeBuilder`] - Fluent API for building indented code
5//! - [`CodeFragment`] - Intermediate representation for code pieces
6//! - [`Renderable`] - Trait for types that can be converted to code fragments
7//! - [`FileBuilder`] - Composition of imports and code
8//! - [`Indent`] - Indentation configuration
9//!
10//! # Language-Agnostic Expression Builders
11//!
12//! - [`Value`] - Semantic values (bool, int, duration, enum variants, etc.)
13//! - [`BuilderSpec`] - Declarative specification for builder/fluent API patterns
14//! - [`Block`] - Scoped expressions with let bindings
15//! - [`Renderer`] - Trait for language-specific rendering
16//!
17//! # Declarative Type Specifications
18//!
19//! - [`StructSpec`], [`EnumSpec`] - Type definitions
20//! - [`FunctionSpec`] - Function and method definitions
21//! - [`TypeRef`] - Language-agnostic type references
22//! - [`TypeMapper`] - Trait for language-specific type rendering
23
24mod code_builder;
25mod expr;
26mod file_builder;
27mod function;
28mod indent;
29mod renderable;
30mod structure;
31mod types;
32
33pub use code_builder::CodeBuilder;
34pub use expr::{
35    Binding, Block, BuilderSpec, Constructor, MethodCall, RenderOptions, Renderer, Terminal, Value,
36};
37pub use file_builder::FileBuilder;
38pub use function::{
39    FunctionRenderer, FunctionSpec, GenericParam, MatchArm, ParamSpec, Pattern, Receiver, Statement,
40};
41pub use indent::Indent;
42pub use renderable::{CodeFragment, Renderable};
43pub use structure::{
44    AttributeArg, AttributeSpec, EnumSpec, FieldSpec, StructSpec, StructureRenderer, VariantKind,
45    VariantSpec,
46};
47pub use types::{PrimitiveType, TypeMapper, TypeRef, Visibility};