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

Loading…
Cancel
Save