Cloning and SettingΒΆ

Quoter parameters can be changed (set) in real time.:

bars = Quoter('|')
print bars('x')                    # |x|
bars.set(prefix='||', suffix='||')
print bars('x')                    # ||x||
bars.set(padding=1)
print bars('x')                    # || x ||

And Quoter instances you like can be cloned, optionally with several options changed in the clone:

bart = bars.clone(prefix=']', suffix='[')
assert bart('x') == '] x ['

The method but is a synonym for clone. It is used to suggest “I like everything there, but...change this and that.”:

bartwide = bart.but(margin=2)
assert bartwide('x') == '  ] x [  '

Note that if any of the options for bart besides margin change, those changes will be reflected in bartwide as well. bartwide has decided what its own margins will be, but delegated all other choices to its parent object.