[PATCH] templater: add new docheader/footer components for XML (issue4135)
Augie Fackler
raf at durin42.com
Thu Sep 10 08:29:15 CDT 2015
On Wed, Sep 09, 2015 at 04:08:27PM -0700, Matt Mackall wrote:
> # HG changeset patch
> # User Matt Mackall <mpm at selenic.com>
> # Date 1440624434 18000
> # Wed Aug 26 16:27:14 2015 -0500
> # Node ID 95b52a3f5cec3784d9b125d9b0038b1c4e8a327d
> # Parent ea489d94e1dc1fc3dc1dcbef1c86c18c49605ed1
> templater: add new docheader/footer components for XML (issue4135)
Looks good to me, but I'd like Yuya's thoughts before I push it. Thanks!
>
> The existing header/footer components were templated per-changeset,
> and thus couldn't be correctly printed for an empty log
>
> diff -r ea489d94e1dc -r 95b52a3f5cec mercurial/cmdutil.py
> --- a/mercurial/cmdutil.py Sat Aug 22 17:08:37 2015 -0700
> +++ b/mercurial/cmdutil.py Wed Aug 26 16:27:14 2015 -0500
> @@ -1422,7 +1422,8 @@
> (self.ui.debugflag, 'debug'),
> ]
>
> - self._parts = {'header': '', 'footer': '', 'changeset': 'changeset'}
> + self._parts = {'header': '', 'footer': '', 'changeset': 'changeset',
> + 'docheader': '', 'docfooter': ''}
> for mode, postfix in tmplmodes:
> for t in self._parts:
> cur = t
> @@ -1431,6 +1432,16 @@
> if mode and cur in self.t:
> self._parts[t] = cur
>
> + if self._parts['docheader']:
> + self.ui.write(templater.stringify(self.t(self._parts['docheader'])))
> +
> + def close(self):
> + if self._parts['docfooter']:
> + if not self.footer:
> + self.footer = ""
> + self.footer += templater.stringify(self.t(self._parts['docfooter']))
> + return super(changeset_templater, self).close()
> +
> def _show(self, ctx, copies, matchfn, props):
> '''show a single changeset or file revision'''
>
> diff -r ea489d94e1dc -r 95b52a3f5cec mercurial/templates/map-cmdline.xml
> --- a/mercurial/templates/map-cmdline.xml Sat Aug 22 17:08:37 2015 -0700
> +++ b/mercurial/templates/map-cmdline.xml Wed Aug 26 16:27:14 2015 -0500
> @@ -1,5 +1,5 @@
> -header = '<?xml version="1.0"?>\n<log>\n'
> -footer = '</log>\n'
> +docheader = '<?xml version="1.0"?>\n<log>\n'
> +docfooter = '</log>\n'
>
> changeset = '<logentry revision="{rev}" node="{node}">\n{branches}{bookmarks}{tags}{parents}<author email="{author|email|xmlescape}">{author|person|xmlescape}</author>\n<date>{date|rfc3339date}</date>\n<msg xml:space="preserve">{desc|xmlescape}</msg>\n</logentry>\n'
> changeset_verbose = '<logentry revision="{rev}" node="{node}">\n{branches}{bookmarks}{tags}{parents}<author email="{author|email|xmlescape}">{author|person|xmlescape}</author>\n<date>{date|rfc3339date}</date>\n<msg xml:space="preserve">{desc|xmlescape}</msg>\n<paths>\n{file_adds}{file_dels}{file_mods}</paths>\n{file_copies}</logentry>\n'
> diff -r ea489d94e1dc -r 95b52a3f5cec tests/test-command-template.t
> --- a/tests/test-command-template.t Sat Aug 22 17:08:37 2015 -0700
> +++ b/tests/test-command-template.t Wed Aug 26 16:27:14 2015 -0500
> @@ -343,6 +343,11 @@
>
> Test xml styles:
>
> + $ hg log --style xml -r 'not all()'
> + <?xml version="1.0"?>
> + <log>
> + </log>
> +
> $ hg log --style xml
> <?xml version="1.0"?>
> <log>
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at selenic.com
> https://selenic.com/mailman/listinfo/mercurial-devel
More information about the Mercurial-devel
mailing list