Skip to main content

Module formatters

Module formatters 

Source
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§

HeaderMetadata
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
PythonFormatter
Python code formatter implementing language-specific conventions
RubyFormatter
Ruby code formatter implementing language-specific conventions
RustFormatter
Rust code formatter implementing Rust 2024 edition standards
TypeScriptFormatter
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