diff --git a/README.md b/README.md index 3b7af94..c4db531 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,20 @@ treelib Tree implementation in python: simple for you to use. +## Modifications + +```sh +treelib/tree.py/Tree.show() +``` + +The original treelib only supports `data_property` argument as a `string`, and prints the corresponding attribute of the node data. This modification allows `data_property` argument to be a `list`, and prints the corresponding attributes in the list. For instance: + +```python +sent_trees[5].show(data_property=["text", "dep_"]) +``` + +------ + [![Build Status](https://travis-ci.org/caesar0301/treelib.svg?branch=master)](https://travis-ci.org/caesar0301/treelib) [![Documentation Status](https://readthedocs.org/projects/treelib/badge/?version=latest)](http://treelib.readthedocs.io/en/latest/?badge=latest) [![Status](https://img.shields.io/pypi/status/treelib.svg)](https://pypi.python.org/pypi/treelib) diff --git a/treelib/tree.py b/treelib/tree.py index 6ee18c9..27e5944 100644 --- a/treelib/tree.py +++ b/treelib/tree.py @@ -173,11 +173,21 @@ def __print_backend(self, nid=None, level=ROOT, idhidden=True, filter=None, # Factory for proper get_label() function if data_property: if idhidden: - def get_label(node): - return getattr(node.data, data_property) + if type(data_property) is str: + def get_label(node): + return getattr(node.data, data_property) + elif type(data_property) is list: + def get_label(node): + properties = ", ".join(["%s: %s" % (d, getattr(node.data, d)) for d in data_property]) + return properties else: - def get_label(node): - return "%s[%s]" % (getattr(node.data, data_property), node.identifier) + if type(data_property) is str: + def get_label(node): + return "%s[%s]" % (getattr(node.data, data_property), node.identifier) + elif type(data_property) is list: + def get_label(node): + properties = ", ".join(["%s: %s" % (d, getattr(node.data, d)) for d in data_property]) + return "%s[%s]" % (properties, node.identifier) else: if idhidden: def get_label(node): @@ -809,7 +819,7 @@ def show(self, nid=None, level=ROOT, idhidden=True, filter=None, :param key: the ``key`` param for sorting :class:`Node` objects in the same level. :param reverse: the ``reverse`` param for sorting :class:`Node` objects in the same level. :param line_type: - :param data_property: the property on the node data object to be printed. + :param data_property: the property on the node data object to be printed. # modified: Now data_property can be either a str or a list of strs. :return: None """ self._reader = ""