Expand description
Formatters for language-specific code generation output
This module provides a trait-based system for formatting generated code in a way
that respects language-specific conventions and tooling requirements. Each language
binding (Python, TypeScript, Ruby, PHP) implements the Formatter trait to handle
header formatting, import organization, docstring styling, and section merging.
§Design
The Formatter trait abstracts away language-specific formatting rules while ensuring
consistent code generation across the entire spikard toolkit. Implementers handle:
- Headers: Shebangs, auto-generation notices, module docstrings
- Imports: Dependency declarations, type imports, organization
- Docstrings: Language-specific documentation formatting (
NumPy,JSDoc, etc.) - Merging: Combining sections with proper spacing and deduplication
§Example
use spikard_cli::codegen::formatters::{Formatter, Import, HeaderMetadata, PythonFormatter, PhpFormatter, RustFormatter};
let formatter = PythonFormatter::new();
let metadata = HeaderMetadata {
auto_generated: true,
schema_file: Some("schema.graphql".to_string()),
generator_version: Some("0.6.2".to_string()),
};
let header = formatter.format_header(&metadata);
println!("{}", header);Structs§
- Header
Metadata - Metadata about a generated file used when formatting headers
- Import
- Represents an import/require/use statement in any language
- PhpFormatter
- PHP code formatter implementing PSR-4, PSR-12, and PSR-7 standards
- Python
Formatter - Python code formatter implementing language-specific conventions
- Ruby
Formatter - Ruby code formatter implementing language-specific conventions
- Rust
Formatter - Rust code formatter implementing Rust 2024 edition standards
- Type
Script Formatter - TypeScript code formatter implementing language-specific conventions
Enums§
- Section
- Represents a section of generated code to be merged
Traits§
- Formatter
- Core formatter trait for language-specific code generation output