[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