Expand description
§codize
Simple, language-agnostic library that pretty-prints code for your code-generation tool.
First, create a Code enum with the code structure with one of the ways listed below.
Then, the Format struct can be used to format the output. Or you can simply use to_string
for a quick formatting with the default parameters
§Code Examples
The Code enum stores all of the code structures. You can create it in one of the following
ways:
- Create a single line from a
Stringor&strwithinto() - A block of code with an indented body with the
cblock!macro - A list of code segments with a separator with the
clist!macro - A concatenation of multiple code segments, either converted from an iterator with
into(), or with thecconcat!macro which allows for mixing different types of code segments
Usually, the macros will automatically convert the input to Code by calling Code::from.
use codize::{cblock, clist, cconcat};
let code = cconcat![
"",
"/// This block is auto-generated",
"",
cblock!("fn main() {", [
cblock!("println!(", [
clist!("," => [r#""{}, {}!""#, r#""Hello""#, r#""world!""#])
], ");")
], "}"),
];
let expected = r#"
/// This block is auto-generated
fn main() {
println!(
"{}, {}!",
"Hello",
"world!",
);
}"#;
assert_eq!(expected, code.to_string());
§Format Examples
You can use the FormatCode trait along with the Format struct to change global
formatting options
use codize::{cblock, Format, FormatCode};
let code = cblock!("fn main() {", ["println!(\"Hello, world!\");"], "}");
let indent_2 =
r#"fn main() {
println!("Hello, world!");
}"#;
assert_eq!(indent_2, code.format_with(&Format::indent(2)));
let indent_tab =
"fn main() {
\tprintln!(\"Hello, world!\");
}";
assert_eq!(indent_tab, code.format_with(&Format::indent_tab()));Macros§
Structs§
- Block
- A block of code with a starting line, ending line, and an indented body
- Concat
- A concatenation of multiple code sections
- Format
- Formatting options
- List
- A list of code segments separated by a separator
Enums§
Traits§
- Format
Code - Enable different formatting options for
Codestructures