def _to_node_dict(self): """Construct the graph of nodes if it hasn't already been made. """ if self._root is None: make_nd = self.factory.make_node # Start with the smallest possible tree self._root = make_nd(NAME_PREFIX + '_root') self._add_node(self._root) # The final end marker is needed to give any trailing comments # a parent node to attach themselves to. end_marker_node = make_nd(NAME_PREFIX + END_MARKER) self._to_node_dict2(self._root, self._nested_list + [end_marker_node]) # Remove the end marker unless it contains a trailing comment if not end_marker_node.comments: self._remove_node(end_marker_node) self._make_tree_lines() self._nodes['_tree'] = self.padded_tree_lines self._nodes = sets_to_sorted_lists(self._nodes)
def test_sets_to_sorted_lists(self): nodes = {'_leaves': set(['alpha', 'delta', 'four', 'gamma'])} assert sets_to_sorted_lists(nodes) == {'_leaves': ['alpha', 'delta', 'four', 'gamma']} # But lists are not sorted nodes = {'alist': ['zoo', 'yacht', 'windmill']} assert sets_to_sorted_lists(nodes) == nodes nodes = {'simple': 'plain', 'fruit': 'scone', 'empty': {}, 'number': 5} assert sets_to_sorted_lists(nodes) == { 'simple': 'plain', 'fruit': 'scone', 'empty': {}, 'number': 5} nodes = {'four': {'groups': set(['_root'])}} assert sets_to_sorted_lists(nodes) == {'four': {'groups': ['_root']}} nodes = {} assert sets_to_sorted_lists(nodes) == {} nodes = {'empty': {}} assert sets_to_sorted_lists(nodes) == {'empty': {}}