-- @docclass local function convertSettingValue(value) if type(value) == 'table' then if value.x and value.width then return recttostring(value) elseif value.x then return pointtostring(value) elseif value.width then return sizetostring(value) elseif value.r then return colortostring(value) else return value end elseif value == nil then return '' else return tostring(value) end end function Config:set(key, value) self:setValue(key, convertSettingValue(value)) end function Config:setDefault(key, value) if self:exists(key) then return false end self:set(key, value) return true end function Config:get(key, default) if not self:exists(key) and default ~= nil then self:set(key, default) end return self:getValue(key) end function Config:getString(key, default) return self:get(key, default) end function Config:getInteger(key, default) local v = tonumber(self:get(key, default)) or 0 return v end function Config:getNumber(key, default) local v = tonumber(self:get(key, default)) or 0 return v end function Config:getBoolean(key, default) return toboolean(self:get(key, default)) end function Config:getPoint(key, default) return topoint(self:get(key, default)) end function Config:getRect(key, default) return torect(self:get(key, default)) end function Config:getSize(key, default) return tosize(self:get(key, default)) end function Config:getColor(key, default) return tocolor(self:get(key, default)) end