A Neovim plugin enabling you to solve LeetCode problems.
| 1 | local Lines = require("leetcode-ui.lines") |
| 2 | local t = require("leetcode.translator") |
| 3 | local log = require("leetcode.logger") |
| 4 | local cmd = require("leetcode.command") |
| 5 | local config = require("leetcode.config") |
| 6 | |
| 7 | ---@class lc.ui.menu.Stats : lc.ui.Lines |
| 8 | local Stats = Lines:extend("LeetMenuTitle") |
| 9 | |
| 10 | |
| 11 | self:clear() |
| 12 | |
| 13 | local stats = config.stats |
| 14 | local daily, progress = stats.daily, stats.progress |
| 15 | |
| 16 | local hl = daily.today_completed and "leetcode_hard" or "leetcode_alt" |
| 17 | self:append(" ", hl) |
| 18 | self:append(daily.streak and tostring(daily.streak) or "-") |
| 19 | |
| 20 | self:append((" %s "):format(config.icons.bar)) |
| 21 | |
| 22 | self:append(t("session") .. ": ", "leetcode_alt") |
| 23 | local session = cmd.get_active_session() |
| 24 | local session_name = session |
| 25 | and (session.name == "" and config.sessions.default or session.name) |
| 26 | or "-" |
| 27 | self:append(session_name) |
| 28 | |
| 29 | local icon = (" %s "):format(config.icons.square) |
| 30 | local |
| 31 | self:append(icon, "leetcode_" .. key) |
| 32 | local count = progress[key] and tostring(progress[key].count) or "-" |
| 33 | self:append(count) |
| 34 | end |
| 35 | |
| 36 | create_progress("easy") |
| 37 | create_progress("medium") |
| 38 | create_progress("hard") |
| 39 | |
| 40 | return Stats.super.contents(self) |
| 41 | end |
| 42 | |
| 43 | ---@type fun(): lc.ui.menu.Stats |
| 44 | local LeetMenuStats = Stats |
| 45 | |
| 46 | return LeetMenuStats() |