fix: typing

This commit is contained in:
Barrett Ruth 2025-10-05 23:55:23 -04:00
parent fa26344cd0
commit 6ae9488761
3 changed files with 205 additions and 54 deletions

View file

@ -1,3 +1,11 @@
---@class cp.ProvisionalState
---@field bufnr integer
---@field platform string
---@field contest_id string
---@field language string
---@field requested_problem_id string|nil
---@field token integer
---@class cp.State
---@field get_platform fun(): string?
---@field set_platform fun(platform: string)
@ -6,16 +14,19 @@
---@field get_problem_id fun(): string?
---@field set_problem_id fun(problem_id: string)
---@field get_active_panel fun(): string?
---@field set_active_panel fun(): string?
---@field set_active_panel fun(panel: string?)
---@field get_base_name fun(): string?
---@field get_source_file fun(language?: string): string?
---@field get_binary_file fun(): string?
---@field get_input_file fun(): string?
---@field get_output_file fun(): string?
---@field get_expected_file fun(): string?
---@field get_provisional fun(): cp.ProvisionalState|nil
---@field set_provisional fun(p: cp.ProvisionalState|nil)
local M = {}
---@type table<string, any>
local state = {
platform = nil,
contest_id = nil,
@ -23,32 +34,40 @@ local state = {
test_cases = nil,
saved_session = nil,
active_panel = nil,
provisional = nil,
}
---@return string|nil
function M.get_platform()
return state.platform
end
---@param platform string
function M.set_platform(platform)
state.platform = platform
end
---@return string|nil
function M.get_contest_id()
return state.contest_id
end
---@param contest_id string
function M.set_contest_id(contest_id)
state.contest_id = contest_id
end
---@return string|nil
function M.get_problem_id()
return state.problem_id
end
---@param problem_id string
function M.set_problem_id(problem_id)
state.problem_id = problem_id
end
---@return string|nil
function M.get_base_name()
local platform, contest_id, problem_id = M.get_platform(), M.get_contest_id(), M.get_problem_id()
if not platform or not contest_id or not problem_id then
@ -65,10 +84,13 @@ function M.get_base_name()
end
end
---@return string|nil
function M.get_language()
return
end
---@param language? string
---@return string|nil
function M.get_source_file(language)
local base_name = M.get_base_name()
if not base_name or not M.get_platform() then
@ -90,34 +112,50 @@ function M.get_source_file(language)
return base_name .. '.' .. eff.extension
end
---@return string|nil
function M.get_binary_file()
local base_name = M.get_base_name()
return base_name and ('build/%s.run'):format(base_name) or nil
end
---@return string|nil
function M.get_input_file()
local base_name = M.get_base_name()
return base_name and ('io/%s.cpin'):format(base_name) or nil
end
---@return string|nil
function M.get_output_file()
local base_name = M.get_base_name()
return base_name and ('io/%s.cpout'):format(base_name) or nil
end
---@return string|nil
function M.get_expected_file()
local base_name = M.get_base_name()
return base_name and ('io/%s.expected'):format(base_name) or nil
end
---@return string|nil
function M.get_active_panel()
return state.active_panel
end
---@param panel string|nil
function M.set_active_panel(panel)
state.active_panel = panel
end
---@return cp.ProvisionalState|nil
function M.get_provisional()
return state.provisional
end
---@param p cp.ProvisionalState|nil
function M.set_provisional(p)
state.provisional = p
end
M._state = state
return M