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.