feat(cese): normalize cses handling
This commit is contained in:
parent
03bb0bda33
commit
d827b6dd0b
1 changed files with 8 additions and 32 deletions
|
|
@ -58,16 +58,14 @@ local function setup_problem(contest_id, problem_id, language)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
local problem_name = state.platform == 'cses' and contest_id or (contest_id .. (problem_id or ''))
|
local problem_name = contest_id .. (problem_id or '')
|
||||||
logger.log(('setting up problem: %s'):format(problem_name))
|
logger.log(('setting up problem: %s'):format(problem_name))
|
||||||
|
|
||||||
local ctx = problem.create_context(state.platform, contest_id, problem_id, config, language)
|
local ctx = problem.create_context(state.platform, contest_id, problem_id, config, language)
|
||||||
|
|
||||||
if vim.tbl_contains(config.scrapers, state.platform) then
|
if vim.tbl_contains(config.scrapers, state.platform) then
|
||||||
cache.load()
|
cache.load()
|
||||||
local existing_contest_data = state.platform == 'cses'
|
local existing_contest_data = cache.get_contest_data(state.platform, contest_id)
|
||||||
and cache.get_contest_data(state.platform, state.contest_id)
|
|
||||||
or cache.get_contest_data(state.platform, contest_id)
|
|
||||||
|
|
||||||
if not existing_contest_data then
|
if not existing_contest_data then
|
||||||
local metadata_result = scrape.scrape_contest_metadata(state.platform, contest_id)
|
local metadata_result = scrape.scrape_contest_metadata(state.platform, contest_id)
|
||||||
|
|
@ -80,11 +78,7 @@ local function setup_problem(contest_id, problem_id, language)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- NOTE: CSES uses different cache key structure: (platform, category, problem_id)
|
local cached_test_cases = cache.get_test_cases(state.platform, contest_id, problem_id)
|
||||||
-- vs other platforms: (platform, contest_id, problem_letter)
|
|
||||||
local cache_contest_id = state.platform == 'cses' and state.contest_id or contest_id
|
|
||||||
local cache_problem_id = state.platform == 'cses' and contest_id or problem_id
|
|
||||||
local cached_test_cases = cache.get_test_cases(state.platform, cache_contest_id, cache_problem_id)
|
|
||||||
if cached_test_cases then
|
if cached_test_cases then
|
||||||
state.test_cases = cached_test_cases
|
state.test_cases = cached_test_cases
|
||||||
logger.log(('using cached test cases (%d)'):format(#cached_test_cases))
|
logger.log(('using cached test cases (%d)'):format(#cached_test_cases))
|
||||||
|
|
@ -671,13 +665,7 @@ local function navigate_problem(delta, language)
|
||||||
end
|
end
|
||||||
|
|
||||||
local problems = contest_data.problems
|
local problems = contest_data.problems
|
||||||
local current_problem_id
|
local current_problem_id = state.problem_id
|
||||||
|
|
||||||
if state.platform == 'cses' then
|
|
||||||
current_problem_id = state.contest_id
|
|
||||||
else
|
|
||||||
current_problem_id = state.problem_id
|
|
||||||
end
|
|
||||||
|
|
||||||
if not current_problem_id then
|
if not current_problem_id then
|
||||||
logger.log('no current problem set', vim.log.levels.ERROR)
|
logger.log('no current problem set', vim.log.levels.ERROR)
|
||||||
|
|
@ -707,11 +695,7 @@ local function navigate_problem(delta, language)
|
||||||
|
|
||||||
local new_problem = problems[new_index]
|
local new_problem = problems[new_index]
|
||||||
|
|
||||||
if state.platform == 'cses' then
|
setup_problem(state.contest_id, new_problem.id, language)
|
||||||
setup_problem(new_problem.id, nil, language)
|
|
||||||
else
|
|
||||||
setup_problem(state.contest_id, new_problem.id, language)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
local function restore_from_current_file()
|
local function restore_from_current_file()
|
||||||
|
|
@ -735,7 +719,7 @@ local function restore_from_current_file()
|
||||||
('Restoring from cached state: %s %s %s'):format(
|
('Restoring from cached state: %s %s %s'):format(
|
||||||
file_state.platform,
|
file_state.platform,
|
||||||
file_state.contest_id,
|
file_state.contest_id,
|
||||||
file_state.problem_id or 'CSES'
|
file_state.problem_id or 'N/A'
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -746,11 +730,7 @@ local function restore_from_current_file()
|
||||||
state.contest_id = file_state.contest_id
|
state.contest_id = file_state.contest_id
|
||||||
state.problem_id = file_state.problem_id
|
state.problem_id = file_state.problem_id
|
||||||
|
|
||||||
if file_state.platform == 'cses' then
|
setup_problem(file_state.contest_id, file_state.problem_id, file_state.language)
|
||||||
setup_problem(file_state.contest_id, nil, file_state.language)
|
|
||||||
else
|
|
||||||
setup_problem(file_state.contest_id, file_state.problem_id, file_state.language)
|
|
||||||
end
|
|
||||||
|
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
|
@ -925,11 +905,7 @@ function M.handle_command(opts)
|
||||||
end
|
end
|
||||||
|
|
||||||
if cmd.type == 'problem_switch' then
|
if cmd.type == 'problem_switch' then
|
||||||
if state.platform == 'cses' then
|
setup_problem(state.contest_id, cmd.problem, cmd.language)
|
||||||
setup_problem(cmd.problem, nil, cmd.language)
|
|
||||||
else
|
|
||||||
setup_problem(state.contest_id, cmd.problem, cmd.language)
|
|
||||||
end
|
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue