or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

ast.mdbuild.mdcli.mdcodegen.mdcorefn.mddocs.mderrors.mdide.mdindex.mdinteractive.mdparser.mdsugar.mdtypes.md
tile.json

docs.mddocs/

Documentation Generation

Comprehensive documentation extraction and generation from PureScript source code in multiple formats including HTML and Markdown with cross-references and type information.

Capabilities

Documentation Collection

Extract documentation from PureScript source code with comment processing and type information.

-- | Collect documentation from modules
collectDocs :: [Module] -> Either MultipleErrors [DocModule]

-- | Collect documentation with environment context
collectDocsWithEnv :: Environment -> [Module] -> Either MultipleErrors [DocModule]

-- | Documentation module representation
data DocModule = DocModule
  { dmName :: ModuleName
  , dmComments :: Maybe Text
  , dmDeclarations :: [DocDeclaration]
  , dmReExports :: [(InPackage ModuleName, [DocDeclaration])]
  }

-- | Documentation declaration
data DocDeclaration = DocDeclaration
  { declTitle :: Text
  , declComments :: Maybe Text
  , declSourceSpan :: Maybe SourceSpan
  , declChildren :: [ChildDeclaration]
  , declInfo :: DeclarationInfo
  , declKindInfo :: Maybe KindInfo
  }

HTML Documentation Generation

Generate comprehensive HTML documentation with navigation and cross-references.

-- | Generate HTML documentation
writeDocHtml :: DocModule -> Text

-- | Generate HTML documentation with options
writeDocHtmlWithOptions :: HtmlOptions -> DocModule -> Text

-- | HTML generation options
data HtmlOptions = HtmlOptions
  { htmlTitle :: Text
  , htmlCssUrl :: Maybe Text
  , htmlJsUrl :: Maybe Text
  , htmlHierarchyImages :: Bool
  , htmlUsePursuitLinks :: Bool
  , htmlSourceLinks :: Bool
  }

-- | Default HTML options
defaultHtmlOptions :: HtmlOptions

-- | Generate HTML index page
generateHtmlIndex :: [DocModule] -> Text

-- | Generate navigation HTML
generateNavigation :: [DocModule] -> Text

Markdown Documentation Generation

Generate GitHub-compatible Markdown documentation with proper formatting.

-- | Generate Markdown documentation
writeDocMarkdown :: DocModule -> Text

-- | Generate Markdown with options
writeDocMarkdownWithOptions :: MarkdownOptions -> DocModule -> Text

-- | Markdown generation options
data MarkdownOptions = MarkdownOptions
  { markdownTitle :: Text
  , markdownGithubSourceLinks :: Bool
  , markdownPursuitLinks :: Bool
  , markdownTableOfContents :: Bool
  }

-- | Default Markdown options
defaultMarkdownOptions :: MarkdownOptions

-- | Generate Markdown table of contents
generateTOC :: DocModule -> Text

-- | Generate Markdown for declaration
declToMarkdown :: DocDeclaration -> Text

Documentation Rendering

Render PureScript types and values for documentation output.

-- | Render type for documentation
renderDocType :: SourceType -> RenderedCode

-- | Render constraint for documentation
renderDocConstraint :: SourceConstraint -> RenderedCode

-- | Render value signature
renderDocValue :: Ident -> SourceType -> RenderedCode

-- | Rendered code with syntax highlighting
data RenderedCode = RenderedCode
  { rcodeText :: Text
  , rcodeAnnotations :: [CodeAnnotation]
  }

-- | Code annotations for syntax highlighting
data CodeAnnotation = CodeAnnotation
  { caStart :: Int
  , caEnd :: Int
  , caType :: AnnotationType
  , caData :: Maybe Text
  }

-- | Annotation types
data AnnotationType
  = AnnKeyword | AnnType | AnnConstructor | AnnFunction | AnnComment | AnnString

Comment Processing

Process and attach documentation comments to declarations.

-- | Extract documentation comments
extractDocComments :: [Comment] -> Maybe Text

-- | Process documentation comment text
processDocComment :: Text -> Text

-- | Attach comments to declarations
attachComments :: [Comment] -> [Declaration] -> [Declaration]

-- | Comment attachment rules
data CommentRule
  = AttachToNext        -- Attach to following declaration
  | AttachToPrevious    -- Attach to previous declaration
  | StandaloneComment   -- Keep as standalone

-- | Determine comment attachment
determineAttachment :: Comment -> [Declaration] -> CommentRule

Cross-Reference Generation

Generate cross-references and links between documentation elements.

-- | Generate cross-reference links
generateCrossRefs :: [DocModule] -> [DocModule]

-- | Cross-reference information
data CrossRef = CrossRef
  { crSource :: SourceSpan
  , crTarget :: Qualified Ident
  , crKind :: CrossRefKind
  }

-- | Cross-reference kinds
data CrossRefKind
  = LinkToValue | LinkToType | LinkToConstructor | LinkToClass | LinkToModule

-- | Resolve cross-reference
resolveCrossRef :: Environment -> CrossRef -> Maybe DocLink

-- | Documentation link
data DocLink = DocLink
  { dlText :: Text
  , dlUrl :: Text
  , dlTitle :: Maybe Text
  }

Type Class Hierarchy

Generate type class hierarchy documentation and diagrams.

-- | Generate type class hierarchy
generateHierarchy :: [DocModule] -> HierarchyGraph

-- | Type class hierarchy graph
data HierarchyGraph = HierarchyGraph
  { hgNodes :: [HierarchyNode]
  , hgEdges :: [HierarchyEdge]
  }

-- | Hierarchy node (type class)
data HierarchyNode = HierarchyNode
  { hnName :: Qualified (ProperName 'ClassName)
  , hnKind :: SourceKind
  , hnFunctionalDependencies :: [FunctionalDependency]
  , hnMembers :: [Ident]
  }

-- | Hierarchy edge (superclass relationship)
data HierarchyEdge = HierarchyEdge
  { heSuperclass :: Qualified (ProperName 'ClassName)
  , heSubclass :: Qualified (ProperName 'ClassName)
  , heConstraint :: SourceConstraint
  }

-- | Generate GraphViz DOT format
hierarchyToDot :: HierarchyGraph -> Text

-- | Generate SVG hierarchy diagram
hierarchyToSvg :: HierarchyGraph -> Text

Search Index Generation

Generate search indices for documentation browsing.

-- | Generate search index
generateSearchIndex :: [DocModule] -> SearchIndex

-- | Search index data
data SearchIndex = SearchIndex
  { siEntries :: [SearchEntry]
  , siMetadata :: SearchMetadata
  }

-- | Search entry
data SearchEntry = SearchEntry
  { seTitle :: Text
  , seType :: Maybe Text
  , seModule :: ModuleName
  , sePackage :: Maybe Text
  , seComments :: Maybe Text
  , seKind :: SearchKind
  }

-- | Search kinds
data SearchKind
  = SearchValue | SearchType | SearchConstructor | SearchClass | SearchModule

-- | Search index metadata
data SearchMetadata = SearchMetadata
  { smVersion :: Text
  , smGenerated :: UTCTime
  , smPackages :: [Text]
  }

-- | Serialize search index to JSON
searchIndexToJson :: SearchIndex -> Value

Tag Generation

Generate ctags and etags for editor integration.

-- | Generate ctags format
generateCtags :: [DocModule] -> Text

-- | Generate etags format  
generateEtags :: [DocModule] -> Text

-- | Tag entry
data TagEntry = TagEntry
  { teTag :: Text
  , teFile :: FilePath
  , teAddress :: TagAddress
  , teKind :: TagKind
  , teFields :: [(Text, Text)]
  }

-- | Tag address (line number or pattern)
data TagAddress = LineNumber Int | SearchPattern Text

-- | Tag kinds
data TagKind = TagFunction | TagType | TagConstructor | TagClass | TagModule

-- | Convert DocDeclaration to tags
declToTags :: FilePath -> DocDeclaration -> [TagEntry]

Documentation Validation

Validate generated documentation for completeness and correctness.

-- | Validate documentation completeness
validateDocs :: [DocModule] -> Either [DocError] ()

-- | Documentation validation errors
data DocError
  = MissingDocumentation Ident
  | InvalidCrossReference Text
  | MalformedComment Text
  | InconsistentTypeSignature Ident SourceType SourceType

-- | Check for missing documentation
checkMissingDocs :: DocModule -> [DocError]

-- | Validate cross-references
validateCrossRefs :: [DocModule] -> [DocError]

-- | Check documentation coverage
calculateCoverage :: DocModule -> DocCoverage

-- | Documentation coverage statistics
data DocCoverage = DocCoverage
  { dcTotal :: Int
  , dcDocumented :: Int
  , dcPercentage :: Double
  }

Multi-Package Documentation

Generate documentation for multiple packages with cross-package references.

-- | Multi-package documentation
data PackageDocs = PackageDocs
  { pdPackage :: PackageInfo
  , pdModules :: [DocModule]
  , pdDependencies :: [PackageInfo]
  }

-- | PackageInfo
data PackageInfo = PackageInfo
  { piName :: Text
  , piVersion :: Text
  , piHomepage :: Maybe Text
  , piRepository :: Maybe Text
  }

-- | Generate multi-package documentation
generatePackageDocs :: [PackageDocs] -> Text

-- | Cross-package reference resolution
resolveCrossPackageRefs :: [PackageDocs] -> [PackageDocs]

-- | Generate package index
generatePackageIndex :: [PackageDocs] -> Text

Types

Documentation Data Structures

-- | Declaration information
data DeclarationInfo
  = ValueDeclaration (Maybe SourceType)
  | DataDeclaration DataDeclType [TypeParameter] [(ProperName 'ConstructorName, [SourceType])]
  | ExternDataDeclaration SourceKind
  | TypeSynonymDeclaration [TypeParameter] SourceType
  | TypeClassDeclaration [TypeParameter] [SourceConstraint] [FunctionalDependency] [Ident]
  | AliasDeclaration Ident
  | ExternKindDeclaration
  | RoleDeclaration [Role]

-- | Kind information
data KindInfo = KindInfo
  { kiKind :: SourceKind
  , kiConstraints :: [SourceConstraint]
  }

-- | Child declaration
data ChildDeclaration = ChildDeclaration
  { cdeclTitle :: Text
  , cdeclComments :: Maybe Text
  , cdeclSourceSpan :: Maybe SourceSpan
  , cdeclInfo :: DeclarationInfo
  }

-- | Type parameter documentation
data TypeParameter = TypeParameter
  { tpName :: Text
  , tpKind :: Maybe SourceKind
  , tpDescription :: Maybe Text
  }

Output Formats

-- | Documentation output format
data DocFormat
  = HtmlFormat HtmlOptions
  | MarkdownFormat MarkdownOptions
  | CtagsFormat
  | EtagsFormat
  | JsonFormat

-- | Generate documentation in specified format
generateDocs :: DocFormat -> [DocModule] -> Text

-- | Multiple format generation
generateMultiFormat :: [DocFormat] -> [DocModule] -> [(DocFormat, Text)]

-- | Documentation generation result
data DocResult = DocResult
  { drFormat :: DocFormat
  , drContent :: Text
  , drFiles :: [(FilePath, Text)]  -- Additional files (CSS, JS, etc.)
  }

Styling and Themes

-- | Documentation theme
data DocTheme = DocTheme
  { dtName :: Text
  , dtCss :: Text
  , dtJs :: Maybe Text
  , dtFavicon :: Maybe Text
  }

-- | Built-in themes
defaultTheme :: DocTheme
darkTheme :: DocTheme  
minimalistTheme :: DocTheme

-- | Apply theme to HTML documentation
applyTheme :: DocTheme -> Text -> Text

-- | Custom CSS injection
injectCustomCss :: Text -> Text -> Text