X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=buildscripts%2Fhtml-gettext.py;h=aaa8888a3fdac88bcc92052a88a52aa34d17c0ab;hb=05b7a17f1b19c4d978d340483b3c7b9985710232;hp=4583d37c5d1e731e0af0dddc6bed6556d7e9f7a7;hpb=7e8c1cafbcca145e8775b3243c8795fc8a89eb01;p=lilypond.git diff --git a/buildscripts/html-gettext.py b/buildscripts/html-gettext.py index 4583d37c5d..aaa8888a3f 100644 --- a/buildscripts/html-gettext.py +++ b/buildscripts/html-gettext.py @@ -1,7 +1,7 @@ #!@PYTHON@ # html-gettext.py -# USAGE: html-gettext.py [-o OUTDIR] BUILDSCRIPT-DIR LOCALEDIR LANG FILES +# USAGE: html-gettext.py [-o OUTDIR] LANG FILES # # -o OUTDIR specifies that output files should be written in OUTDIR # rather than be overwritten @@ -11,67 +11,109 @@ import sys import re import os import getopt -import gettext + +import langdefs optlist, args = getopt.getopt(sys.argv[1:],'o:') -buildscript_dir, localedir, lang = args[0:3] +lang = args[0] +files = args [1:] outdir = '.' for x in optlist: - if x[0] == '-o': - outdir = x[1] - -sys.path.append (buildscript_dir) -import langdefs + if x[0] == '-o': + outdir = x[1] double_punct_char_separator = langdefs.LANGDICT[lang].double_punct_char_sep -print localedir -print lang -t = gettext.translation('lilypond-doc', localedir, [lang]) -my_gettext = t.gettext +my_gettext = langdefs.translation[lang] html_codes = ((' -- ', ' – '), - (' --- ', ' — ')) + (' --- ', ' — '), + ("'", '’')) +html2texi = {'command': + (re.compile (r'(.*?)'), + r'@command{\1}'), + 'code': + (re.compile (r'(.*?)'), + r'@code{\1}') + } +texi2html = {'command': + (re.compile (r'@command{(.*?)}'), + r'\1'), + 'code': + (re.compile (r'@code{(.*?)}'), + r'\1') + } +whitespaces = re.compile (r'\s+') + def _ (s): - for c in html_codes: - s = s.replace (c[1], c[0]) - s = my_gettext (s) - for c in html_codes: - s = s.replace (c[0], c[1]) - return s + if not s: + return '' + s = whitespaces.sub (' ', s) + for c in html_codes: + s = s.replace (c[1], c[0]) + for u in html2texi.values(): + s = u[0].sub (u[1], s) + s = my_gettext (s) + for u in texi2html.values(): + s = u[0].sub (u[1], s) + for c in html_codes: + s = s.replace (c[0], c[1]) + return s + +link_re = re.compile (r'') def link_gettext (m): - return '' + return '' -def title_gettext (m): - return '' + _(m.group(1)) + ' - ' + m.group(2) + '' +makeinfo_title_re = re.compile (r'([^<]*?) - ([^<]*?)') + +def makeinfo_title_gettext (m): + return '' + _ (m.group (1)) + ' - ' + m.group (2) + '' + +texi2html_title_re = re.compile (r'(.+?): ([A-Z\d.]+ |)(.+?)') + +def texi2html_title_gettext (m): + return '' + _ (m.group (1)) + double_punct_char_separator + ': ' \ + + m.group (2) + _ (m.group (3)) + '' + +a_href_re = re.compile ('(?s)]*?href="[\\w.#-_]+"[^>]*>(?:|))\ +(Appendix |)([A-Z0-9.]+ | (?:<){1,2} | [^:<]+?: | |)\ +(.+?)(| (?:>){1,2} | |):?') def a_href_gettext (m): - if m.group(6) == ':': - s = double_punct_char_separator + ':' - elif m.group(6) == None: - s = '' - return '' + s + s = '' + if m.group(0)[-1] == ':': + s = double_punct_char_separator + ':' + t = '' + if m.group (2): + t = _ (m.group (2)) + return '' + s + +h_re = re.compile (r'\s*(Appendix |)([A-Z\d.]+ |)?([^<]+)\s*') def h_gettext (m): - return '' + \ - m.group(3) + _(m.group(4)) + '' - -def rglos_gettext (m): - return '' + _(m.group(2)) + '' - -for filename in args[3:]: - f = open (filename, 'r') - page = f.read () - f.close() - page = re.sub (r'', link_gettext, page) - page = re.sub (r'([^<]*?) - ([^<]*?)', title_gettext, page) - page = re.sub (r')((?:|)(?:[\d.]+ |))([^<]+)(|)(:)?', a_href_gettext, page) - page = re.sub (r'([\d.]+ |)?([^<]+)', h_gettext, page) - page = re.sub (r'(.+?)', rglos_gettext, page) - for w in ('Next:', 'Previous:', 'Up:'): - page = re.sub (w, _(w), page) - f = open (os.path.join (outdir, filename), 'w') - f.write (page) - f.close () + if m.group (3): + s = _ (m.group (3)) + else: + s= '' + return '' + s +\ + m.group (4) + _ (m.group (5)) + '' + +for filename in files: + f = open (filename, 'r') + page = f.read () + f.close () + page = link_re.sub (link_gettext, page) + page = makeinfo_title_re.sub (makeinfo_title_gettext, page) + page = texi2html_title_re.sub (texi2html_title_gettext, page) + page = a_href_re.sub (a_href_gettext, page) + page = h_re.sub (h_gettext, page) + for w in ('Next:', 'Previous:', 'Up:'): + page = page.replace (w, _ (w)) + page = langdefs.LANGDICT[lang].html_filter (page) + f = open (os.path.join (outdir, filename), 'w') + f.write (page) + f.close ()