From 2f89da16ed71ab13ad6592731120602d47e610d8 Mon Sep 17 00:00:00 2001 From: LordBaryhobal Date: Sun, 1 Dec 2024 13:03:18 +0100 Subject: [PATCH] added progress image --- README.md | 10 +--------- progress.png | Bin 0 -> 87272 bytes progress.typ | 13 +++++++++++++ progress.yaml | 2 ++ src/main.typ | 45 +++++++++------------------------------------ src/utils.typ | 40 ++++++++++++++++++++++++++++++++++++++-- 6 files changed, 63 insertions(+), 47 deletions(-) create mode 100644 progress.png create mode 100644 progress.typ create mode 100644 progress.yaml diff --git a/README.md b/README.md index 71c33f1..600770c 100644 --- a/README.md +++ b/README.md @@ -4,12 +4,4 @@ This repo contains my attempt at this year's Advent of Code (2024) I will try and do some problems (probably not all of them) using Typst -## Progress: -#### Stars: 0 / 50 -| Mon | Tue | Wed | Thu | Fri | Sat | Sun | -|:------------------:|:-----------------:|:------------------:|:------------------:|:------------------:|:------------------:|:------------------:| -| | | | | | | 1
:star: | -| 2 | 3 | 4 | 5 | 6 | 7 | 8 | -| 9 | 10 | 11 | 12 | 13 | 14 | 15 | -| 16 | 17 | 18 | 19 | 20 | 21 | 22 | -| 23 | 24 | 25 | | | | | \ No newline at end of file +![progress](progress.png) \ No newline at end of file diff --git a/progress.png b/progress.png new file mode 100644 index 0000000000000000000000000000000000000000..218ee039d2698a157b16aa73f13cab1ff14db8da GIT binary patch literal 87272 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 I?D@q101mtdp#T5? literal 0 HcmV?d00001 diff --git a/progress.typ b/progress.typ new file mode 100644 index 0000000..b6f1518 --- /dev/null +++ b/progress.typ @@ -0,0 +1,13 @@ +#import "/src/utils.typ": make-progress, template, star-state + +#show: template +#set page(height: auto, margin: 1cm) +#let progress = yaml("/progress.yaml") +#star-state.update(s => { + let p = progress + for (k, v) in p.pairs() { + p.at(k) = v.stars + } + return p +}) +#make-progress(links: false) \ No newline at end of file diff --git a/progress.yaml b/progress.yaml new file mode 100644 index 0000000..bbf170a --- /dev/null +++ b/progress.yaml @@ -0,0 +1,2 @@ +1: + stars: 1 \ No newline at end of file diff --git a/src/main.typ b/src/main.typ index 3d466b6..7b319d7 100644 --- a/src/main.typ +++ b/src/main.typ @@ -55,41 +55,7 @@ #v(1fr) -#context { - let stars = star-state.final() - let star-cnt = stars.values().sum(default: 0) - let first-weekday = datetime( - year: 2024, - month: 12, - day: 1 - ).weekday() - let cells = ([],) * (first-weekday - 1) - - for i in range(1, 26) { - let cell = [#i] - if str(i) in stars.keys() { - cell = stack( - dir: ttb, - spacing: 0.2em, - cell, - h(3pt) + ((emoji.star,)* stars.at(str(i))).join() - ) - cell = link(label("day-" + str(i)), cell) - } - - cells.push(cell) - } - - [*Stars: #star-cnt / 50*] - table( - columns: (1fr,)*7, - inset: 0.8em, - align: center + horizon, - fill: (_, y) => if y > 0 and calc.rem(y, 2) == 0 {gray.lighten(70%)}, - table.header([*Mon*], [*Tue*], [*Wed*], [*Thu*], [*Fri*], [*Sat*], [*Sun*]), - ..cells - ) -} +#make-progress() #pagebreak() @@ -105,4 +71,11 @@ ) ) -#make-day(1, stars: 1) \ No newline at end of file +#let progress = yaml("/progress.yaml") + +#for i in range(1, 26) { + if str(i) in progress.keys() { + let day = progress.at(str(i)) + make-day(i, stars: day.stars) + } +} diff --git a/src/utils.typ b/src/utils.typ index 68f8de8..91fc9fb 100644 --- a/src/utils.typ +++ b/src/utils.typ @@ -1,4 +1,3 @@ -#let star-cnt = counter("stars") #let star-state = state("stars", (:)) #let get-input-path(day) = { @@ -73,7 +72,6 @@ #let make-day(day, stars: 0) = { star-state.update(s => s + (str(day): stars)) - star-cnt.update(v => v + stars) day-template( stars: stars, day, @@ -82,6 +80,44 @@ ) } +#let make-progress(links: true) = context { + let stars = star-state.final() + let star-cnt = stars.values().sum(default: 0) + let first-weekday = datetime( + year: 2024, + month: 12, + day: 1 + ).weekday() + let cells = ([],) * (first-weekday - 1) + + for i in range(1, 26) { + let cell = [#i] + if str(i) in stars.keys() { + cell = stack( + dir: ttb, + spacing: 0.2em, + cell, + h(3pt) + ((emoji.star,)* stars.at(str(i))).join() + ) + if links { + cell = link(label("day-" + str(i)), cell) + } + } + + cells.push(cell) + } + + [*Stars: #star-cnt / 50*] + table( + columns: (1fr,)*7, + inset: 0.8em, + align: center + horizon, + fill: (_, y) => if y > 0 and calc.rem(y, 2) == 0 {gray.lighten(70%)}, + table.header([*Mon*], [*Tue*], [*Wed*], [*Thu*], [*Fri*], [*Sat*], [*Sun*]), + ..cells + ) +} + #let template(body) = { set text(font: "Source Sans 3") body