# HG changeset patch # User Pierre-Yves David # Date 2015-10-07 08:20:49 # Node ID 23f3f1cbd53b6d80def2dacfbd5c1123038dd9fd # Parent 2bef84fad19f0eaec54041e535526d6b547cb613 extract: add some facility for extensible header parsing We need a way for extension to extend the header we can parse. We start with a very simple mechanism that will be used in the next changeset. diff --git a/mercurial/patch.py b/mercurial/patch.py --- a/mercurial/patch.py +++ b/mercurial/patch.py @@ -151,6 +151,10 @@ def split(stream): # if we are here, we have a very plain patch return remainder(cur) +## Some facility for extensible patch parsing: +# list of pairs ("header to match", "data key") +patchheadermap = [] + def extract(ui, fileobj): '''extract patch from data read from fileobj. @@ -238,7 +242,12 @@ def extract(ui, fileobj): data['nodeid'] = line[10:] elif line.startswith("# Parent "): parents.append(line[9:].lstrip()) - elif not line.startswith("# "): + elif line.startswith("# "): + for header, key in patchheadermap: + prefix = '# %s ' % header + if line.startswith(prefix): + data[key] = line[len(prefix):] + else: hgpatchheader = False elif line == '---': ignoretext = True