|
|
|
|
|
|
def acquireComponent(component, name): |
def acquireComponent(component, name, default=NOT_GIVEN): |
|
|
"""Acquire 'name' relative to 'component', w/fallback to naming.lookup() |
"""Acquire 'name' relative to 'component', w/fallback to naming.lookup() |
|
|
return adapt( |
return adapt( |
prev, IConfigurationRoot, NullConfigRoot |
prev, IConfigurationRoot, NullConfigRoot |
).nameNotFound( |
).nameNotFound( |
prev, name, component |
prev, name, component, default=default |
) |
) |
|
|
|
|
|
|
|
|
def findComponent(self, component, default=NOT_GIVEN): |
def findComponent(self, component, default=NOT_GIVEN): |
|
|
if not self: # empty name refers to self |
if not self: # empty name refers to self |
return component |
return component |
|
|
parts = iter(self) |
parts = iter(self) |
attr = parts.next() # first part |
attr = parts.next() # first part |
pc = _getFirstPathComponent(attr) |
pc = _getFirstPathComponent(attr) |
|
if pc: |
|
ob = pc(component) |
if pc: ob = pc(component) |
elif default is NOT_GIVEN: |
else: ob = acquireComponent(component, attr) |
ob = acquireComponent(component, attr) # let the error happen |
|
elif len(self)>1: |
|
ob = acquireComponent(component, attr, NOT_FOUND) |
|
else: |
|
return acquireComponent(component, attr, default) |
|
|
resolved = [] |
resolved = [] |
append = resolved.append |
append = resolved.append |
|
|
try: |
try: |
for attr in parts: |
for attr in parts: |
|
if ob is NOT_FOUND: break |
pc = _getNextPathComponent(attr) |
pc = _getNextPathComponent(attr) |
if pc: ob = pc(ob) |
if pc: ob = pc(ob) |
else: ob = getattr(ob,attr) |
else: ob = getattr(ob,attr) |
append(attr) |
append(attr) |
|
else: |
|
return ob |
|
|
except AttributeError: |
except AttributeError: |
|
pass |
|
|
if default is not NOT_GIVEN: |
if default is not NOT_GIVEN: |
return default |
return default |
resolvedObj = ob |
resolvedObj = ob |
) |
) |
|
|
return ob |
|
|
|
|
|
|
|
|
|
|
|
|
|
_getFirstPathComponent = dict( ( |
_getFirstPathComponent = dict( ( |
('', getRootComponent), |
('', getRootComponent), |
('.', lambda x:x), |
('.', lambda x:x), |