From eba1e53706b24d95e9257a23cbebb9abb6818031 Mon Sep 17 00:00:00 2001 From: Matthieu Felix Date: Tue, 14 Nov 2017 18:57:33 -0500 Subject: [PATCH] Add TOC depth option --- lib/markdown2.py | 6 ++++++ test/tm-cases/toc_depth.html | 19 +++++++++++++++++++ test/tm-cases/toc_depth.opts | 5 +++++ test/tm-cases/toc_depth.tags | 1 + test/tm-cases/toc_depth.text | 20 ++++++++++++++++++++ test/tm-cases/toc_depth.toc_html | 13 +++++++++++++ 6 files changed, 64 insertions(+) create mode 100644 test/tm-cases/toc_depth.html create mode 100644 test/tm-cases/toc_depth.opts create mode 100644 test/tm-cases/toc_depth.tags create mode 100644 test/tm-cases/toc_depth.text create mode 100644 test/tm-cases/toc_depth.toc_html diff --git a/lib/markdown2.py b/lib/markdown2.py index 84d7d6c2..1998c140 100755 --- a/lib/markdown2.py +++ b/lib/markdown2.py @@ -243,6 +243,10 @@ def __init__(self, html4tags=False, tab_width=4, safe_mode=None, assert isinstance(self.extras, dict) if "toc" in self.extras and "header-ids" not in self.extras: self.extras["header-ids"] = None # "toc" implies "header-ids" + if self.extras["toc"] is None: + self._toc_depth = 6 + else: + self._toc_depth = self.extras["toc"].get("depth", 6) self._instance_extras = self.extras.copy() self.link_patterns = link_patterns @@ -1500,6 +1504,8 @@ def header_id_from_text(self, text, prefix, n): _toc = None def _toc_add_entry(self, level, id, name): + if level > self._toc_depth: + return if self._toc is None: self._toc = [] self._toc.append((level, id, self._unescape_special_chars(name))) diff --git a/test/tm-cases/toc_depth.html b/test/tm-cases/toc_depth.html new file mode 100644 index 00000000..9b02121a --- /dev/null +++ b/test/tm-cases/toc_depth.html @@ -0,0 +1,19 @@ +

README for Blah

+ +

Introduction

+ +

The Meat

+ +

Beef

+ +
Steak
+ +
Burgers
+ +

Chicken

+ +

Pork

+ +

Mmmmmmmm, bacon

+ +

At the top level again!?

diff --git a/test/tm-cases/toc_depth.opts b/test/tm-cases/toc_depth.opts new file mode 100644 index 00000000..4494a0ac --- /dev/null +++ b/test/tm-cases/toc_depth.opts @@ -0,0 +1,5 @@ +{ + "extras": { + "toc": {"depth": 3} + } +} diff --git a/test/tm-cases/toc_depth.tags b/test/tm-cases/toc_depth.tags new file mode 100644 index 00000000..2b2472e0 --- /dev/null +++ b/test/tm-cases/toc_depth.tags @@ -0,0 +1 @@ +toc extra diff --git a/test/tm-cases/toc_depth.text b/test/tm-cases/toc_depth.text new file mode 100644 index 00000000..34f629a6 --- /dev/null +++ b/test/tm-cases/toc_depth.text @@ -0,0 +1,20 @@ +# README for Blah + +## Introduction + +## The Meat + +### Beef + +##### Steak + +##### Burgers + +### Chicken + +### Pork + +#### Mmmmmmmm, bacon + +# At the *top* level again!? + diff --git a/test/tm-cases/toc_depth.toc_html b/test/tm-cases/toc_depth.toc_html new file mode 100644 index 00000000..3696712a --- /dev/null +++ b/test/tm-cases/toc_depth.toc_html @@ -0,0 +1,13 @@ +