]> git.donarmstrong.com Git - lilypond.git/blobdiff - stepmake/bin/add-html-footer.py
try to make merge work (urg)
[lilypond.git] / stepmake / bin / add-html-footer.py
index d19a9a4b74fcb8fb5c04904ff31bb24d6c830165..08a997c7ec1ced110840077f72233c0fca8b55b4 100644 (file)
@@ -13,6 +13,7 @@ import getopt
 index_url=''
 top_url=''
 changelog_file=''
+content_negotiation = False
 package_name = ''
 package_version = ''
 
@@ -68,6 +69,7 @@ Add header, footer and top of ChangLog file (up to the ********) to HTML-FILE
 
 Options:
  --changelog=FILE          use FILE as ChangeLog [ChangeLog]
+ --content-negotiation     strip .html and .png from urls
  --footer=FILE             use FILE as footer
  --header=FILE             use FILE as header
  -h, --help                print this help
@@ -80,13 +82,15 @@ Options:
 
 (options, files) = getopt.getopt(sys.argv[1:], 'h', [
     'changelog=', 'footer=', 'header=', 'help', 'index=',
-    'name=', 'version=']) 
+    'name=', 'content-negotiation', 'version=']) 
 
 for opt in options:
     o = opt[0]
     a = opt[1]
     if o == '--changelog':
         changelog_file = a
+    elif o == '--content-negotiation':
+        content_negotiation = True
     elif o == '--footer':
         footer_file = a
     elif o == '--header':
@@ -168,6 +172,9 @@ def remove_self_ref (s):
     return s
 
 def do_file (f):
+    if os.path.islink (f):
+        return
+    
     s = open (f).read()
     s = re.sub ('%', '%%', s)
 
@@ -251,7 +258,8 @@ def do_file (f):
     s = re.sub (' \((lilypond|lilypond-internals|music-glossary)\)</a>',
           '</a>', s)
 
-    open (f, 'w').write (s)
+    if not os.path.islink (f):
+        open (f, 'w').write (s)
 
 
 
@@ -266,10 +274,11 @@ except:
         return s
 underscore = _
 
-
+C = 'site'
 LANGUAGES = (
-    ('site', 'English'),
+    (C, 'English'),
     ('nl', 'Nederlands'),
+    ('fr', 'French')
     )
 
 language_available = _ ("Other languages: %s.") % "%(language_menu)s"
@@ -287,7 +296,7 @@ LANGUAGES_TEMPLATE = '''\
 def file_lang (file, lang):
     (base, ext) = os.path.splitext (file)
     base = os.path.splitext (base)[0]
-    if lang and lang != 'site':
+    if lang and lang != C:
         return base + '.' + lang + ext
     return base + ext
 
@@ -298,8 +307,8 @@ def i18n (file_name, page):
 
     base_name = os.path.basename (file_name)
 
-    lang = 'site'
-    m = re.match ('.*[.]([^.]*).html', file_name)
+    lang = C
+    m = re.match ('.*[.]([^/.]*).html', file_name)
     if m:
         lang = m.group (1)
 
@@ -308,14 +317,19 @@ def i18n (file_name, page):
               and os.path.exists (file_lang (file_name, x[0])),
               LANGUAGES)
 
-    # Strip .html, .png suffix for auto language selection.
-#        page = re.sub ('''(href|src)=[\'"]([^/][.]*[^.:\'"]*)(.html(#[^"]*)|.png)[\'"]''',
-#                       '\\1="\\2"', page)
+    # Strip .html, .png suffix for auto language selection (content
+    # negotiation).  The menu must keep the full extension, so do
+    # this before adding the menu.
+    if content_negotiation:
+        page = re.sub ('''(href|src)=[\'"]([^/][.]*[^.:\'"]*)(.html|.png)(#[^"\']*|)[\'"]''',
+                       '\\1="\\2\\4"', page)
 
-    # Create language menu.
+    # Add menu after stripping: must not have autoselection for language menu.
     language_menu = ''
     for (prefix, name) in available:
         lang_file = file_lang (base_name, prefix)
+        if language_menu != '':
+            language_menu += ', '
         language_menu += '<a href="%(lang_file)s">%(name)s</a>' % vars ()
 
     languages = ''
@@ -330,8 +344,10 @@ def i18n (file_name, page):
     else:
         page = page + languages
 
+    if content_negotiation and language_menu:
+        os.symlink (file_name, os.path.splitext (os.path.basename (file_name))[0] + '.en.html')
+        
     return page
-    ## end i18n
 
 for f in files:
     do_file (f)