X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=python%2Fauxiliar%2Fpostprocess_html.py;h=494b2cf503d5d4038ce3f134737dcbde3485c2f5;hb=e12188443ed992f223f0d7fd45965003de94588f;hp=0da36236f5b86859fe8cd863d330a7d8ad70013f;hpb=bbe71ce79e9d57e7664671c769d3e152f06bc8bb;p=lilypond.git
diff --git a/python/auxiliar/postprocess_html.py b/python/auxiliar/postprocess_html.py
index 0da36236f5..494b2cf503 100644
--- a/python/auxiliar/postprocess_html.py
+++ b/python/auxiliar/postprocess_html.py
@@ -13,17 +13,21 @@ import langdefs
# This is to try to make the docball not too big with almost duplicate files
# see process_links()
-non_copied_pages = ['Documentation/user/out-www/lilypond-big-page',
- 'Documentation/user/out-www/lilypond-internals-big-page',
- 'Documentation/user/out-www/lilypond-learning-big-page',
- 'Documentation/user/out-www/lilypond-program-big-page',
- 'Documentation/user/out-www/music-glossary-big-page',
+non_copied_pages = ['Documentation/out-www/notation-big-page',
+ 'Documentation/out-www/internals-big-page',
+ 'Documentation/out-www/learning-big-page',
+ 'Documentation/out-www/usage-big-page',
+ 'Documentation/out-www/music-glossary-big-page',
+ 'Documentation/out-www/contributor',
+ 'Documentation/out-www/changes-big-page',
+ 'Documentation/out-www/essay-big-page',
+ 'Documentation/out-www/extending-big-page',
+ 'Documentation/out-www/snippets',
'out-www/examples',
'Documentation/topdocs',
'Documentation/bibliography',
'Documentation/out-www/THANKS',
'Documentation/out-www/DEDICATION',
- 'Documentation/out-www/devel',
'input/']
def _doc (s):
@@ -42,13 +46,19 @@ footer = '''
'''
+
+web_footer = '''
+
+'''
+
footer_name_version = _doc ('This page is for %(package_name)s-%(package_version)s (%(branch_str)s).')
# ugh, must not have "_doc" in strings because it is naively replaced with "_" in hacked gettext process
-footer_report_links = _doc ('Your suggestions for the documentation are welcome, please report errors to our bug list.')
+footer_report_links = _doc ('We welcome your aid; please help us by reporting errors to our bug list.')
mail_address = 'http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs'
-suggest_Docs_url = 'http://lilypond.org/web/devel/participating/documentation-adding'
+help_us_url = 'http://lilypond.org/help-us.html'
header_tag = ''
header_tag_re = re.compile (header_tag)
@@ -63,7 +73,7 @@ browser_language_url = "/web/about/browser-language"
LANGUAGES_TEMPLATE = '''
%(language_available)s
-
+
%(browser_language)s
'''
@@ -91,43 +101,46 @@ def build_pages_dict (filelist):
def source_links_replace (m, source_val):
return 'href="' + os.path.join (source_val, m.group (1)) + '"'
-splitted_docs_re = re.compile ('(input/lsr/out-www/lilypond-snippets|\
-Documentation/user/out-www/(lilypond|music-glossary|lilypond-program|\
-lilypond-learning))/')
-
-snippets_ref_re = re.compile (r'href="(\.\./)?lilypond-snippets')
-user_ref_re = re.compile ('href="(?:\.\./)?lilypond\
-(-internals|-learning|-program|(?!-snippets))')
+# More hardcoding, yay!
+split_docs_re = re.compile('(Documentation/out-www/(automated-engraving|essay|notation|changes|extending|music-glossary|usage|web|learning|snippets|contributor))/')
+lily_snippets_re = re.compile ('(href|src)="([0-9a-f]{2}/lily-.*?)"')
+pictures_re = re.compile ('src="(pictures/.*?)"')
+lyexamples_re = re.compile ('="web/(ly-examples/.*?)"')
docindex_link_re = re.compile (r'href="index.html"')
-
+manuals_page_link_re = re.compile (r'href="((?:\.\./)+)Documentation/web/manuals')
## Windows does not support symlinks.
-# This function avoids creating symlinks for splitted HTML manuals
+# This function avoids creating symlinks for split HTML manuals
# Get rid of symlinks in GNUmakefile.in (local-WWW-post)
# this also fixes missing PNGs only present in translated docs
-def hack_urls (s, prefix):
- if splitted_docs_re.match (prefix):
- s = re.sub ('(href|src)="(../lily-.*?|.*?[.]png)"', '\\1="../\\2"', s)
-
- # fix xrefs between documents in different directories ad hoc
- if 'user/out-www/lilypond' in prefix:
- s = snippets_ref_re.sub ('href="source/input/lsr/lilypond-snippets', s)
- elif 'input/lsr' in prefix:
- s = user_ref_re.sub ('href="source/Documentation/user/lilypond\\1', s)
-
+def hack_urls (s, prefix, target, is_development_branch):
+ if split_docs_re.match (prefix):
+ s = lily_snippets_re.sub ('\\1="../\\2"', s)
+ s = pictures_re.sub ('src="../\\1"', s)
+ s = lyexamples_re.sub ('="\\1"', s)
+
# we also need to replace in the lsr, which is already processed above!
- if 'input/' in prefix or 'Documentation/topdocs' in prefix:
+ if 'input/' in prefix or 'Documentation/topdocs' in prefix or \
+ 'Documentation/contributor' in prefix:
# fix the link from the regtest, lsr and topdoc pages to the doc index
# (rewrite prefix to obtain the relative path of the doc index page)
rel_link = re.sub (r'out-www/.*$', '', prefix)
rel_link = re.sub (r'[^/]*/', '../', rel_link)
- if 'input/regression' in prefix:
- indexfile = "Documentation/devel/index"
+ if 'input/regression' in prefix or 'Documentation/contributor' in prefix:
+ indexfile = "Documentation/devel"
else:
indexfile = "index"
s = docindex_link_re.sub ('href="' + rel_link + indexfile + '.html\"', s)
-
+ # make the "return to doc index" work with the online website.
+ if target == 'online':
+ if (('Documentation/contributor' in prefix) or
+ is_development_branch):
+ manuals_page = 'development'
+ else:
+ manuals_page = 'manuals'
+ s = manuals_page_link_re.sub (r'href="../../\1website/%s'
+ % manuals_page, s)
source_path = os.path.join (os.path.dirname (prefix), 'source')
if not os.path.islink (source_path):
return s
@@ -140,9 +153,7 @@ doctype_re = re.compile ('(?i)\n'
css_re = re.compile ('(?i)]*)href="[^">]*?lilypond.*\.css"([^>]*)>')
end_head_tag_re = re.compile ('(?i)')
-css_link = """
-
-
+css_link = """
@@ -159,10 +170,8 @@ def add_header (s, prefix):
if not n:
s = header + s
- s = header_tag + '\n' + s
-
if doctype_re.search (s) == None:
- s = doctype + s
+ s = doctype + header_tag + '\n' + s
if css_re.search (s) == None:
depth = (prefix.count ('/') - 1) * '../'
@@ -217,7 +226,7 @@ online_links_re = re.compile ('''(href|src)=['"]\
((?!Compiling-from-source.html")[^/][.]*[^.:'"]*)\
([.]html)(#[^"']*|)['"]''')
offline_links_re = re.compile ('href=[\'"]\
-((?!Compiling-from-source.html")[^/][.]*[^.:\'"]*)([.]html)(#[^"\']*|)[\'"]')
+((?!Compiling-from-source.html")(?![.]{2}/contributor)[^/][.]*[^.:\'"]*)([.]html)(#[^"\']*|)[\'"]')
big_page_name_re = re.compile ('''(.+?)-big-page''')
def process_i18n_big_page_links (match, prefix, lang_ext):
@@ -225,7 +234,8 @@ def process_i18n_big_page_links (match, prefix, lang_ext):
if big_page_name:
destination_path = os.path.normpath (os.path.join (os.path.dirname (prefix),
big_page_name.group (0)))
- if not lang_ext in pages_dict[destination_path]:
+ if not (destination_path in pages_dict and
+ lang_ext in pages_dict[destination_path]):
return match.group (0)
return 'href="' + match.group (1) + '.' + lang_ext \
+ match.group (2) + match.group (3) + '"'
@@ -341,12 +351,15 @@ def process_html_files (package_name = '',
in_f.close()
s = s.replace ('%', '%%')
- s = hack_urls (s, prefix)
+ s = hack_urls (s, prefix, target, bool (int (versiontup[1]) % 2))
s = add_header (s, prefix)
### add footer
if footer_tag_re.search (s) == None:
- s = add_footer (s, footer_tag + footer)
+ if 'web' in file_name:
+ s = add_footer (s, footer_tag + web_footer)
+ else:
+ s = add_footer (s, footer_tag + footer)
available, missing = find_translations (prefix, lang_ext)
page_flavors = process_links (s, prefix, lang_ext, file_name, missing, target)