# -*- coding:utf-8 -*-
#
# Copyright 2014 Hewlett-Packard Development Company, L.P.
#
# SPDX-License-Identifier: Apache-2.0


import collections
import logging


LOG = logging.getLogger(__name__)


class BanditMetaAst(object):

    nodes = collections.OrderedDict()

    def __init__(self):
        pass

    def add_node(self, node, parent_id, depth):
        '''Add a node to the AST node collection

        :param node: The AST node to add
        :param parent_id: The ID of the node's parent
        :param depth: The depth of the node
        :return: -
        '''
        node_id = hex(id(node))
        LOG.debug('adding node : %s [%s]', node_id, depth)
        self.nodes[node_id] = {
            'raw': node, 'parent_id': parent_id, 'depth': depth
        }

    def __str__(self):
        '''Dumps a listing of all of the nodes

        Dumps a listing of all of the nodes for debugging purposes
        :return: -
        '''
        tmpstr = ""
        for k, v in self.nodes.items():
            tmpstr += "Node: %s\n" % k
            tmpstr += "\t%s\n" % str(v)
        tmpstr += "Length: %s\n" % len(self.nodes)
        return tmpstr
