var _utils = load("res://addons/gut/utils.gd").get_instance() var _strutils = _utils.Strutils.new() const INDENT = " " var _max_to_display = 30 const ABSOLUTE_MAX_DISPLAYED = 10000 const UNLIMITED = -1 func _single_diff(diff, depth = 0): var to_return = "" var brackets = diff.get_brackets() if brackets != null and !diff.are_equal: to_return = "" to_return += str( brackets.open, "\n", _strutils.indent_text(differences_to_s(diff.differences, depth), depth + 1, INDENT), "\n", brackets.close ) else: to_return = str(diff) return to_return func make_it(diff): var to_return = "" if diff.are_equal: to_return = diff.summary else: if _max_to_display == ABSOLUTE_MAX_DISPLAYED: to_return = str(diff.get_value_1(), " != ", diff.get_value_2()) else: to_return = diff.get_short_summary() to_return += str("\n", _strutils.indent_text(_single_diff(diff, 0), 1, " ")) return to_return func differences_to_s(differences, depth = 0): var to_return = "" var keys = differences.keys() keys.sort() var limit = min(_max_to_display, differences.size()) for i in range(limit): var key = keys[i] to_return += str(key, ": ", _single_diff(differences[key], depth)) if i != limit - 1: to_return += "\n" if differences.size() > _max_to_display: to_return += str("\n\n... ", differences.size() - _max_to_display, " more.") return to_return func get_max_to_display(): return _max_to_display func set_max_to_display(max_to_display): _max_to_display = max_to_display if _max_to_display == UNLIMITED: _max_to_display = ABSOLUTE_MAX_DISPLAYED