From f2052745e05632fac5d657b1f700dc1afb072571 Mon Sep 17 00:00:00 2001 From: Stephen Waits Date: Wed, 4 Dec 2024 21:05:21 +0100 Subject: [PATCH] feat(glossy): add case-insensitive sorting --- preview/glossy/0.2.1/README.md | 5 +++-- preview/glossy/0.2.1/examples/readme.pdf | Bin 38539 -> 38539 bytes preview/glossy/0.2.1/src/gloss.typ | 19 ++++++++++++++----- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/preview/glossy/0.2.1/README.md b/preview/glossy/0.2.1/README.md index a55e4b6..d451000 100644 --- a/preview/glossy/0.2.1/README.md +++ b/preview/glossy/0.2.1/README.md @@ -154,8 +154,9 @@ Display the glossary using the `glossary()` function: ```typst #glossary( - title: "Web Development Glossary", - theme: my-theme, + title: "Web Development Glossary", // Optional: defaults to Glossary + theme: my-theme, // Optionaal: defaults to theme-twocol + ignore-case: false, // Optional: ignore case when sorting terms groups: ("Web") // Optional: Filter to specific groups ) ``` diff --git a/preview/glossy/0.2.1/examples/readme.pdf b/preview/glossy/0.2.1/examples/readme.pdf index 12e41bf1f282ca158577b62f0beb16b811325e92..a5209d317b050264c539489ffd93644a1e0b679e 100644 GIT binary patch delta 158 zcmeBP%hbJ=X~XXx7DE#Q!^!`9q`{2Ma=k80VqQr`VWyUT`c)>G`c;`l6{R6bRW9X| uEBe)ONNwKQFTluZXkrC4>eK`S2y65I33jZ8*v+!F)l|^HE;TuCnk)d>f;H9v delta 158 zcmeBP%hbJ=X~XXx76TJw^U42vq`{2Ma=k80VrlsX0Zt*6hQ0+MQ59}Q9`3GQ&bfh; uEBe)ONNwKQFTluZU}6O{>eK`S2y65I33jZ8*v+!F)l|^HE;TuCnk)doHZ 0 { group = if group == none { "" } else { group } - output.insert( - group, - current_entries.sorted(key: e => e.short) - ) + + // sort entries by case insensitivity if requested + let sorted_entries = current_entries + // 1. create array of tuples with (lower [if ignore-case], entry) + .map(e => { if ignore-case { (lower(e.short), e) } else { (e.short, e) } }) + // 2. sort the tuples (by first element then second) + .sorted(key: t => t.first()) + // 3. strip away the tuple's first element, leaving an array of entries + .map(t => t.last()) + + // add entries to this group's output map + output.insert(group, sorted_entries) } }