Skip to content

Commit 848e424

Browse files
committed
feat(palettes): Added load method for accessing new palettes
This is whole new method of accessing and overriding colors in newly written palettes.
1 parent f3e3ae3 commit 848e424

12 files changed

+108
-11
lines changed

lua/github-theme/init.lua

+6
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,8 @@ M.setup = function(opts)
6464
did_setup = true
6565
opts = opts or {}
6666

67+
local override = require('github-theme.override')
68+
6769
-- TODO: Remove these individual conditions when migration
6870
-- from old config to 'opts.options' has been DONE.
6971
if opts.colors then
@@ -76,9 +78,13 @@ M.setup = function(opts)
7678
config.set_options({ opts.dev })
7779
end
7880

81+
-- New configs
7982
if opts.options then
8083
config.set_options(opts.options)
8184
end
85+
if opts.palettes then
86+
override.palettes = opts.palettes
87+
end
8288

8389
dep.check_deprecation(opts)
8490
end

lua/github-theme/override.lua

+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
local collect = require('github-theme.lib.collect')
2+
3+
local store = {
4+
palettes = {},
5+
specs = {},
6+
groups = {},
7+
has_override = false,
8+
}
9+
10+
local function reset()
11+
store.palettes = {}
12+
store.specs = {}
13+
store.groups = {}
14+
store.has_override = false
15+
end
16+
17+
local function check_link(tbl)
18+
for _, style in pairs(tbl) do
19+
for _, opts in pairs(style) do
20+
opts.link = opts.link or ''
21+
end
22+
end
23+
end
24+
25+
return setmetatable({ reset = reset }, {
26+
__index = function(_, value)
27+
if store[value] then
28+
return store[value]
29+
end
30+
end,
31+
32+
__newindex = function(_, key, value)
33+
if store[key] then
34+
if key == 'groups' then
35+
check_link(value or {})
36+
end
37+
store[key] = collect.deep_extend(store[key], value or {})
38+
store.has_override = true
39+
end
40+
end,
41+
})

lua/github-theme/palette.lua

+52-2
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
1+
local collect = require('github-theme.lib.collect')
12
local config = require('github-theme.config')
23
local util = require('github-theme.util')
34

4-
---@class gt.Colors
55
local M = {}
66

77
---Setup Colors
8-
---@return gt.ColorPalette
98
M.setup = function()
109
local c = require('github-theme.palette.' .. config.theme)()
1110
c.none = 'NONE'
@@ -32,4 +31,55 @@ M.setup = function()
3231
return c
3332
end
3433

34+
-- TODO: Remove assignment after migration has been DONE
35+
M.themes = {
36+
['github_dark'] = 'g_dark',
37+
['github_dark_colorblind'] = 'g_dark_colorblind',
38+
['github_dark_high_contrast'] = 'g_dark_high_contrast',
39+
['github_dark_tritanopia'] = 'g_dark_tritanopia',
40+
['github_light'] = 'g_light',
41+
['github_light_colorblind'] = 'g_light_colorblind',
42+
['github_light_high_contrast'] = 'g_light_high_contrast',
43+
['github_light_tritanopia'] = 'g_light_tritanopia',
44+
}
45+
46+
local function override(color, ovr)
47+
for key, value in pairs(ovr) do
48+
color[key] = value
49+
end
50+
return color
51+
end
52+
53+
function M.load(name)
54+
local ovr = require('github-theme.override').palettes
55+
56+
local function apply_ovr(key, palette)
57+
return ovr[key] and override(palette, ovr[key]) or palette
58+
end
59+
60+
if name then
61+
local valid = collect.contains(M.themes, name)
62+
local raw = valid and require('github-theme.palette.' .. M.themes[name])
63+
or require('github-theme.palette.' .. M.themes[config.theme])
64+
local palette = raw.palette
65+
palette = apply_ovr('all', palette)
66+
palette = apply_ovr(name, palette)
67+
palette.meta = raw.meta
68+
palette.generate_spec = raw.generate_spec
69+
return palette
70+
else
71+
local result = {}
72+
for _, mod in ipairs(M.themes) do
73+
local raw = require('github-theme.palette.' .. M.themes[mod])
74+
local palette = raw.palette
75+
palette = apply_ovr('all', palette)
76+
palette = apply_ovr(mod, palette)
77+
palette.meta = raw.meta
78+
palette.generate_spec = raw.generate_spec
79+
result[mod] = palette
80+
end
81+
return result
82+
end
83+
end
84+
3585
return M

lua/github-theme/palette/g_dark.lua

+1-1
Original file line numberDiff line numberDiff line change
@@ -220,4 +220,4 @@ local function generate_spec(pal)
220220
return spec
221221
end
222222

223-
return { meta, palette, generate_spec }
223+
return { meta = meta, palette = palette, generate_spec = generate_spec }

lua/github-theme/palette/g_dark_colorblind.lua

+1-1
Original file line numberDiff line numberDiff line change
@@ -207,4 +207,4 @@ local function generate_spec(pal)
207207
return spec
208208
end
209209

210-
return { meta, palette, generate_spec }
210+
return { meta = meta, palette = palette, generate_spec = generate_spec }

lua/github-theme/palette/g_dark_dimmed.lua

+1-1
Original file line numberDiff line numberDiff line change
@@ -207,4 +207,4 @@ local function generate_spec(pal)
207207
return spec
208208
end
209209

210-
return { meta, palette, generate_spec }
210+
return { meta = meta, palette = palette, generate_spec = generate_spec }

lua/github-theme/palette/g_dark_high_contrast.lua

+1-1
Original file line numberDiff line numberDiff line change
@@ -207,4 +207,4 @@ local function generate_spec(pal)
207207
return spec
208208
end
209209

210-
return { meta, palette, generate_spec }
210+
return { meta = meta, palette = palette, generate_spec = generate_spec }

lua/github-theme/palette/g_dark_tritanopia.lua

+1-1
Original file line numberDiff line numberDiff line change
@@ -207,4 +207,4 @@ local function generate_spec(pal)
207207
return spec
208208
end
209209

210-
return { meta, palette, generate_spec }
210+
return { meta = meta, palette = palette, generate_spec = generate_spec }

lua/github-theme/palette/g_light.lua

+1-1
Original file line numberDiff line numberDiff line change
@@ -211,4 +211,4 @@ local function generate_spec(pal)
211211
return spec
212212
end
213213

214-
return { meta, palette, generate_spec }
214+
return { meta = meta, palette = palette, generate_spec = generate_spec }

lua/github-theme/palette/g_light_colorblind.lua

+1-1
Original file line numberDiff line numberDiff line change
@@ -208,4 +208,4 @@ local function generate_spec(pal)
208208
return spec
209209
end
210210

211-
return { meta, palette, generate_spec }
211+
return { meta = meta, palette = palette, generate_spec = generate_spec }

lua/github-theme/palette/g_light_high_contrast.lua

+1-1
Original file line numberDiff line numberDiff line change
@@ -208,4 +208,4 @@ local function generate_spec(pal)
208208
return spec
209209
end
210210

211-
return { meta, palette, generate_spec }
211+
return { meta = meta, palette = palette, generate_spec = generate_spec }

lua/github-theme/palette/g_light_tritanopia.lua

+1-1
Original file line numberDiff line numberDiff line change
@@ -208,4 +208,4 @@ local function generate_spec(pal)
208208
return spec
209209
end
210210

211-
return { meta, palette, generate_spec }
211+
return { meta = meta, palette = palette, generate_spec = generate_spec }

0 commit comments

Comments
 (0)