HSolo
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Мне по работе приходится часто считать, а калькулятор терпеть не могу. Переработал (под себя) скрипт exec.lua, возможно кому пригодится Вот текст: ------------------------------------------------------------------------------------------------------ local str = props['CurrentSelection'] if (str == '') then str = editor:GetSelText() end if (str == '') then str = editor:GetCurLine() end if (string.len(str) > 2) then if string.find(str,'http://(.*)') then local browser = ('explorer ' .. str .. ' &') os.execute(browser) else if string.find(str, "(math\.%w+)") then --~ В случае сложных математических выражений форматирование оставляем на пользователя str = string.gsub(str,"[=]",'') else str = string.gsub(str,"[^%d\n\*\+\/\.\(\)\-]",'') --~ Иначе ... удаляем все не числа, т.е. то что может помешать пересчету end str = string.gsub(str,"[\n%s]",'+') --~ Замена перевода строки на знак прибавить str = string.gsub(str,"([\+\*\/\-])([\+\*\/\-]+)",'%1') --~ Удаляем сдвоенные знаки str = string.gsub(str,"^[\+\*\/\-]+",'') --~ Удаляем знаки в начале и конце str = string.gsub(str,"[\+\*\/\-]+$",'') str = string.gsub(str,"([\+\*\/\-]+)",' %1 ') --~ Разделяем группы пробелами print('\n> Расчитываем выражение: '..str) local res = assert(loadstring('return '..str),str)() editor:CharRight() editor:LineEnd() editor:AddText('\n= '..res) print('> Результат: '..res) end end ------------------------------------------------------------------------------------------------------ |