feat(codechef): implement full CodeChef support (#354)
## Problem CodeChef had no working login, submit, or contest list. The browser selectors were wrong, the contest list was missing present/past contests, and problem/contest URLs were unset. ## Solution Fix login and submit selectors for the Drupal-based site. Paginate `/api/list/contests/past` to collect all 228 Starters, then expand each parent contest into individual division entries (e.g. `START228 (Div. 4)`). Add language IDs, correct `url`/`contest_url`/`standings_url` in metadata, and make `:CP <platform>` open the contest picker directly.
This commit is contained in:
parent
c7f2af16d4
commit
3c11d609f5
26 changed files with 336 additions and 158 deletions
|
|
@ -1,3 +1,9 @@
|
|||
---@class DiffLayout
|
||||
---@field buffers integer[]
|
||||
---@field windows integer[]
|
||||
---@field mode string
|
||||
---@field cleanup fun()
|
||||
|
||||
local M = {}
|
||||
|
||||
local helpers = require('cp.helpers')
|
||||
|
|
@ -171,6 +177,11 @@ local function create_single_layout(parent_win, content)
|
|||
}
|
||||
end
|
||||
|
||||
---@param mode string
|
||||
---@param parent_win integer
|
||||
---@param expected_content string
|
||||
---@param actual_content string
|
||||
---@return DiffLayout
|
||||
function M.create_diff_layout(mode, parent_win, expected_content, actual_content)
|
||||
if mode == 'single' then
|
||||
return create_single_layout(parent_win, actual_content)
|
||||
|
|
@ -185,6 +196,13 @@ function M.create_diff_layout(mode, parent_win, expected_content, actual_content
|
|||
end
|
||||
end
|
||||
|
||||
---@param current_diff_layout DiffLayout?
|
||||
---@param current_mode string?
|
||||
---@param main_win integer
|
||||
---@param run table
|
||||
---@param config cp.Config
|
||||
---@param setup_keybindings_for_buffer fun(buf: integer)
|
||||
---@return DiffLayout?, string?
|
||||
function M.update_diff_panes(
|
||||
current_diff_layout,
|
||||
current_mode,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue