Skip to content
/ toc Public

Generate a table of contents from the comments of a file

License

Notifications You must be signed in to change notification settings

AlphaJack/toc

Repository files navigation

toc

Generate a table of contents from the comments of a file

Example table of contents generated by toc

What is it?

toc is a CLI utility to generates Table of Contents of text files. It aims to be the tree for the contents of a file, instead of a directory.

toc comes with native support for Markdown, AsciiDoc, reStructuredText, HTML and many more. It can support any language through a special kind of comments.1

Why should I use it?

Few reasons that you may consider:

  • it can make your files and code base understandable in seconds, to you and others
  • you can jump directly to the section you need to edit, because you see where it's located
  • it makes you reflect about the structure of your file

How does it work?

For markup languages such as Markdown, AsciiDoc, reStructuredText and HTML, no changes are needed. For other languages (e.g. C), write some comments representing the different sections of a file.1 After this, run toc on that file to turn those comments into a table of contents.

Comments are structured in this way:

Syntax of comments used to generate table of contents

By running toc file.c, you will read the table of contents of that file:

Toc generated from syntax comments

How can I install it?

First, you need Python installed in your system.

Then, you can install toc by running:

pip install tableofcontents

If you are using Arch or Manjaro Linux, you can install toc directly from the AUR.

You should now be able to run toc -h to display a list of parameter you can use.

See USAGE.md for step-by-step explanations of different features, and a list of languages supported natively or that need special attention (e.g. CSS)

How can I contribute?

See CONTRIBUTING.md

What has changed from previous versions?

See CHANGELOG.md

Footnotes

  1. For examples of valid and invalid comments, see https://regex101.com/r/ngzZXN/2 2