Optimize usage of cookie preferences

This commit is contained in:
Zed
2020-06-09 16:45:21 +02:00
parent 310c5e936d
commit db45433ec4
13 changed files with 88 additions and 52 deletions

View File

@@ -120,9 +120,8 @@ macro genDefaultPrefs*(): untyped =
result.add quote do:
defaultPrefs.`ident` = cfg.get("Preferences", `name`, `default`)
macro genCookiePrefs*(): untyped =
macro genCookiePrefs*(cookies): untyped =
result = nnkStmtList.newTree()
let cookies = ident("cookies")
for pref in allPrefs():
let
name = pref.name
@@ -132,14 +131,36 @@ macro genCookiePrefs*(): untyped =
result.add quote do:
if `name` in `cookies`:
let value = `cookies`[`name`]
when `kind` == input or `name` == "theme":
result.`ident` = value
result.`ident` = `cookies`[`name`]
elif `kind` == checkbox:
result.`ident` = value == "on"
result.`ident` = `cookies`[`name`] == "on"
else:
let value = `cookies`[`name`]
if value in `options`: result.`ident` = value
macro genCookiePref*(cookies, prefName, res): untyped =
result = nnkStmtList.newTree()
for pref in allPrefs():
let ident = ident(pref.name)
if ident != prefName:
continue
let
name = pref.name
kind = newLit(pref.kind)
options = pref.options
result.add quote do:
if `name` in `cookies`:
when `kind` == input or `name` == "theme":
`res` = `cookies`[`name`]
elif `kind` == checkbox:
`res` = `cookies`[`name`] == "on"
else:
let value = `cookies`[`name`]
if value in `options`: `res` = value
macro genUpdatePrefs*(): untyped =
result = nnkStmtList.newTree()
let req = ident("request")