From: Jean Privat Date: Thu, 9 Feb 2017 18:13:16 +0000 (-0500) Subject: lib/ordered_tree: factorize `write_line` so subclasses can redefine it. X-Git-Url: http://nitlanguage.org lib/ordered_tree: factorize `write_line` so subclasses can redefine it. Signed-off-by: Jean Privat --- diff --git a/lib/ordered_tree.nit b/lib/ordered_tree.nit index d1dde15..86940af 100644 --- a/lib/ordered_tree.nit +++ b/lib/ordered_tree.nit @@ -147,8 +147,7 @@ class OrderedTree[E: Object] redef fun write_to(stream: Writer) do for r in roots do - stream.write display(r) - stream.write "\n" + write_line(stream, r, "") sub_write_to(stream, r, "") end end @@ -161,15 +160,29 @@ class OrderedTree[E: Object] var last = subs.last for e2 in subs do if e2 != last then - o.write "{prefix}|--{display(e2)}\n" + write_line(o, e2, prefix+"|--") sub_write_to(o, e2, prefix+"| ") else - o.write "{prefix}`--{display(e2)}\n" + write_line(o, e2, prefix+"`--") sub_write_to(o, e2, prefix+" ") end end end + # Write the full line for the element `e` in `o`. + # + # Basically it does: + # + # ~~~nitish + # o.write "{prefix}{display(e)}\n" + # ~~~ + # + # Usually, you should redefine `display` to change the display of an element. + protected fun write_line(o: Writer, e: E, prefix: String) + do + o.write "{prefix}{display(e)}\n" + end + # Sort roots and other elements using a comparator method # This method basically sorts roots then each group of children fun sort_with(comparator: Comparator)