nori/codegen/plugin

Plugin system for code generation.

Plugins are function values — idiomatic Gleam, no traits needed.

Types

A generated output file.

pub type GeneratedFile {
  GeneratedFile(path: String, content: String)
}

Constructors

  • GeneratedFile(path: String, content: String)

    Arguments

    path

    Relative path for the output file

    content

    File content

Configuration for a code generator.

pub type GeneratorConfig {
  GeneratorConfig(
    output_dir: String,
    overwrite: Bool,
    extra: dict.Dict(String, String),
  )
}

Constructors

  • GeneratorConfig(
      output_dir: String,
      overwrite: Bool,
      extra: dict.Dict(String, String),
    )

    Arguments

    output_dir

    Output directory for generated files

    overwrite

    Whether to overwrite existing files

    extra

    Plugin-specific configuration options

A code generation plugin.

pub type Plugin {
  Plugin(
    name: String,
    generate: fn(ir.CodegenIR, GeneratorConfig) -> Result(
      List(GeneratedFile),
      String,
    ),
  )
}

Constructors

  • Plugin(
      name: String,
      generate: fn(ir.CodegenIR, GeneratorConfig) -> Result(
        List(GeneratedFile),
        String,
      ),
    )

    Arguments

    name

    Plugin name

    generate

    Generate function: takes IR + config, returns list of files

Values

pub fn default_config(output_dir: String) -> GeneratorConfig

Creates a default GeneratorConfig.

Search Document