#!/bin/lua
-- This script converts a highlight theme to a JSON dataset
function bool2str(b)
if not b then return "false" end
return "true"
end
function printAttributes(e, isLast)
retVal = [[{ "Colour": "]]..e.Colour..[[", "Bold": ]]..bool2str(e.Bold)..[[, "Italic": ]]..bool2str(e.Italic)..[[, "Underline": ]]..bool2str(e.Underline)
if isLast then
retVal = retVal .." }\n"
else
retVal = retVal .." },\n"
end
return retVal
end
function printKeywords()
retVal="\n"
for k, v in pairs(Keywords) do
retVal = retVal.." "..printAttributes(v, k==#Keywords)
end
return retVal
end
function theme2json()
dofile (arg[1])
print (
[[{
"Description" : "]]..Description..[[",
"Default" : ]]..printAttributes(Default)..[[
"Canvas" : ]]..printAttributes(Canvas)..[[
"Number" : ]]..printAttributes(Number)..[[
"Escape" : ]]..printAttributes(Escape)..[[
"String" : ]]..printAttributes(String)..[[
"StringPreProc" : ]]..printAttributes(StringPreProc)..[[
"BlockComment" : ]]..printAttributes(BlockComment)..[[
"LineComment" : ]]..printAttributes(LineComment)..[[
"PreProcessor" : ]]..printAttributes(PreProcessor)..[[
"LineNum" : ]]..printAttributes(LineNum)..[[
"Operator" : ]]..printAttributes(Operator)..[[
"Interpolation" : ]]..printAttributes(Interpolation)..[[
"Keywords": []]..printKeywords()..[[
]
}]])
end
if #arg < 1 then
print ("Invoke this script with a theme file as argument")
else
if not pcall(theme2json) then
print ("Script not existing or invalid")
end
end