Now 'name' variables can be added to namespaces. fixed #53

master
Иванов Денис 3 years ago
parent c5d40d4e27
commit 1777f224b5

@ -759,7 +759,7 @@ class VariableNode:
class NamespaceNode:
'''Класс ноды соответствующей пространству имен в дереве переменных.'''
def __init__(self, name='', parent=None):
self.name = name
self._name = name
self.variables = dict()
self.namespaces = dict()
self.parent = parent
@ -776,12 +776,12 @@ class NamespaceNode:
def add_namespace(self, namespace) -> None:
'''Метод для добавления пространства имен в пространство имен.'''
if namespace.name in self.variables:
if namespace._name in self.variables:
raise VariableError("variable with the name '{}' is already in"
" the namespace '{}'".format(
namespace.name,
namespace._name,
self.get_fullname()))
self.namespaces.update({namespace.name: namespace})
self.namespaces.update({namespace._name: namespace})
namespace.parent = self
def clear(self):
@ -794,14 +794,14 @@ class NamespaceNode:
def get_fullname(self) -> str:
'''Метод для получения полного имени пространства имен.'''
if self.parent is not None and self.parent.name != '<root>':
return '{}.{}'.format(self.parent.get_fullname(), self.name)
if self.parent is not None and self.parent._name != '<root>':
return '{}.{}'.format(self.parent.get_fullname(), self._name)
else:
return self.name
return self._name
def get_package_name(self) -> str:
if self.parent.name == '<root>':
return self.name
if self.parent._name == '<root>':
return self._name
else:
return self.parent.get_package_name()
@ -819,8 +819,8 @@ class NamespaceNode:
return None
raise VariableNotFoundError("'{variable_name}' is not found in the"
" namespace '{namespace_name}'".format(
variable_name=name,
namespace_name=self.name))
variable_name=name,
namespace_name=self._name))
def __getitem__(self, name: str) -> None:
'''Метод возвращает ноду пространства имен или ноду переменной.'''
@ -833,8 +833,8 @@ class NamespaceNode:
return None
raise VariableNotFoundError("'{variable_name}' is not found in the"
" namespace '{namespace_name}'".format(
variable_name=name,
namespace_name=self.name))
variable_name=name,
namespace_name=self._name))
def __contains__(self, name):
return name in self.namespaces or name in self.variables

Loading…
Cancel
Save