diff options
| author | Scott Bahling <sbahling@mudgum.net> | 2013-03-23 17:28:08 +0100 |
|---|---|---|
| committer | Scott Bahling <sbahling@mudgum.net> | 2013-03-23 17:28:08 +0100 |
| commit | 0426fce3b39ebedf6b92bfe6b18aa08987b11ea2 (patch) | |
| tree | 5fb1e4f1a8a117d9e7acbbbf289f9e46336cba64 /panfry/page.py | |
| parent | e80e4d436248d7129e3c9d58dfa61c28565a3e92 (diff) | |
| download | panfry-0426fce3b39ebedf6b92bfe6b18aa08987b11ea2.tar.gz panfry-0426fce3b39ebedf6b92bfe6b18aa08987b11ea2.tar.xz panfry-0426fce3b39ebedf6b92bfe6b18aa08987b11ea2.zip | |
Improve header id generation
Diffstat (limited to 'panfry/page.py')
| -rwxr-xr-x | panfry/page.py | 9 |
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) |
