zoobzio January 18, 2026 Edit this page

API Reference

Core Package

New

func New(providers ...Provider) *Chunker

Creates a new Chunker with the given providers. Each provider handles one language.

Panics: Never.

c := chisel.New(
    golang.New(),
    typescript.New(),
    python.New(),
)

Chunker.Chunk

func (c *Chunker) Chunk(ctx context.Context, lang Language, filename string, content []byte) ([]Chunk, error)

Routes the request to the appropriate provider and returns chunks.

Errors:

  • Returns error if no provider is registered for lang
  • Returns error if the provider fails to parse
chunks, err := c.Chunk(ctx, chisel.Go, "main.go", source)
if err != nil {
    // Handle parse error or missing provider
}

Chunker.Register

func (c *Chunker) Register(p Provider)

Adds a provider to the chunker. If a provider for the same language exists, it is replaced.

Panics: Never.

c := chisel.New()
c.Register(golang.New())
c.Register(typescript.New())

Chunker.Languages

func (c *Chunker) Languages() []Language

Returns all registered languages. Order is not guaranteed.

Panics: Never.

c := chisel.New(golang.New(), typescript.New())
langs := c.Languages()
// langs contains chisel.Go and chisel.TypeScript

Chunker.HasProvider

func (c *Chunker) HasProvider(lang Language) bool

Returns true if a provider is registered for the language.

Panics: Never.

c := chisel.New(golang.New())
c.HasProvider(chisel.Go)         // true
c.HasProvider(chisel.TypeScript) // false

Go Provider

Package: github.com/zoobz-io/chisel/golang

New

func New() *Provider

Creates a new Go provider using stdlib go/parser.

Panics: Never.

provider := golang.New()

Provider.Chunk

func (p *Provider) Chunk(ctx context.Context, filename string, content []byte) ([]Chunk, error)

Parses Go source and extracts semantic chunks.

Errors:

  • Returns parse error if source is invalid Go
chunks, err := provider.Chunk(ctx, "main.go", source)

Provider.Language

func (p *Provider) Language() Language

Returns chisel.Go.


TypeScript Provider

Package: github.com/zoobz-io/chisel/typescript

New

func New() *Provider

Creates a TypeScript provider using tree-sitter.

provider := typescript.New()

NewJavaScript

func NewJavaScript() *Provider

Creates a JavaScript provider (same parser, different language identifier).

provider := typescript.NewJavaScript()

Provider.Chunk

func (p *Provider) Chunk(ctx context.Context, filename string, content []byte) ([]Chunk, error)

Parses TypeScript/JavaScript source and extracts chunks.

Errors:

  • Returns error on tree-sitter failure (rare)

Provider.Language

func (p *Provider) Language() Language

Returns chisel.TypeScript or chisel.JavaScript depending on constructor.


Python Provider

Package: github.com/zoobz-io/chisel/python

New

func New() *Provider

Creates a Python provider using tree-sitter.

provider := python.New()

Provider.Chunk

func (p *Provider) Chunk(ctx context.Context, filename string, content []byte) ([]Chunk, error)

Parses Python source and extracts chunks.

Provider.Language

func (p *Provider) Language() Language

Returns chisel.Python.


Rust Provider

Package: github.com/zoobz-io/chisel/rust

New

func New() *Provider

Creates a Rust provider using tree-sitter.

provider := rust.New()

Provider.Chunk

func (p *Provider) Chunk(ctx context.Context, filename string, content []byte) ([]Chunk, error)

Parses Rust source and extracts chunks.

Provider.Language

func (p *Provider) Language() Language

Returns chisel.Rust.


Markdown Provider

Package: github.com/zoobz-io/chisel/markdown

New

func New() *Provider

Creates a Markdown provider that splits on headers.

provider := markdown.New()

Provider.Chunk

func (p *Provider) Chunk(ctx context.Context, filename string, content []byte) ([]Chunk, error)

Splits Markdown into sections based on headers.

Errors: Never returns error (simple string parsing).

Provider.Language

func (p *Provider) Language() Language

Returns chisel.Markdown.


Test Helpers

Package: github.com/zoobz-io/chisel/testing

AssertChunkCount

func AssertChunkCount(t *testing.T, chunks []Chunk, want int)

Fails the test if chunk count doesn't match.

AssertHasSymbol

func AssertHasSymbol(t *testing.T, chunks []Chunk, symbol string)

Fails the test if no chunk has the given symbol.

AssertHasKind

func AssertHasKind(t *testing.T, chunks []Chunk, kind Kind)

Fails the test if no chunk has the given kind.

FindBySymbol

func FindBySymbol(chunks []Chunk, symbol string) *Chunk

Returns first chunk with symbol, or nil if not found.

FindByKind

func FindByKind(chunks []Chunk, kind Kind) *Chunk

Returns first chunk with kind, or nil if not found.

CountByKind

func CountByKind(chunks []Chunk, kind Kind) int

Returns number of chunks with the given kind.