function TrimString (sss) -- удаляем двойные пробелы и всякое лишнее local str1 = sss while string.find(str1," ") do str1 = string.gsub(str1," "," ") end str1 = string.gsub(str1,"_G "," ") str1 = string.gsub(str1,"_G[[]","[") -- удаляем пробелы слева while (string.sub (str1,1,1)==" ") and (string.len(str1)>1) do str1 = string.sub(str1, 2) end local bool_tochka = false while (string.sub (str1,1,1)==",") and (string.len(str1)>1) do str1 = string.sub(str1, 2); bool_tochka = true end while (string.sub (str1,1,1)==" ") and (string.len(str1)>1) do str1 = string.sub(str1, 2) end -- Q.MyFunc(self, args) --> Q:MyFunc(args) if string.find(str1,"self") then while string.find(str1,"self ") do str1 = string.gsub(str1,"self ","self") end while string.find(str1,"self,") do str1 = string.gsub(str1,"self,","self") end str1 = string.gsub(str1,"self","") while string.find(str1," ") do str1 = string.gsub(str1," "," ") end while string.find(str1,"[(] ") do str1 = string.gsub(str1,"[(] ","(") end while string.find(str1," [)]") do str1 = string.gsub(str1," [)]",")") end while string.find(str1," ") do str1 = string.gsub(str1," "," ") end str1="self:"..str1 else if bool_tochka then str1 = "."..str1 end end return str1 end function SkipSubStrings (ss) skip_table = {"= function","function", "="} local ss1 = ss for i,v in pairs (skip_table) do ss1 = string.gsub(ss1,v," ") end ss1 = TrimString (ss1) return ss1 end local sText = "function" local flag = 0 output:ClearAll() trace("> Список функций: \n") local s,e = editor:findtext(sText,flag,0) local count = 0 if(s~=nil) then local m = editor:LineFromPosition(s) - 1 while s do local l = editor:LineFromPosition(s) if (l ~= m) then count = count + 1 local str = string.gsub(" "..editor:GetLine(l),"%s+"," ") trace(":"..(l + 1)..":\t"..SkipSubStrings (str).."\n") m = l end s,e = editor:findtext(sText,flag,e+1) end trace("> Найдено: "..count.." функций\nДвойной щелчок на строке с результатом\nустановит курсор на оригинальную строку") else trace("> Функций не найдено!") end -- |