pub struct CodeBuilder { /* private fields */ }Expand description
Fluent API for building code with proper indentation.
Supports both consuming methods (returning Self) for chaining and
mutable methods (returning &mut Self) for the new API.
§Example (Consuming API)
use baobao_codegen::builder::CodeBuilder;
let code = CodeBuilder::new(Default::default())
.line("fn main() {")
.indent()
.line("println!(\"Hello, world!\");")
.dedent()
.line("}")
.build();
assert_eq!(code, "fn main() {\n println!(\"Hello, world!\");\n}\n");§Example (Mutable API)
use baobao_codegen::builder::CodeBuilder;
let mut builder = CodeBuilder::rust();
builder
.push_line("fn main() {")
.push_indent()
.push_line("println!(\"Hello\");")
.push_dedent()
.push_line("}");
let code = builder.build();Implementations§
Source§impl CodeBuilder
impl CodeBuilder
Sourcepub fn typescript() -> Self
pub fn typescript() -> Self
Create a new CodeBuilder with 2-space indentation (JS/TS default).
Sourcepub fn push_line(&mut self, s: &str) -> &mut Self
pub fn push_line(&mut self, s: &str) -> &mut Self
Add a line of code with current indentation (mutable).
Sourcepub fn push_blank(&mut self) -> &mut Self
pub fn push_blank(&mut self) -> &mut Self
Add a blank line (mutable).
Sourcepub fn push_raw(&mut self, s: &str) -> &mut Self
pub fn push_raw(&mut self, s: &str) -> &mut Self
Add raw text without indentation or newline (mutable).
Sourcepub fn push_indent(&mut self) -> &mut Self
pub fn push_indent(&mut self) -> &mut Self
Increase indentation level (mutable).
Sourcepub fn push_dedent(&mut self) -> &mut Self
pub fn push_dedent(&mut self) -> &mut Self
Decrease indentation level (mutable).
Sourcepub fn push_jsdoc(&mut self, text: &str) -> &mut Self
pub fn push_jsdoc(&mut self, text: &str) -> &mut Self
Add a JSDoc comment (mutable).
Sourcepub fn push_rust_doc(&mut self, text: &str) -> &mut Self
pub fn push_rust_doc(&mut self, text: &str) -> &mut Self
Add a Rust doc comment (mutable).
Sourcepub fn emit(&mut self, node: &impl Renderable) -> &mut Self
pub fn emit(&mut self, node: &impl Renderable) -> &mut Self
Emit a Renderable node (mutable).
This is the primary way to render AST nodes with the new API.
Sourcepub fn apply_fragment(&mut self, fragment: CodeFragment)
pub fn apply_fragment(&mut self, fragment: CodeFragment)
Apply a single code fragment.
Sourcepub fn block<F>(self, header: &str, f: F) -> Selfwhere
F: FnOnce(Self) -> Self,
pub fn block<F>(self, header: &str, f: F) -> Selfwhere
F: FnOnce(Self) -> Self,
Add a block with automatic indentation.
§Example
use baobao_codegen::builder::CodeBuilder;
let code = CodeBuilder::rust()
.block("impl Foo {", |b: CodeBuilder| {
b.line("fn bar(&self) {}")
})
.build();Sourcepub fn block_with_close<F>(self, header: &str, close: &str, f: F) -> Selfwhere
F: FnOnce(Self) -> Self,
pub fn block_with_close<F>(self, header: &str, close: &str, f: F) -> Selfwhere
F: FnOnce(Self) -> Self,
Add a block with a closing line.
§Example
use baobao_codegen::builder::CodeBuilder;
let code = CodeBuilder::rust()
.block_with_close("fn main() {", "}", |b: CodeBuilder| {
b.line("println!(\"Hello\");")
})
.build();Sourcepub fn doc(self, prefix: &str, text: &str) -> Self
pub fn doc(self, prefix: &str, text: &str) -> Self
Add a doc comment line (e.g., /// text for Rust).
Sourcepub fn jsdoc(self, text: &str) -> Self
pub fn jsdoc(self, text: &str) -> Self
Add a JSDoc/TSDoc comment (/** text */ for single line).
Sourcepub fn when<F>(self, condition: bool, f: F) -> Selfwhere
F: FnOnce(Self) -> Self,
pub fn when<F>(self, condition: bool, f: F) -> Selfwhere
F: FnOnce(Self) -> Self,
Conditionally add content.
Sourcepub fn each<T, I, F>(self, items: I, f: F) -> Selfwhere
I: IntoIterator<Item = T>,
F: Fn(Self, T) -> Self,
pub fn each<T, I, F>(self, items: I, f: F) -> Selfwhere
I: IntoIterator<Item = T>,
F: Fn(Self, T) -> Self,
Iterate and add content for each item.
Sourcepub fn current_indent(&self) -> usize
pub fn current_indent(&self) -> usize
Get the current indentation level.
Trait Implementations§
Source§impl Clone for CodeBuilder
impl Clone for CodeBuilder
Source§fn clone(&self) -> CodeBuilder
fn clone(&self) -> CodeBuilder
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for CodeBuilder
impl Debug for CodeBuilder
Auto Trait Implementations§
impl Freeze for CodeBuilder
impl RefUnwindSafe for CodeBuilder
impl Send for CodeBuilder
impl Sync for CodeBuilder
impl Unpin for CodeBuilder
impl UnwindSafe for CodeBuilder
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<D> OwoColorize for D
impl<D> OwoColorize for D
Source§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
Source§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
Source§fn black(&self) -> FgColorDisplay<'_, Black, Self>
fn black(&self) -> FgColorDisplay<'_, Black, Self>
Source§fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
Source§fn red(&self) -> FgColorDisplay<'_, Red, Self>
fn red(&self) -> FgColorDisplay<'_, Red, Self>
Source§fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
Source§fn green(&self) -> FgColorDisplay<'_, Green, Self>
fn green(&self) -> FgColorDisplay<'_, Green, Self>
Source§fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
Source§fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
Source§fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
Source§fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
Source§fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
Source§fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
Source§fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
Source§fn white(&self) -> FgColorDisplay<'_, White, Self>
fn white(&self) -> FgColorDisplay<'_, White, Self>
Source§fn on_white(&self) -> BgColorDisplay<'_, White, Self>
fn on_white(&self) -> BgColorDisplay<'_, White, Self>
Source§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
Source§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
Source§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
Source§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
Source§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
Source§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
Source§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
Source§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
Source§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
Source§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
Source§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
Source§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
Source§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
Source§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
Source§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
Source§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
Source§fn bold(&self) -> BoldDisplay<'_, Self>
fn bold(&self) -> BoldDisplay<'_, Self>
Source§fn dimmed(&self) -> DimDisplay<'_, Self>
fn dimmed(&self) -> DimDisplay<'_, Self>
Source§fn italic(&self) -> ItalicDisplay<'_, Self>
fn italic(&self) -> ItalicDisplay<'_, Self>
Source§fn underline(&self) -> UnderlineDisplay<'_, Self>
fn underline(&self) -> UnderlineDisplay<'_, Self>
Source§fn blink(&self) -> BlinkDisplay<'_, Self>
fn blink(&self) -> BlinkDisplay<'_, Self>
Source§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
Source§fn reversed(&self) -> ReversedDisplay<'_, Self>
fn reversed(&self) -> ReversedDisplay<'_, Self>
Source§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
Source§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg or
a color-specific method, such as OwoColorize::green, Read moreSource§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg or
a color-specific method, such as OwoColorize::on_yellow, Read more