// AZJIO, 08.09.2019
// Console Filter. Pull out text, remove unnecessary chunks of text and paste back

var hWndOutput = GetOutputWindow() // получить дескриптор окна консоли
if(!hWndOutput) {
	WScript.Echo("Console is closed, nothing to handle");
	WScript.Quit();
};

AkelPad.SetEditWnd(hWndOutput); // устанавливает консоль окном редактирования
sLogText = AkelPad.GetTextRange(0, -1); // получает текст консоли
AkelPad.SetEditWnd(0); // возвращает окно редактирования
if(!sLogText) {
	WScript.Echo("The console is empty, nothing to handle");
	WScript.Quit();
};

var sEditFile = AkelPad.GetEditFile(0);
var sFileExt = AkelPad.GetFilePath(sEditFile, 4 /*CPF_FILEEXT*/ );

switch(sFileExt.toLowerCase()) {
	case "js": // для теста
	case "htm":
	case "html":
		sLogText = sLogText.replace(/line \d+ column \d+ - Warning: <img> lacks "alt" attribute[\r\n]+/g, '')
		sLogText = sLogText.replace(/line \d+ column \d+ - Warning: <table> lacks "summary" attribute[\r\n]+/g, '')
		// WScript.Echo(sLogText);
		AkelPad.Call("Log::Output", 4, sLogText, -1, 0); // заменить текст в консоли
		// AkelPad.Call("Coder::HighLight", 2, "#FFFFFF", "#F54E52", 0, 0, -1, "unexpected", -1) // не работает на консоль
		// AkelPad.Call("Log::Output", 4, "", -1, 0); // очистить текст в консоли
		if(!sLogText) {
			AkelPad.Call("Log::Output", 6);
		}; // закрываем консоль если нет вывода
		break;
};

function GetOutputWindow() {
	var lpWnd;
	var hWnd = 0;

	if(lpWnd = AkelPad.MemAlloc(_X64 ? 8 : 4 /*sizeof(HWND)*/ )) {
		AkelPad.Call("Log::Output", 2, lpWnd);
		hWnd = AkelPad.MemRead(lpWnd, 2 /*DT_QWORD*/ );
		AkelPad.MemFree(lpWnd);
	}
	return hWnd;
}