summaryrefslogtreecommitdiff
path: root/crates/typst-docs
diff options
context:
space:
mode:
authorMartin Haug <mhaug@live.de>2023-08-03 16:10:49 +0200
committerMartin Haug <mhaug@live.de>2023-08-03 16:10:49 +0200
commit3a2fbcb49cf1dc8fa20e6809a0ee07fc6630b515 (patch)
tree747a51fc1fc1d1c1ae2eb76d9d6842b0546690e7 /crates/typst-docs
parent02d981ed1ce90f04b34272f6960f84a9917c4ae2 (diff)
Add shorthands to category pages
Diffstat (limited to 'crates/typst-docs')
-rw-r--r--crates/typst-docs/src/lib.rs11
1 files changed, 10 insertions, 1 deletions
diff --git a/crates/typst-docs/src/lib.rs b/crates/typst-docs/src/lib.rs
index 7ed6dcfe..fae94a6f 100644
--- a/crates/typst-docs/src/lib.rs
+++ b/crates/typst-docs/src/lib.rs
@@ -214,6 +214,7 @@ pub struct CategoryModel {
pub details: Html,
pub kind: &'static str,
pub items: Vec<CategoryItem>,
+ pub shorthands: Option<Vec<SymbolModel>>,
}
/// Details about a category item.
@@ -324,9 +325,15 @@ fn category_page(resolver: &dyn Resolver, category: &str) -> PageModel {
items.sort_by_cached_key(|item| item.name.clone());
// Add symbol pages. These are ordered manually.
+ let mut shorthands = vec![];
if category == "symbols" {
for module in ["sym", "emoji"] {
let subpage = symbol_page(resolver, &route, module);
+ let BodyModel::Symbols(model) = &subpage.body else { continue };
+ shorthands.extend(
+ model.list.iter().filter(|symbol| symbol.shorthand.is_some()).cloned(),
+ );
+
items.push(CategoryItem {
name: module.into(),
route: subpage.route.clone(),
@@ -354,6 +361,7 @@ fn category_page(resolver: &dyn Resolver, category: &str) -> PageModel {
details: Html::markdown(resolver, details(category)),
kind,
items,
+ shorthands: Some(shorthands),
}),
children,
}
@@ -651,6 +659,7 @@ fn types_page(resolver: &dyn Resolver, parent: &str) -> PageModel {
details: Html::markdown(resolver, details("types")),
kind: "Types",
items,
+ shorthands: None,
}),
children,
}
@@ -823,7 +832,7 @@ pub struct SymbolsModel {
}
/// Details about a symbol.
-#[derive(Debug, Serialize)]
+#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct SymbolModel {
pub name: String,