This module provides a simple straightforward implementation of visitor pattern.
>>> compile = Visitor("compile")
>>> @compile.visit(int)
... @compile.visit(long)
... def compile(value):
... return str(value)
...
>>> @compile.visit(basestring)
... def compile(value):
... return "'{0}'".format(value)
...
>>> @compile.visit(unicode)
... def compile(value):
... return "u" + compile[basestring](value)
...
>>> @compile.visit(list)
... def compile(value):
... return "[{0}]".format(", ".join(compile(v) for v in value))
...
>>> compile([1, 2, "3", u"4", [5, 6]])
"[1, 2, '3', u'4', [5, 6]]"
Visitor function object.
>>> compile = Visitor("compile")
>>> compile
<comedy.visitor.Visitor 'compile' at ...>
>>> compile.__name__
'compile'
Parameters: | name – the name of the visitor function |
---|
The latest added function. May be None.
The name of the visitor function.
Returns a decorator to register a function.
>>> compile = Visitor("compile")
>>> @compile.visit(int)
... @compile.visit(long)
... def compile(value):
... return "int: {0}".format(value)
...
Parameters: | type – a type to connect with a function |
---|---|
Returns: | an VisitorDecorator instance |