You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
2.0 KiB
63 lines
2.0 KiB
import glob
|
|
import os
|
|
|
|
def build_header(id, title, prev, next):
|
|
prevtext = nexttext = ''
|
|
if prev:
|
|
prevtext = 'prev: ' + prev + '\n'
|
|
if next:
|
|
nexttext = 'next: ' + next + '\n'
|
|
return '''---
|
|
id: %s
|
|
title: %s
|
|
layout: docs
|
|
%s%s---''' % (id, title, prevtext, nexttext)
|
|
|
|
def sanitize(content):
|
|
title,content = content.split('\n', 1)
|
|
title = title[2:].strip()
|
|
return title,content.replace('# ', '## ').strip()
|
|
|
|
def get_dest(filename):
|
|
return os.path.join(os.path.dirname(filename), '..', os.path.basename(filename))
|
|
|
|
def relative_html(filename):
|
|
if not filename:
|
|
return None
|
|
return os.path.splitext(os.path.basename(filename))[0] + '.html'
|
|
|
|
def generate_nav_item(filename, title):
|
|
basename = os.path.splitext(os.path.basename(filename))[0]
|
|
return ' <li><a href="/react/docs/%s.html"{%% if page.id == \'%s\' %%} class="active"{%% endif %%}>%s</a></li>\n' % (basename, basename, title)
|
|
|
|
def main():
|
|
docs = [None] + glob.glob(os.path.join(os.path.dirname(os.path.abspath(__file__)), '*.md'))[:-1] + [None]
|
|
nav = '''
|
|
<div class="nav-docs">
|
|
<div class="nav-docs-section">
|
|
<h3>React documentation</h3>
|
|
<ul>
|
|
%s
|
|
</ul>
|
|
</div>
|
|
</div>'''
|
|
items = ''
|
|
for i in xrange(1, len(docs) - 1):
|
|
prev = relative_html(docs[i - 1])
|
|
next = relative_html(docs[i + 1])
|
|
with open(docs[i], 'r') as src, open(get_dest(docs[i]), 'w') as dest:
|
|
title,content = sanitize(src.read())
|
|
header = build_header(
|
|
os.path.splitext(os.path.basename(docs[i]))[0],
|
|
title,
|
|
prev,
|
|
next
|
|
)
|
|
dest.write(header + '\n' + content)
|
|
if docs[i].count('.') == 1:
|
|
items += generate_nav_item(docs[i], title)
|
|
with open(os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', '..', '_includes', 'nav_docs.html'), 'w') as f:
|
|
f.write(nav % items)
|
|
|
|
if __name__ == '__main__':
|
|
main()
|
|
|