name spaceってZopeのobjectの空間のname spaceをurlで表記できるということ?
def traverseName(self, ob, name):
if name and name[:1] in '@+':
# Process URI segment parameters.
ns, nm = nsParse(name)
if ns:
try:
ob2 = namespaceLookup(ns, nm, ob, self)
except TraversalError:
raise KeyError(ob, name)
__of__とAcquireは何か関係があるらしい。
if IAcquirer.providedBy(ob2):
ob2 = ob2.__of__(ob)
return ob2
ifの順番を最初のやつと入れ替えてelifで書けとか思うのは気のせい?name == '.'のケースにsliceしたobjectを生成しないので気持ちいい。速いとはいわない。
if name == '.':
return ob
これがおそらく一番普通のケース。
if IPublishTraverse.providedBy(ob):
ob2 = ob.publishTraverse(self, name)
obがdumbだとadapterを探す。
else:
adapter = queryMultiAdapter((ob, self), IPublishTraverse)
if adapter is None:
## Zope2 doesn't set up its own adapters in a lot of cases
## so we will just use a default adapter.
adapter = DefaultPublishTraverse(ob, self)
ob2 = adapter.publishTraverse(self, name)
return ob2
0 件のコメント:
コメントを投稿