view tests/test-custom-filters @ 11988:8380ed691df8

util: add an interpolate() function to for replacing multiple values util.interpolate can be used to replace multiple items in a string all at once (and optionally apply a function to the replacement), without worrying about recursing: >>> import util >>> s = '$foo, $spam' >>> util.interpolate(r'\$', { 'foo': 'bar', 'spam': 'eggs' }, s) 'bar, eggs' >>> util.interpolate(r'\$', { 'foo': 'spam', 'spam': 'foo' }, s) 'spam, foo' >>> util.interpolate(r'\$', { 'foo': 'spam', 'spam': 'foo' }, s, lambda s: s.upper()) 'SPAM, FOO' The patch also changes filemerge.py to use this new function.
author Steve Losh <steve@stevelosh.com>
date Wed, 18 Aug 2010 18:18:26 -0400
parents a964ab624385
children
line wrap: on
line source

#!/bin/sh

hg init

cat > .hg/hgrc <<EOF
[extensions]
prefixfilter = prefix.py
[encode]
*.txt = stripprefix: Copyright 2046, The Masters
[decode]
*.txt = insertprefix: Copyright 2046, The Masters
EOF

cat > prefix.py <<EOF
from mercurial import util
def stripprefix(s, cmd, filename, **kwargs):
    header = '%s\n' % cmd
    if s[:len(header)] != header:
        raise util.Abort('missing header "%s" in %s' % (cmd, filename))
    return s[len(header):]
def insertprefix(s, cmd):
    return '%s\n%s' % (cmd, s)
def reposetup(ui, repo):
    repo.adddatafilter('stripprefix:', stripprefix)
    repo.adddatafilter('insertprefix:', insertprefix)
EOF

cat > .hgignore <<EOF
.hgignore
prefix.py
prefix.pyc
EOF

cat > stuff.txt <<EOF
Copyright 2046, The Masters
Some stuff to ponder very carefully.
EOF
hg add stuff.txt
hg ci -m stuff

echo '% Repository data:'
hg cat stuff.txt

echo '% Fresh checkout:'
rm stuff.txt
hg up -C
cat stuff.txt
echo >> stuff.txt <<EOF
Very very carefully.
EOF
hg stat

cat > morestuff.txt <<EOF
Unauthorized material subject to destruction.
EOF

echo '% Problem encoding:'
hg add morestuff.txt
hg ci -m morestuff
hg stat