X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=scripts%2Flilypond-book.py;h=5a6565bc58c6d9a4390e872b72d747e4110e8358;hb=5b4b0d6e9a197e8f9eb085b7c2ad78b8be3e5cfc;hp=be9fef694a5d81049d92799b4ecb39d18498fbc9;hpb=eda788a9744b27765a6aaa7cc22a7ca08d66c735;p=lilypond.git diff --git a/scripts/lilypond-book.py b/scripts/lilypond-book.py index be9fef694a..5a6565bc58 100644 --- a/scripts/lilypond-book.py +++ b/scripts/lilypond-book.py @@ -51,6 +51,17 @@ ly.require_python_version () program_version = '@TOPLEVEL_VERSION@' program_name = os.path.basename (sys.argv[0]) +# Check if program_version contains @ characters. This will be the case if +# the .py file is called directly while building the lilypond documentation. +# If so, try to check for the env var LILYPOND_VERSION, which is set by our +# makefiles and use its value. +at_re = re.compile (r'@') +if at_re.match (program_version): + if os.environ.has_key('LILYPOND_VERSION'): + program_version = os.environ['LILYPOND_VERSION'] + else: + program_version = "unknown" + original_dir = os.getcwd () backend = 'ps' @@ -101,7 +112,7 @@ def warranty (): %s %s -''' % ( _ ('Copyright (c) %s by') % '2001--2007', +''' % ( _ ('Copyright (c) %s by') % '2001--2008', ' '.join (authors), _ ("Distributed under terms of the GNU General Public License."), _ ("It comes with NO WARRANTY."))) @@ -260,6 +271,7 @@ DOCTITLE = 'doctitle' TEXIDOC = 'texidoc' TEXINFO = 'texinfo' VERBATIM = 'verbatim' +VERSION = 'lilypondversion' FONTLOAD = 'fontload' FILENAME = 'filename' ALT = 'alt' @@ -317,7 +329,9 @@ snippet_res = { 'verbatim': no_match, - + + 'lilypondversion': + no_match, }, ## HTML: { @@ -370,6 +384,11 @@ snippet_res = { (?s) (?P (?P
\s.*?
\s))''', + + 'lilypondversion': + r'''(?mx) + (?P + )''', }, ## @@ -443,6 +462,12 @@ snippet_res = { \\begin\s*{verbatim} .*? \\end\s*{verbatim}))''', + + 'lilypondversion': + r'''(?smx) + (?P + \\lilypondversion)[^a-zA-Z]''', + }, ## @@ -509,6 +534,12 @@ snippet_res = { @example \s.*? @end\s+example\s))''', + + 'lilypondversion': + r'''(?mx) + [^@](?P + @lilypondversion)[^a-zA-Z]''', + }, } @@ -608,6 +639,8 @@ output = { ''', VERBATIM: r'''%(verb)s''', + + VERSION: program_version, PRINTFILENAME: '%(filename)s' }, @@ -638,6 +671,8 @@ output = { VERBATIM: r'''
 %(verb)s
''', + + VERSION: program_version, }, ## @@ -667,6 +702,8 @@ output = { VERBATIM: r'''\noindent \begin{verbatim}%(verb)s\end{verbatim}''', + VERSION: program_version, + FILTER: r'''\begin{lilypond}[%(options)s] %(code)s \end{lilypond}''', @@ -721,6 +758,8 @@ output = { %(verb)s@end verbatim ''', + VERSION: program_version, + ADDVERSION: r'''@example \version @w{"@version{}"} @end example @@ -840,6 +879,8 @@ def verbatim_html (s): ly_var_def_re = re.compile (r'^([a-zA-Z]+)[\t ]*=', re.M) ly_comment_re = re.compile (r'(%+[\t ]*)(.*)$', re.M) +ly_context_id_re = re.compile ('\\\\(?:new|context)\\s+(?:[a-zA-Z]*?(?:Staff\ +(?:Group)?|Voice|FiguredBass|FretBoards|Names|Devnull))\\s+=\\s+"?([a-zA-Z]+)"?\\s+') def ly_comment_gettext (t, m): return m.group (1) + t (m.group (2)) @@ -858,6 +899,10 @@ def verb_ly_gettext (s): s = re.sub (r"(?m)(^|[' \\#])%s([^a-zA-Z])" % v, "\\1" + t (v) + "\\2", s) + for id in ly_context_id_re.findall (s): + s = re.sub (r'(\s+|")%s(\s+|")' % id, + "\\1" + t (id) + "\\2", + s) return s texinfo_lang_re = re.compile ('(?m)^@documentlanguage (.*?)( |$)') @@ -1440,11 +1485,21 @@ class LilypondFileSnippet (LilypondSnippet): % (name, self.contents)) +class LilyPondVersionString (Snippet): + """A string that does not require extra memory.""" + def __init__ (self, type, match, format, line_number): + Snippet.__init__ (self, type, match, format, line_number) + + def replacement_text (self): + return output[self.format][self.type] + + snippet_type_to_class = { 'lilypond_file': LilypondFileSnippet, 'lilypond_block': LilypondSnippet, 'lilypond': LilypondSnippet, 'include': IncludeSnippet, + 'lilypondversion': LilyPondVersionString, } def find_linestarts (s): @@ -1873,6 +1928,7 @@ def do_file (input_filename, included=False): 'lilypond_file', 'include', 'lilypond', + 'lilypondversion', ) progress (_ ("Dissecting...")) chunks = find_toplevel_snippets (source, global_options.format, snippet_types)