apply_on_last_branches is ok
This commit is contained in:
parent
e64613f5be
commit
0f3e0870fe
@ -226,17 +226,39 @@ class Tree(object):
|
|||||||
:param function: (op, a, a) -> b
|
:param function: (op, a, a) -> b
|
||||||
:returns: b if it is a 1 level Tree, Tree otherwise
|
:returns: b if it is a 1 level Tree, Tree otherwise
|
||||||
|
|
||||||
|
|
||||||
|
:example:
|
||||||
|
|
||||||
|
>>> nested_par = ("+", (
|
||||||
|
... ("*", (3, 4)),
|
||||||
|
... 2))
|
||||||
|
>>> t = Tree.from_nested_parenthesis(nested_par)
|
||||||
|
>>> print(t)
|
||||||
|
+
|
||||||
|
> *
|
||||||
|
| > 3
|
||||||
|
| > 4
|
||||||
|
> 2
|
||||||
|
>>> from .tree_tools import infix_str_concatenate
|
||||||
|
>>> tt = t.apply_on_last_branches(lambda *x: infix_str_concatenate(*x))
|
||||||
|
>>> print(tt)
|
||||||
|
+
|
||||||
|
> 3 * 4
|
||||||
|
> 2
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
left_is_leaf = 0
|
||||||
|
right_is_leaf = 0
|
||||||
try:
|
try:
|
||||||
# TODO: to change when typify is done |dim. févr. 19 14:49:06 EAT 2017
|
|
||||||
left_applied = self.left_value.apply_on_last_branches(function)
|
left_applied = self.left_value.apply_on_last_branches(function)
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
|
left_applied = self.left_value
|
||||||
left_is_leaf = 1
|
left_is_leaf = 1
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# TODO: to change when typify is done |dim. févr. 19 14:49:06 EAT 2017
|
right_applied = self.right_value.apply_on_last_branches(function)
|
||||||
left_applied = self.left_value.apply_on_last_branches(function)
|
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
|
right_applied = self.right_value
|
||||||
right_is_leaf = 1
|
right_is_leaf = 1
|
||||||
|
|
||||||
if left_is_leaf and right_is_leaf:
|
if left_is_leaf and right_is_leaf:
|
||||||
|
Loading…
Reference in New Issue
Block a user