# Remnants (could go into the master document as the first header)
-#bootstrap_path: /bootstrap-2.2.2
+#bootstrap_path: /bootstrap-3.3.7
#page_title: The Ardour Manual
import os
# This matches all *non* letter/number, ' ', '.', '-', and '_' chars
cleanString = re.compile(r'[^a-zA-Z0-9 \._-]+')
# This matches new 'unbreakable' links, up to the closing quote or anchor
-findLinks = re.compile(r'@@[^#"]*')
+findLinks = re.compile(r'"@@[^#"]*[#"]')
+githuburl = 'https://github.com/Ardour/manual/edit/master/include/'
#
# Create an all lowercase filename without special characters and with spaces
return children
+
#
# Get the parent at this level
#
return pos
+
#
# Creates the BreadCrumbs
#
def GetBreadCrumbs(fs, pos):
- breadcrumbs = ' <span class="divider">></span> <li class="active">'+ fs[pos]['title'] + '</li>'
# The <span class="divider">></span> is for Bootstrap pre-3.0
+ breadcrumbs = '<li class="active">'+ fs[pos]['title'] + '</li>'
+
while pos >= 0:
- pos = GetParent(fs,pos)
+ pos = GetParent(fs, pos)
+
if pos >= 0:
- breadcrumbs=' <span class="divider">></span> <li><a href="/' + fs[pos]['filename'] + '/">'+ fs[pos]['title'] + '</a></li>'+ breadcrumbs
+ breadcrumbs='<li><a href="/' + fs[pos]['filename'] + '/">'+ fs[pos]['title'] + '</a></li>'+ breadcrumbs
- breadcrumbs = '<ol class="breadcrumb"><li><a href="/toc/index.html">Home</a></li>' + breadcrumbs + '</ol>'
+ breadcrumbs = '<ul class="breadcrumb"><li><a href="/toc/index.html">Home</a></li>' + breadcrumbs + '</ul>'
return breadcrumbs
+
#
# Make an array of children attached to each node in the file structure
# (It's a quasi-tree structure, and can be traversed as such.)
for hdr in fs:
if 'link' in hdr:
- linkDict['@@' + hdr['link']] = '/' + hdr['filename'] + '/'
+ linkDict['"@@' + hdr['link'] + '"'] = '"/' + hdr['filename'] + '/"'
+ linkDict['"@@' + hdr['link'] + '#'] = '"/' + hdr['filename'] + '/index.html#'
return linkDict
#
# Internal links are of the form '@@link-name', which are references to the
-# 'link:' field in the part header. We have to find all occurances and replace
+# 'link:' field in the part header. We have to find all occurrences and replace
# them with the appropriate link.
#
def FixInternalLinks(links, content, title):
template = temp.read()
temp.close()
-template = template.replace('{{page.bootstrap_path}}', '/bootstrap-2.2.2')
+template = template.replace('{{page.bootstrap_path}}', '/bootstrap-3.3.7')
template = template.replace('{{page.page_title}}', 'The Ardour Manual')
if level == 0:
toc = toc + '<h2>Part ' + num2roman(levelNums[level]) + ': ' + header['title'] + '</h2>\n';
elif level == 1:
- toc = toc + ' <p id=chapter>Ch. ' + str(levelNums[level]) + ': <a href="/' + header['filename'] + '/">' + header['title'] + '</a></p>\n'
+ toc = toc + ' <p class="chapter">Ch. ' + str(levelNums[level]) + ': <a href="/' + header['filename'] + '/">' + header['title'] + '</a></p>\n'
elif level == 2:
- toc = toc + ' <a id=subchapter href="/' + header['filename'] + '/">' + header['title'] + '</a><br>\n'
+ toc = toc + ' <p class="subchapter"><a href="/' + header['filename'] + '/">' + header['title'] + '</a></p>\n'
elif level == 3:
- toc = toc + ' <a id=subchapter href="/' + header['filename'] + '/">' + header['title'] + '</a><br>\n'
+ toc = toc + ' <p class="section"><a href="/' + header['filename'] + '/">' + header['title'] + '</a></p>\n'
elif level == 4:
- toc = toc + ' <a id=subchapter href="/' + header['filename'] + '/">' + header['title'] + '</a><br>\n'
+ toc = toc + ' <p class="subsection"><a href="/' + header['filename'] + '/">' + header['title'] + '</a></p>\n'
# Make the 'this thing contains...' stuff
if HaveChildren(fileStruct, pageNumber):
parent = GetParent(fileStruct, pageNumber)
- # Make the 'Previous' & 'Next' content
+ # Make the 'Previous', 'Up' & 'Next' content
nLink = ''
pLink = ''
uLink = ''
if pageNumber > 0:
- pLink = '<li><a title="' + fileStruct[pageNumber - 1]['title'] + '" href="/' + fileStruct[pageNumber - 1]['filename'] + '/" class="previous"> ← Previous </a></li>'
+ pLink = '<li class="previous"><a title="' + fileStruct[pageNumber - 1]['title'] + '" href="/' + fileStruct[pageNumber - 1]['filename'] + '/" class="previous"> ← Previous </a></li>'
if pageNumber < len(fileStruct) - 1:
- nLink = '<li><a title="' + fileStruct[pageNumber + 1]['title'] + '" href="/' + fileStruct[pageNumber + 1]['filename'] + '/" class="next"> Next → </a></li>'
+ nLink = '<li class="next"><a title="' + fileStruct[pageNumber + 1]['title'] + '" href="/' + fileStruct[pageNumber + 1]['filename'] + '/" class="next"> Next → </a></li>'
if level > 0:
uLink = '<li><a title="' + fileStruct[parent]['title'] + '" href="/' + fileStruct[parent]['filename'] + '/" class="active"> ↑ Up </a></li>'
else:
uLink = '<li><a title="Ardour Table of Contents" href="/toc/index.html" class="active"> ↑ Up </a></li>'
- prevnext = '<ul class=pager>' + pLink + uLink + nLink + '</ul>'
+ prevnext = '<ul class="pager">' + pLink + uLink + nLink + '</ul>'
# Make the BreadCrumbs
breadcrumbs = GetBreadCrumbs(fileStruct, pageNumber)
# Chapters, subchapters, sections & subsections can all have content,
# but the basic fundamental organizing unit WRT content is still the
# chapter.
+ githubedit = ''
if level > 0:
if 'include' in header:
srcFile = open('include/' + header['include'])
+ githubedit = '<span style="float:right;"><a title="Edit in GitHub" href="' + githuburl + header['include'] + '"><img src="/images/github.png" alt="Edit on GitHub"/></a></span>'
content = srcFile.read()
srcFile.close()
content = FixInternalLinks(links, content, header['title'])
# Add header information to the page if in dev mode
- if devmode and 'link' in header:
- content = '<h1>link: ' + header['link'] + '</h1>\n<br><br>\n' + content
+ if devmode:
+ devnote ='<aside style="background-color:indigo; color:white;">'
+ if 'filename' in header:
+ devnote = devnote + 'filename: ' + header['filename'] + '<br>'
+ if 'include' in header:
+ devnote = devnote + 'include: ' + header['include'] + '<br>'
+ if 'link' in header:
+ devnote = devnote + 'link: ' + header['link'] + '<br>'
+ content = devnote + '</aside>' + content
# Set up the actual page from the template
if 'style' not in header:
page = page.replace('{{ page.title }}', header['title'])
page = page.replace('{% tree %}', sidebar)
page = page.replace('{% prevnext %}', prevnext)
+ page = page.replace('{% githubedit %}', githubedit)
page = page.replace('{% breadcrumbs %}', breadcrumbs)
page = page.replace('{{ content }}', content + more)
page = page.replace('{% tree %}', sidebar)
page = page.replace('{{ content }}', toc)
page = page.replace('{% prevnext %}', '')
+page = page.replace('{% githubedit %}', '')
page = page.replace('{% breadcrumbs %}', '')
os.mkdir(siteDir + 'toc', 0o775)