]> git.donarmstrong.com Git - lilypond.git/blobdiff - python/auxiliar/postprocess_html.py
lilypond-manuals.css: edit color scheme and some spacing
[lilypond.git] / python / auxiliar / postprocess_html.py
index 568ff17e75e42331648135b4423f0f836b16ee8c..7e379dcbb8018c77dd000ec5ed235900a150398e 100644 (file)
@@ -6,6 +6,7 @@ add footer, tweak links, add language selection menu.
 """
 import re
 import os
+import sys
 import time
 import operator
 
@@ -26,7 +27,6 @@ non_copied_pages = ['Documentation/out-www/notation-big-page',
                     'out-www/examples',
                     'Documentation/topdocs',
                     'Documentation/bibliography',
-                    'Documentation/out-www/THANKS',
                     'Documentation/out-www/DEDICATION',
                     'input/']
 
@@ -38,23 +38,26 @@ header = r"""
 
 footer = '''
 <div class="footer">
+<!-- This footer was autogenerated by %s -->
 <p class="footer_version">
-%(footer_name_version)s
+%%(footer_name_version)s
 </p>
 <p class="footer_report">
-%(footer_report_links)s
+%%(footer_report_links)s
 </p>
 </div>
-'''
+''' % sys.argv[0]
 
 web_footer = '''
 <div class="footer">
+<!-- This footer was autogenerated by %s -->
 </div>
-'''
+''' % sys.argv[0]
 
 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 ('We welcome your aid; please <a href="%(help_us_url)s">help us</a> by reporting errors to our <a href="%(mail_address_url)s">bug list</a>.')
+sidebar_version = _doc (' v%(package_version)s (%(branch_str)s).')
 
 
 mail_address = 'http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs'
@@ -67,16 +70,17 @@ footer_tag = '<!-- footer_tag -->'
 footer_tag_re = re.compile (footer_tag)
 
 lang_available = _doc ("Other languages: %s.")
-browser_lang = _doc ('About <A HREF="%s">automatic language selection</A>.')
-browser_language_url = "/web/about/browser-language"
+browser_lang = _doc ('About <a href="%s">automatic language selection</a>.')
+browser_language_url = "http://www.lilypond.org/website/misc/browser-language"
 
 LANGUAGES_TEMPLATE = '''
 <p id="languages">
- %(language_available)s
+<!-- These links were autogenerated by %s -->
+ %%(language_available)s
  <br>
- %(browser_language)s
+ %%(browser_language)s
 </p>
-'''
+''' % sys.argv[0]
 
 
 html_re = re.compile ('(.*?)(?:[.]([^/.]*))?[.]html$')
@@ -102,7 +106,8 @@ def source_links_replace (m, source_val):
     return 'href="' + os.path.join (source_val, m.group (1)) + '"'
 
 # More hardcoding, yay!
-splitted_docs_re = re.compile('(Documentation/out-www/(automated-engraving|essay|notation|changes|extending|music-glossary|usage|web|learning|snippets))/')
+split_docs_re = re.compile('(Documentation/out-www/(automated-engraving|essay|notation|changes|extending|music-glossary|usage|web|learning|snippets|contributor))/')
+lily_examples_re = re.compile ('(href|src)="(ly-examples/.*?)"')
 lily_snippets_re = re.compile ('(href|src)="([0-9a-f]{2}/lily-.*?)"')
 pictures_re = re.compile ('src="(pictures/.*?)"')
 
@@ -110,11 +115,16 @@ 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, target, is_development_branch):
-    if splitted_docs_re.match (prefix):
+    depth = (prefix.count ('/') - 1) * '../'
+    # fix css links
+    s = css_re.sub ('<link \\1href="%(rel)sDocumentation/css/\\2"\\3>' % {'rel': depth}, s)
+    # fix image links
+    if split_docs_re.match (prefix):
+        s = lily_examples_re.sub ('\\1="../\\2"', s)
         s = lily_snippets_re.sub ('\\1="../\\2"', s)
         s = pictures_re.sub ('src="../\\1"', s)
 
@@ -149,11 +159,11 @@ body_tag_re = re.compile ('(?i)<body([^>]*)>')
 html_tag_re = re.compile ('(?i)<html>')
 doctype_re = re.compile ('(?i)<!DOCTYPE')
 doctype = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">\n'
-css_re = re.compile ('(?i)<link rel="stylesheet" type="text/css" ([^>]*)href="[^">]*?lilypond.*\.css"([^>]*)>')
+css_re = re.compile ('(?i)<link ([^>]*)href="[^">]*?(lilypond.*\.css)"([^>]*)>')
 end_head_tag_re = re.compile ('(?i)</head>')
-css_link = """    <link rel="stylesheet" type="text/css" title="Default design" href="%(rel)sDocumentation/lilypond-manuals.css">
+css_link = """    <link rel="stylesheet" type="text/css" title="Default design" href="%(rel)sDocumentation/css/lilypond-manuals.css">
     <!--[if lte IE 7]>
-    <link href="%(rel)sDocumentation/lilypond-ie-fixes.css" rel="stylesheet" type="text/css">
+    <link href="%(rel)sDocumentation/css/lilypond-ie-fixes.css" rel="stylesheet" type="text/css">
     <![endif]-->
 """
 
@@ -286,10 +296,7 @@ def add_menu (page_flavors, prefix, available, target, translation):
             if language_menu != '':
                 language_menu += ', '
             language_menu += '<a href="%s">%s</a>' % (lang_file, t (lang.name))
-        if target == 'offline':
-            browser_language = ''
-        elif target == 'online':
-            browser_language = t (browser_lang) % browser_language_url
+        browser_language = t (browser_lang) % browser_language_url
         if language_menu:
             language_available = t (lang_available) % language_menu
             languages = LANGUAGES_TEMPLATE % vars ()
@@ -344,30 +351,39 @@ def process_html_files (package_name = '',
     for prefix, ext_list in pages_dict.items ():
         for lang_ext in ext_list:
             file_name = langdefs.lang_file_name (prefix, lang_ext, '.html')
-            in_f = open (file_name)
-            s = in_f.read()
-            in_f.close()
-
-            s = s.replace ('%', '%%')
-            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:
-                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)
-                # Add menu after stripping: must not have autoselection for language menu.
-                page_flavors = add_menu (page_flavors, prefix, available, target, translation)
-            for k in page_flavors:
-                page_flavors[k][1] = page_flavors[k][1] % subst[page_flavors[k][0]]
-                out_f = open (name_filter (k), 'w')
-                out_f.write (page_flavors[k][1])
-                out_f.close()
+            source_time = os.path.getmtime(file_name)
+            dest_time = 0
+            if os.path.exists(name_filter(file_name)):
+                dest_time = os.path.getmtime(name_filter(file_name))
+            if dest_time < source_time:
+
+                in_f = open (file_name)
+                s = in_f.read()
+                in_f.close()
+
+                s = s.replace ('%', '%%')
+                s = hack_urls (s, prefix, target, bool (int (versiontup[1]) %  2))
+                s = add_header (s, prefix)
+
+                ### add sidebar information
+                s = s.replace ('<!-- Sidebar Version Tag  -->', sidebar_version)
+
+                ### add footer
+                if footer_tag_re.search (s) == None:
+                    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)
+                    # Add menu after stripping: must not have autoselection for language menu.
+                    page_flavors = add_menu (page_flavors, prefix, available, target, translation)
+                for k in page_flavors:
+                    page_flavors[k][1] = page_flavors[k][1] % subst[page_flavors[k][0]]
+                    out_f = open (name_filter (k), 'w')
+                    out_f.write (page_flavors[k][1])
+                    out_f.close()
         # if the page is translated, a .en.html symlink is necessary for content negotiation
-        if target == 'online' and ext_list != ['']:
+        if target == 'online' and ext_list != [''] and not os.path.lexists (name_filter (prefix + '.en.html')):
             os.symlink (os.path.basename (prefix) + '.html', name_filter (prefix + '.en.html'))