forked from kubernetes/autoscaler
-
Notifications
You must be signed in to change notification settings - Fork 0
/
update_toc.py
executable file
·58 lines (51 loc) · 2.02 KB
/
update_toc.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#!/usr/bin/env python3
# Copyright 2017 The Kubernetes Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import re
SECTION_PREFIX = "# "
QUESTION_PREFIX = "### "
def updateFAQ():
with open("FAQ.md","r") as faq_file:
faq_content = faq_file.read()
faq_lines = faq_content.splitlines()
while faq_lines and faq_lines[-1] == '':
faq_lines = faq_lines[:-1]
prefixes = (SECTION_PREFIX, QUESTION_PREFIX)
toc_elements = []
after_toc = False
for line in faq_lines:
if line.strip() == "<!--- TOC END -->":
after_toc = True
if not after_toc:
continue
for i, pref in enumerate(prefixes):
if line.strip().startswith(pref):
processed_line = line.strip()[len(pref):].strip()
if processed_line[-1] == ':':
processed_line = processed_line[:-1]
toc_elements.append((processed_line, i))
in_toc = False
with open("FAQ.md","w") as faq_file:
for line in faq_lines:
if line.strip() == "<!--- TOC BEGIN -->":
in_toc = True
faq_file.write(line +"\n")
for question, indent in toc_elements:
faq_file.write("%s* [%s](#%s)\n" % (' ' * 2 * indent, question, re.sub("[^a-z0-9\- ]+", "", question.lower()).replace(" ","-")))
if line.strip() == "<!--- TOC END -->":
in_toc = False
if not in_toc:
faq_file.write(line+"\n")
if __name__ == '__main__':
updateFAQ()