Mercurial > hg > pyloader
view tests/objects.py @ 57:cb1898f8c72a
* illustrate another pattern
* note future of pyloader casting
author | Jeff Hammel <jhammel@mozilla.com> |
---|---|
date | Wed, 08 Jun 2011 23:45:11 -0700 |
parents | 49f88cde6219 |
children | 2a1648a53857 |
line wrap: on
line source
""" test objects """ def stringsort(*strings): return ''.join(sorted(''.join(strings))) class StringMunge(object): def __init__(self, prefix, delimeter=':', callback=None): self.delimeter = delimeter self.prefix = prefix self.callback = callback def __call__(self, string): if self.callback: string = self.callback(string) return self.prefix + self.delimeter + string class Foo(object): def __init__(self, a, b): self.factor = a*100 + b def __call__(self, number): return number * self.factor class Wrapper(object): def __init__(self, app, **values): self.app = app self.values = dict([(int(i), j) for i, j in values]) # TODO: should be automagically converted ideally via pyloader def __call__(self, *args, **kwargs): retval = self.app(*args, **kwargs) values = {1: 'one', 2: 'two', 3: 'three'} # etc values.update(self.values) if retval in values: return values[retval] return retval def wrap(app): return Wrapper(app) def fib(n): """return the nth fibonacci term""" n = int(n) # TODO: should be automagically converted ideally via pyloader sequence = [1,1] while len(sequence) - 1 < n: sequence.append(sequence[len(sequence)-1] + sequence[len(sequence)-2]) return sequence[n]