summaryrefslogtreecommitdiff
path: root/panfry/page.py
diff options
context:
space:
mode:
Diffstat (limited to 'panfry/page.py')
-rwxr-xr-xpanfry/page.py9
1 files changed, 8 insertions, 1 deletions
diff --git a/panfry/page.py b/panfry/page.py
index 01d9fcb..42eda1e 100755
--- a/panfry/page.py
+++ b/panfry/page.py
@@ -35,7 +35,14 @@ class TOCItem:
@property
def header_id(self):
- remove = re.compile('[+~!@#$%^&*\(\){}\[\];:"\',.<>?/\`]')
+ # - Remove all formatting, links, etc.
+ # - Remove all punctuation, except underscores, hyphens, and periods.
+ # - Replace all spaces and newlines with hyphens.
+ # - Convert all alphabetic characters to lowercase.
+ # - Remove everything up to the first letter (identifiers may not begin
+ # with a number or punctuation mark).
+
+ remove = re.compile('^[^a-zA-Z]|[+~!@#$%^&*\(\){}\[\];:"\',<>?/\`]')
header_id = self.heading.lower().replace('\n', ' ').replace(' ', '-')
return remove.sub('', header_id)