New templater features: if/ifeq, join, sub, date, fill

David M. Carr david at carrclan.us
Tue Sep 25 09:30:17 CDT 2012


On Mon, Sep 24, 2012 at 5:25 PM, Matt Mackall <mpm at selenic.com> wrote:
> I rewrote the templater a while back to allow the addition of a bunch of
> new features, but got stalled on working around a quirk in the
> command-line implementation of lists. Now I've worked around that issue
> and added a bunch of new features.
>
> First is the ability to specify templates for lists on the commandline
> without creating a style file. For instance:
>
> $ hg log -r 0 --template "files:\n{files % '  {file}\n'}"
> files:
>   PKG-INFO
>   README
>   hg
>   mercurial/__init__.py
>   mercurial/byterange.py
>   mercurial/fancyopts.py
>   mercurial/hg.py
>   mercurial/mdiff.py
>   mercurial/revlog.py
>   mercurial/transaction.py
>   notes.txt
>   setup.py
>   tkmerge
>
> We also have a join function, which is nice for lists:
>
> $ hg log -r 0 --template "files: {join(files, ', ')}\n"
> files: PKG-INFO, README, hg, mercurial/__init__.py,
> mercurial/byterange.py, mercurial/fancyopts.py, mercurial/hg.py,
> mercurial/mdiff.py, mercurial/revlog.py, mercurial/transaction.py,
> notes.txt, setup.py, tkmerge
>
> There's also a sub function, which supports regular expressions:
>
> $ hg log -r 0 --template 'files: {sub("/", r"\\", files)}\n'
> files: PKG-INFO README hg mercurial\__init__.py mercurial\byterange.py
> mercurial\fancyopts.py mercurial\hg.py mercurial\mdiff.py mercurial
> \revlog.py mercurial\transaction.py notes.txt setup.py tkmerge
>
> We can now do some basic conditionals using if(test, then, else) or
> ifeq(test, match, then, else):
>
> $ hg log -r 0 --template '{ifeq(branch, "default", "on the main branch",
> "on branch {branch}")}\n'
> on the main branch
>
> Lastly, I've parameterized a couple of the existing filters:
>
> $ hg log -r 0 --template '{date(date, "%Y")}\n'
> 2005
>
> $ hg log -r 0 --template '{fill(desc, "30")}'
> Add back links from file
> revisions to changeset
> revisions Add simple
> transaction support Add hg
> verify Improve caching in
> revlog Fix a bunch of bugs
> Self-hosting now that the
> metadata is close to finalized
>
>
> --
> Mathematics is the supreme nostalgia of our time.
>
>
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at selenic.com
> http://selenic.com/mailman/listinfo/mercurial-devel

Looks like some great feature enhancements.  Thanks, Matt!

-- 
David M. Carr
david at carrclan.us


More information about the Mercurial-devel mailing list