diff --git a/treevalue/tree/tree/tree.pxd b/treevalue/tree/tree/tree.pxd index 2cc8b626ceb748beb5977f040a2bce5960cc019b..4d49fdcc2bbaacfefb4e4ae722bfc35a956c3c8d 100644 --- a/treevalue/tree/tree/tree.pxd +++ b/treevalue/tree/tree/tree.pxd @@ -47,6 +47,8 @@ cdef class TreeValue: cpdef void validate(self) except* + cdef object _get_tree_graph(self) + cdef str _prefix_fix(object text, object prefix) cdef str _title_repr(TreeStorage st, object type_) cdef object _build_tree(TreeStorage st, object type_, str prefix, dict id_pool, tuple path) diff --git a/treevalue/tree/tree/tree.pyx b/treevalue/tree/tree/tree.pyx index ddecf39f93663189057a6a65ef2244e3a3461f13..a5c7ec5a0e82f0d09f88da3368e6be8a84c59766 100644 --- a/treevalue/tree/tree/tree.pyx +++ b/treevalue/tree/tree/tree.pyx @@ -932,6 +932,23 @@ cdef class TreeValue: else: return self._type(self._st, constraint=to_constraint([constraint, self.constraint])) + @cython.final + cdef inline object _get_tree_graph(self): + from .graph import graphics + return graphics((self, '')) + + @cython.binding(True) + def _repr_svg_(self): + return self._get_tree_graph().pipe(format='svg', encoding='utf-8') + + @cython.binding(True) + def _repr_png_(self): + return self._get_tree_graph().pipe(format='png') + + @cython.binding(True) + def _repr_jpeg_(self): + return self._get_tree_graph().pipe(format='jpeg') + cdef str _prefix_fix(object text, object prefix): cdef list lines = [] cdef int i