Download the PHP package cable8mm/toc without Composer
On this page you can find all versions of the php package cable8mm/toc. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Package toc
Short Description The TOC is an opinionated table of contents generator.
License MIT
Homepage https://github.com/cable8mm/toc
Informations about the package toc
TOC - Table of Contents Parser for Markdown
TOC parses Markdown documents and extracts table of contents (navigation) structures. It supports multiple documentation formats including Laravel, Samsung Tizen, Naver Clova AI, and Rhymix.
Originally built for the document2 project.
Installation
Quick Start
Parse a Markdown TOC and iterate over its items:
Supported Document Styles
Laravel Style (- ## Section, indented - [Page](link))
Samsung Tizen Style (# Section, ## [Page](link))
Naver Clova AI Style (# Section, * [Page](link) with 2-space indent)
Rhymix Style (### Section, - [Page](link))
API Reference
Toc — Main parser class
| Method | Description | Returns |
|---|---|---|
Toc::of(string $markdown) |
Create and parse markdown in one call (factory) | Toc |
new Toc(string $markdown) |
Create instance (call ->of() to parse) |
Toc |
getLines() |
Get all parsed line items | Item[] |
getLine(int $n) |
Get the nth line item (0-based) | Item |
getSectionTitle(string $pageTitle) |
Find the section title containing a page | ?string |
toArray() |
Get grouped sections with their pages | array |
addConverters(ConverterInterface[]) |
Add custom preprocessors | static |
Example — find which section a page belongs to:
Example — grouped navigation structure:
Item — A single TOC line
| Method | Description | Returns |
|---|---|---|
getTitle() |
Extract the display title | string |
getLink() |
Extract the URL (if it's a link) | ?string |
getType() |
Whether it's a section or page |
ItemEnum |
getDepth() |
Nesting level (1-based) | int |
toHtml() |
Render as <li> HTML tag |
string |
Example — render as HTML:
ItemEnum — Item type enum
| Case | Meaning |
|---|---|
ItemEnum::section |
A section heading (no link) |
ItemEnum::page |
A page entry (has a link) |
Advanced Usage
Custom depth calculation
Different documentation styles use different indent patterns. Pass style-specific parameters to getDepth():
Custom converters
Add preprocessors to clean or transform markdown before parsing:
You can also implement your own converter by implementing ConverterInterface:
Testing
Code Style
License
The MIT License (MIT). See LICENSE.