script_name = "Absurdness"
script_description = "Benchmark renderers by testing how they react to an absurd number of \\t tags in one line, and an absurd amount of lines each with a single \\t."
script_author = "jfs"

absurd = 1000

ttext = "\\1a&H00&\\2a&H00&\\3a&H00&\\4a&H00&"

function gen_one_absurd(subs, sel)
	local l = subs[sel[1]]
	l.text = ""
	l.start_time = 0
	l.end_time = (absurd+1)*100
	for i = 1, absurd do
		l.text = l.text .. string.format("{\\t(%d,%d,%s)}", i*100, (i+1)*100, ttext)
	end
	l.text = l.text .. "a"
	subs[-sel[1]] = l
	aegisub.set_undo_point("absurdness 1")
end

function gen_absurd_many(subs, sel)
	local l = subs[sel[1]]
	for i = 1, absurd do
		l.start_time = i*100
		l.end_time = (i+1)*100
		l.text = string.format("{\\t(0,100,%s)}a", ttext)
		subs[-sel[1]] = l
	end
	aegisub.set_undo_point("absurdness 2")
end

aegisub.register_macro("Generate absurd line", "Absurd", gen_one_absurd)
aegisub.register_macro("Generate absurdly many lines", "Absurd", gen_absurd_many)