summaryrefslogtreecommitdiff
path: root/crates/typst-docs
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2024-02-28 11:06:54 +0100
committerGitHub <noreply@github.com>2024-02-28 10:06:54 +0000
commite16d3f5a67a31154797b4d56cdc6ed142ee2a7cf (patch)
tree31dcd2243c2b51bac62fe19e7e60efe5f6289281 /crates/typst-docs
parent5036c5acebebe12cbf14338f5413514251d83d1e (diff)
Externalize assets (#3515)
Diffstat (limited to 'crates/typst-docs')
-rw-r--r--crates/typst-docs/Cargo.toml2
-rw-r--r--crates/typst-docs/src/html.rs17
-rw-r--r--crates/typst-docs/src/lib.rs9
3 files changed, 15 insertions, 13 deletions
diff --git a/crates/typst-docs/Cargo.toml b/crates/typst-docs/Cargo.toml
index bb32aaf2..af661bfb 100644
--- a/crates/typst-docs/Cargo.toml
+++ b/crates/typst-docs/Cargo.toml
@@ -19,6 +19,8 @@ cli = ["clap", "typst-render", "serde_json"]
[dependencies]
typst = { workspace = true }
+typst-assets = { workspace = true, features = ["fonts"] }
+typst-dev-assets = { workspace = true }
comemo = { workspace = true }
ecow = { workspace = true }
heck = { workspace = true }
diff --git a/crates/typst-docs/src/html.rs b/crates/typst-docs/src/html.rs
index 0ec0ddf0..6c47b8df 100644
--- a/crates/typst-docs/src/html.rs
+++ b/crates/typst-docs/src/html.rs
@@ -17,7 +17,7 @@ use typst::{Library, World};
use unscanny::Scanner;
use yaml_front_matter::YamlFrontMatter;
-use crate::{contributors, OutlineItem, Resolver, FILE_DIR, FONTS, LIBRARY};
+use crate::{contributors, OutlineItem, Resolver, FONTS, LIBRARY};
/// HTML documentation.
#[derive(Serialize)]
@@ -250,8 +250,8 @@ impl<'a> Handler<'a> {
}
fn handle_image(&self, link: &str) -> String {
- if let Some(file) = FILE_DIR.get_file(link) {
- self.resolver.image(link, file.contents())
+ if let Some(data) = typst_dev_assets::get(link) {
+ self.resolver.image(link, data)
} else if let Some(url) = self.resolver.link(link) {
url
} else {
@@ -451,11 +451,12 @@ impl World for DocWorld {
fn file(&self, id: FileId) -> FileResult<Bytes> {
assert!(id.package().is_none());
- Ok(FILE_DIR
- .get_file(id.vpath().as_rootless_path())
- .unwrap_or_else(|| panic!("failed to load {:?}", id.vpath()))
- .contents()
- .into())
+ Ok(Bytes::from_static(
+ typst_dev_assets::get_by_name(
+ &id.vpath().as_rootless_path().to_string_lossy(),
+ )
+ .unwrap_or_else(|| panic!("failed to load {:?}", id.vpath())),
+ ))
}
fn font(&self, index: usize) -> Option<Font> {
diff --git a/crates/typst-docs/src/lib.rs b/crates/typst-docs/src/lib.rs
index 0a69523e..5439ad1b 100644
--- a/crates/typst-docs/src/lib.rs
+++ b/crates/typst-docs/src/lib.rs
@@ -20,6 +20,7 @@ use serde::de::DeserializeOwned;
use serde::Deserialize;
use serde_yaml as yaml;
use typst::diag::{bail, StrResult};
+use typst::foundations::Bytes;
use typst::foundations::{
CastInfo, Category, Func, Module, ParamInfo, Repr, Scope, Smart, Type, Value,
FOUNDATIONS,
@@ -36,8 +37,6 @@ use typst::visualize::VISUALIZE;
use typst::Library;
static DOCS_DIR: Dir<'_> = include_dir!("$CARGO_MANIFEST_DIR/../../docs");
-static FILE_DIR: Dir<'_> = include_dir!("$CARGO_MANIFEST_DIR/../../assets/files");
-static FONT_DIR: Dir<'_> = include_dir!("$CARGO_MANIFEST_DIR/../../assets/fonts");
static GROUPS: Lazy<Vec<GroupData>> = Lazy::new(|| {
let mut groups: Vec<GroupData> = yaml("reference/groups.yml");
@@ -67,9 +66,9 @@ static LIBRARY: Lazy<Prehashed<Library>> = Lazy::new(|| {
});
static FONTS: Lazy<(Prehashed<FontBook>, Vec<Font>)> = Lazy::new(|| {
- let fonts: Vec<_> = FONT_DIR
- .files()
- .flat_map(|file| Font::iter(file.contents().into()))
+ let fonts: Vec<_> = typst_assets::fonts()
+ .chain(typst_dev_assets::fonts())
+ .flat_map(|data| Font::iter(Bytes::from_static(data)))
.collect();
let book = FontBook::from_fonts(&fonts);
(Prehashed::new(book), fonts)