tool
extends Resource
class_name TE_ExtensionHelper

var symbols:Dictionary = {}

func generate_meta(t:TextEdit, r:TE_RichTextLabel):
	var chars = TE_Util.commas(len(t.text))
	var words = TE_Util.commas(len(t.text.split(" ", false)))
	var lines = TE_Util.commas(len(TE_Util.split_many(t.text, ".?!\n", false)))
	var bytes = TE_Util.file_size(t.file_path)
	r.add_constant_override("table_hseparation", int(r.rect_size.x / 5.0))
	r.set_bbcode(r.table([
		["chars", "words", "lines", "bytes"],
		[chars, words, lines, bytes]
	]))

func toggle_comment(t:TextEdit, head:String="", tail:String=""):
	var wasnt_selected:bool = false
	var cursor_l
	var cursor_c
	
	if not t.is_selection_active():
		var l = t.cursor_get_line()
		var lt = t.get_line(l)
		wasnt_selected = lt.strip_edges() == ""
		cursor_l = t.cursor_get_line()
		cursor_c = t.cursor_get_column()
		var s = len(lt) - len(lt.strip_edges(true, false))
		t.select(l, s, l, len(t.get_line(l)))
	
	var l1 = t.get_selection_from_line()
	var c1 = t.get_selection_from_column()
	var old = t.get_selection_text()
	var new
	
	if TE_Util.is_wrapped(old, head, tail):
		new = TE_Util.unwrap(old, head, tail)
	else:
		new = TE_Util.wrap(old, head, tail)
	
	t.insert_text_at_cursor(new)
	
	if wasnt_selected:
		t.deselect()
		t.cursor_set_line(cursor_l)
		t.cursor_set_column(cursor_c+len(head))
	
	else:
		var l = new.split("\n")
		var l2 = l1 + len(l)-1
		var c2 = c1 + len(l[-1])
		t.select(l1, c1, l2, c2)
	
	return [old, new]

func add_symbol(line:int=-1, deep:int=0, name:String="") -> Dictionary:
	var symbol = { deep=deep, name=name, tags=[] }
	symbols[line] = symbol
	return symbol

func get_symbols(t:String) -> Dictionary:
	symbols = {}
	return symbols

func apply_colors(e, t:TextEdit):
	t.add_color_override("font_color", e.color_text)
	t.add_color_override("number_color", e.color_var)
	t.add_color_override("member_variable_color", e.color_var)
