@eryxdoc/extract Module

Public API for extracting structured documentation from a Luau parse result.

Usage:

local extract = require("eryxdoc/extract")
local luau = require("@eryx/luau/ast")

local source = fs.openSync("mymodule.luau"):readSync()
local result = luau.parse(source, { captureComments = true })
local docs = extract.extract(result, string.split(source, "\n"))
-- docs.functions, docs.types, docs.constants, docs.moduleDescription

Summary

Functions

extract.extract(result: luau.ParseResult, sourceLines: { string })ExtractedDocs
extract.describeType(node: luau.AstType | luau.AstTypePack)string
extract.describeTypeFull(node: luau.AstType | luau.AstTypePack)string

API Reference

Functions

extract.extract

extract.extract(result: luau.ParseResult, sourceLines: { string })ExtractedDocs

extract.describeType

String form derived from parts.

extract.describeType(node: luau.AstType | luau.AstTypePack)string

extract.describeTypeParts

extract.describeTypeParts(node: luau.AstType | luau.AstTypePack){ SignaturePart }

extract.describeTypeFull

Multi-line string for large unions/intersections (used in type alias signatures).

extract.describeTypeFull(node: luau.AstType | luau.AstTypePack)string

Types

SignaturePart

Implements: types.SignaturePart

ParamMeta

type ParamMeta = types.ParamMeta
Implements: types.ParamMeta

ReturnMeta

type ReturnMeta = types.ReturnMeta
Implements: types.ReturnMeta

SignatureMeta

Implements: types.SignatureMeta

FuncDoc

type FuncDoc = types.FuncDoc
Implements: types.FuncDoc

OverloadDoc

Implements: types.OverloadDoc

TypeDoc

type TypeDoc = types.TypeDoc
Implements: types.TypeDoc

ConstDoc

type ConstDoc = types.ConstDoc
Implements: types.ConstDoc

ExtractedDocs

Implements: types.ExtractedDocs