]> git.donarmstrong.com Git - lilypond.git/blobdiff - buildscripts/add_html_footer.py
Merge branch 'lilypond/translation' of ssh://trettig@git.sv.gnu.org/srv/git/lilypond...
[lilypond.git] / buildscripts / add_html_footer.py
index b410b2a39e9fd72661e1edddde7c833f8bdff784..34ada97aac97d2cb7a5cfc8af0c0c481aab23aec 100644 (file)
@@ -69,7 +69,7 @@ html_re = re.compile ('(.*?)(?:[.]([^/.]*))?[.]html$')
 pages_dict = {}
 
 def build_pages_dict (filelist):
-    """Build dictionnary of available translations of each page"""
+    """Build dictionary of available translations of each page"""
     global pages_dict
     for f in filelist:
         m = html_re.match (f)
@@ -79,7 +79,7 @@ def build_pages_dict (filelist):
                 e = ''
             else:
                 e = g[1]
-            if not g[0] in pages_dict.keys():
+            if not g[0] in pages_dict:
                 pages_dict[g[0]] = [e]
             else:
                 pages_dict[g[0]].append (e)
@@ -87,15 +87,25 @@ 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/snippets|Documentation/user/out-www/(lilypond|music-glossary|lilypond-program|lilypond-learning))/')
+splitted_docs_re = re.compile ('(input/lsr/out-www/lilypond-snippets|Documentation/user/out-www/(lilypond|music-glossary|lilypond-program|lilypond-learning))/')
 
-# On systems without symlinks (e.g. Windows), docs are not very usable
-# Get rid of symlinks references here
+snippets_ref_re = re.compile (r'href="(\.\./)?lilypond-snippets')
+user_ref_re = re.compile (r'href="(?:\.\./)?lilypond(|-internals|-learning|-program)')
+
+## Windows does not support symlinks.
+# This function avoids creating symlinks for splitted HTML manuals
 # Get rid of symlinks in GNUmakefile.in (local-WWW-post)
 # this also fixes missing PNGs only present in translated docs
-def replace_symlinks_urls (s, prefix):
+def hack_urls (s, prefix):
     if splitted_docs_re.match (prefix):
-        s = re.sub ('(href|src)="(lily-.*?|.*?[.]png)"', '\\1="../\\2"', s)
+        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)
+
     source_path = os.path.join (os.path.dirname (prefix), 'source')
     if not os.path.islink (source_path):
         return s
@@ -196,7 +206,7 @@ def process_links (s, prefix, lang_ext, file_name, missing, target):
     return page_flavors
 
 def add_menu (page_flavors, prefix, available, target, translation):
-    for k in page_flavors.keys():
+    for k in page_flavors:
         language_menu = ''
         languages = ''
         if page_flavors[k][0] != '':
@@ -225,15 +235,13 @@ def add_menu (page_flavors, prefix, available, target, translation):
     return page_flavors
 
 
-def add_html_footer (translation,
-                     package_name = '',
+def add_html_footer (package_name = '',
                      package_version = '',
                      target = 'offline',
                      name_filter = lambda s: s):
     """Add header, footer to a number of HTML files
 
     Arguments:
-     translation               gettext translations dictionary, with language codes as keys
      package_name=NAME         set package_name to NAME
      package_version=VERSION   set package version to VERSION
      targets=offline|online    set page processing depending on the target
@@ -242,6 +250,7 @@ def add_html_footer (translation,
             negotiation
      name_filter               a HTML file name filter
     """
+    translation = langdefs.translation
     localtime = time.strftime ('%c %Z', time.localtime (time.time ()))
 
     if re.search ("http://", mail_address):
@@ -262,7 +271,7 @@ def add_html_footer (translation,
             in_f.close()
 
             s = re.sub ('%', '%%', s)
-            s = replace_symlinks_urls (s, prefix)
+            s = hack_urls (s, prefix)
             s = add_header (s)
 
             ### add footer
@@ -275,9 +284,9 @@ def add_html_footer (translation,
                 page_flavors = add_menu (page_flavors, prefix, available, target, translation)
             subst = dict ([i for i in globals().items() if type (i[1]) is str])
             subst.update (dict ([i for i in locals().items() if type (i[1]) is str]))
-            for k in page_flavors.keys():
-                if page_flavors[k][0] in translation.keys():
-                    for name in subst.keys():
+            for k in page_flavors:
+                if page_flavors[k][0] in translation:
+                    for name in subst:
                         subst[name] = translation[page_flavors[k][0]] (subst[name])
                 subst['footer_name_version'] = subst['footer_name_version'] % subst
                 subst['footer_report_errors'] = subst['footer_report_errors'] % subst