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