Mercurial > hgrepos > DevTools > mercurial-extensions
changeset 179:fb754a9bd5e8
Implemented "Timestamps.write()" to write the internal timestamps into a file
| author | Franz Glasner <hg@dom66.de> |
|---|---|
| date | Sat, 01 Sep 2018 18:28:58 +0200 |
| parents | 16710999ef40 |
| children | d799c2be6e81 |
| files | extensions/timestamps.py |
| diffstat | 1 files changed, 51 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/extensions/timestamps.py Sat Sep 01 17:38:08 2018 +0200 +++ b/extensions/timestamps.py Sat Sep 01 18:28:58 2018 +0200 @@ -329,13 +329,19 @@ while True: fields = (yield) print_sep = False - for field in fields: - if print_sep: - db.write(',') - else: - print_sep = True - db.write(escape_str_field(field)) - db.write('\n') + if len(fields) >= 2: + for field in fields: + if print_sep: + db.write(',') + else: + print_sep = True + db.write(escape_str_field(field)) + db.write('\n') + else: + # no escaping for comments and other special lines + for field in fields: + db.write(field) + db.write('\n') finally: db.flush() @@ -441,3 +447,41 @@ "duplicate encoding record in database") else: raise ValueError("unknown record type in line %d" % lineno) + + def write(self, db): + """Write the internal representation into the file `db`""" + + assert self._version == 1 + + dbwriter = db_writer(db) + dbwriter.send(None) # print the coroutine + + # + # Make version and encoding reflect the possibly new settings -- + # but do not change file order if possible. + # + if "/version/" in self._d: + self._d["/version/"] = self._version + else: + dbwriter.send(("version=%d" % self._version,)) + + if "/encoding/" in self._d: + self._d["/encoding/"] = self._encoding + else: + dbwriter.send(("encoding=%s" % self._encoding,)) + + for k, v in self._d.items(): + if k.startswith("/"): + if k.startswith("/-"): + dbwriter.send(tuple()) + elif k.startswith("/comment-"): + dbwriter.send((v,)) + elif k == "/version/": + dbwriter.send(("version=%d" % v,)) + elif k == "/encoding/": + dbwriter.send(("encoding=%s" % v,)) + else: + raise ValueError("unknown key type in timestamps: %r" % k) + else: + dbwriter.send((k, v)) + dbwriter.close()
