Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- os.loadAPI("System/API/config")
- local window = term.current()
- local Colors = {
- ["commands"] = tonumber(config.read("System/MineCode/syntax_colors.cfg","commands")),
- ["api"] = tonumber(config.read("System/MineCode/syntax_colors.cfg","api")),
- ["string"] = tonumber(config.read("System/MineCode/syntax_colors.cfg","string")),
- ["comments"] = tonumber(config.read("System/MineCode/syntax_colors.cfg","comments")),
- ["compares"] = tonumber(config.read("System/MineCode/syntax_colors.cfg","compares")),
- ["loops"] = tonumber(config.read("System/MineCode/syntax_colors.cfg","basics")),
- ["boolean"] = tonumber(config.read("System/MineCode/syntax_colors.cfg","boolean")),
- ["number"] = tonumber(config.read("System/MineCode/syntax_colors.cfg","number")),
- }
- local KeyWords = {
- [1] = {["key"]="for",["color"]=Colors["loops"]},
- [2] = {["key"]="while",["color"]=Colors["loops"]},
- [3] = {["key"]="true",["color"]=Colors["boolean"]},
- [4] = {["key"]="false",["color"]=Colors["boolean"]},
- [5] = {["key"]="if",["color"]=Colors["loops"]},
- [6] = {["key"]="then",["color"]=Colors["loops"]},
- [7] = {["key"]="else",["color"]=Colors["loops"]},
- [8] = {["key"]="elseif",["color"]=Colors["loops"]},
- [9] = {["key"]="do",["color"]=Colors["loops"]},
- [10] = {["key"]="break",["color"]=colors.red},
- [11] = {["key"]="function",["color"]=Colors["loops"]},
- [12] = {["key"]="and",["color"]=Colors["loops"]},
- [13] = {["key"]="not",["color"]=Colors["loops"]},
- [14] = {["key"]="or",["color"]=Colors["loops"]},
- [15] = {["key"]="in",["color"]=Colors["loops"]},
- [16] = {["key"]="until",["color"]=Colors["loops"]},
- [17] = {["key"]="return",["color"]=Colors["loops"]},
- [18] = {["key"]="repeat",["color"]=Colors["loops"]},
- [19] = {["key"]="nil",["color"]=Colors["boolean"]},
- [20] = {["key"]="local",["color"]=Colors["loops"]},
- }
- local Compares = {
- [1] = "=",
- [2] = "==",
- [3] = "~=",
- [4] = ">",
- [5] = "<",
- [6] = ">=",
- [7] = "<=",
- [8] = "+",
- [9] = "-",
- [10] = "*",
- [11] = "/",
- [12] = "%^",
- [13] = "%.%.",
- [14] = "%#",
- }
- local function findAndReplace(stroka,pattern,color,y,symbolStart,obrezatSleva,obrezatSprava,vichestIzStartaPoiska)
- local findPos = 1
- while true do
- local startPos,endPos = string.find(stroka,pattern,findPos)
- if startPos ~= nil and endPos ~= nil then
- window.setTextColor(color)
- window.setCursorPos(symbolStart+startPos-1+obrezatSleva,y)
- window.write(string.sub(stroka,startPos+obrezatSleva,endPos-obrezatSprava))
- else
- break
- end
- findPos = endPos + 1 - vichestIzStartaPoiska
- end
- end
- function syntaxString(wnd,y,symbolStart,stroka)
- window = wnd
- --Красим в цвета всю хуйню из массива. Пока что надо доработать
- for i=1,#KeyWords do
- findAndReplace(stroka," "..KeyWords[i]["key"].." ",KeyWords[i]["color"],y,symbolStart,0,0,0)
- findAndReplace(stroka," "..KeyWords[i]["key"].."$",KeyWords[i]["color"],y,symbolStart,0,0,0)
- findAndReplace(stroka,"^"..KeyWords[i]["key"].." ",KeyWords[i]["color"],y,symbolStart,0,0,0)
- end
- --Красим функции
- findAndReplace(stroka,"[%a%d%_%-]*%(",Colors["commands"],y,symbolStart,0,1,0)
- findAndReplace(stroka,"%.(.*)%(",Colors["commands"],y,symbolStart,1,1,0)
- --Красим вызов АПИ
- findAndReplace(stroka,"os%.loadAPI%(",Colors["api"],y,symbolStart,0,1,0)
- --Красим END, если он заканчивает строку
- findAndReplace(stroka,"end$",Colors["loops"],y,symbolStart,0,0,0)
- --Красим красным всякие сравнивалки типа =, ==, >= и т.п.
- for i=1,#Compares do
- findAndReplace(stroka," "..Compares[i].." ",Colors["compares"],y,symbolStart,0,0,0)
- findAndReplace(stroka,"(.)"..Compares[i].."(.)",Colors["compares"],y,symbolStart,1,1,0)
- findAndReplace(stroka,"(.)"..Compares[i],Colors["compares"],y,symbolStart,1,0,0)
- findAndReplace(stroka,Compares[i].."(.)",Colors["compares"],y,symbolStart,0,1,0)
- end
- --КРАСИМ ЦИВФРЫ
- findAndReplace(stroka,"[^%a%d](%d*)[^%a%d]",Colors["number"],y,symbolStart,1,1,1)
- findAndReplace(stroka,"[^%a%d](%d*)$",Colors["number"],y,symbolStart,1,0,0)
- --Красим красным текст в кавычках
- findAndReplace(stroka,"\".-[^\"\"]\"",Colors["string"],y,symbolStart,0,0,0)
- --Красим зеленым комментарии
- findAndReplace(stroka,"%-%-.*",Colors["comments"],y,symbolStart,0,0,0)
- window.setTextColor(colors.black)
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement