Gets recusively requested category, alternately if **vivify** argument is set,
        the category will be created.

        :param category: Base category.
        :type category: dict
        :param name: Category to retrieve or vivify.
        :type name: unicode
        :param vivify: Vivify missing parents in the chain to the requested category.
        :type vivify: bool
        :return: Requested category.
        :rtype: dict

def __get_category(self, category, name, vivify=False):
        """
        Gets recusively requested category, alternately if **vivify** argument is set,
        the category will be created.

        :param category: Base category.
        :type category: dict
        :param name: Category to retrieve or vivify.
        :type name: unicode
        :param vivify: Vivify missing parents in the chain to the requested category.
        :type vivify: bool
        :return: Requested category.
        :rtype: dict
        """

        namespace = foundations.namespace.get_namespace(name, root_only=True)
        name = foundations.namespace.remove_namespace(name, root_only=True)
        if namespace:
            if vivify and namespace not in category:
                category[namespace] = {}
            return self.__get_category(category[namespace], name, vivify)
        else:
            if vivify and name not in category:
                category[name] = {}
            return category[name]