visitor: simplify default hook
[mdis.git] / src / mdis / visitor.py
1 __all__ = [
2 "ContextVisitor",
3 "Visitor",
4 "VisitorMeta",
5 ]
6
7 import contextlib
8
9 from . import dispatcher
10
11
12 class VisitorMeta(dispatcher.DispatcherMeta):
13 pass
14
15
16 class Visitor(dispatcher.Dispatcher, metaclass=VisitorMeta):
17 @dispatcher.Hook(object)
18 def dispatch_object(self, node):
19 return node
20
21
22 class ContextVisitor(Visitor):
23 @dispatcher.Hook(object)
24 @contextlib.contextmanager
25 def dispatch_object(self, node):
26 yield node