summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/src/html.rs42
-rw-r--r--docs/src/lib.rs31
2 files changed, 43 insertions, 30 deletions
diff --git a/docs/src/html.rs b/docs/src/html.rs
index 78a43511..a6e58b73 100644
--- a/docs/src/html.rs
+++ b/docs/src/html.rs
@@ -6,10 +6,11 @@ use pulldown_cmark as md;
use typed_arena::Arena;
use typst::diag::FileResult;
use typst::eval::Datetime;
+use typst::file::FileId;
use typst::font::{Font, FontBook};
use typst::geom::{Point, Size};
-use typst::syntax::{Source, SourceId};
-use typst::util::Buffer;
+use typst::syntax::Source;
+use typst::util::Bytes;
use typst::World;
use yaml_front_matter::YamlFrontMatter;
@@ -414,7 +415,8 @@ fn code_block(resolver: &dyn Resolver, lang: &str, text: &str) -> Html {
return Html::new(format!("<pre>{}</pre>", highlighted.as_str()));
}
- let source = Source::new(SourceId::from_u16(0), Path::new("main.typ"), compile);
+ let id = FileId::new(None, Path::new("main.typ"));
+ let source = Source::new(id, compile);
let world = DocWorld(source);
let mut frames = match typst::compile(&world) {
Ok(doc) => doc.pages,
@@ -461,7 +463,7 @@ fn nest_heading(level: &mut md::HeadingLevel) {
};
}
-/// World for example compilations.
+/// A world for example compilations.
struct DocWorld(Source);
impl World for DocWorld {
@@ -469,35 +471,31 @@ impl World for DocWorld {
&LIBRARY
}
- fn main(&self) -> &Source {
- &self.0
- }
-
- fn resolve(&self, _: &Path) -> FileResult<SourceId> {
- unimplemented!()
- }
-
- fn source(&self, id: SourceId) -> &Source {
- assert_eq!(id.as_u16(), 0, "invalid source id");
- &self.0
- }
-
fn book(&self) -> &Prehashed<FontBook> {
&FONTS.0
}
- fn font(&self, id: usize) -> Option<Font> {
- Some(FONTS.1[id].clone())
+ fn main(&self) -> Source {
+ self.0.clone()
+ }
+
+ fn source(&self, _: FileId) -> FileResult<Source> {
+ Ok(self.0.clone())
}
- fn file(&self, path: &Path) -> FileResult<Buffer> {
+ fn file(&self, id: FileId) -> FileResult<Bytes> {
+ assert!(id.package().is_none());
Ok(FILES
- .get_file(path)
- .unwrap_or_else(|| panic!("failed to load {path:?}"))
+ .get_file(id.path())
+ .unwrap_or_else(|| panic!("failed to load {:?}", id.path().display()))
.contents()
.into())
}
+ fn font(&self, index: usize) -> Option<Font> {
+ Some(FONTS.1[index].clone())
+ }
+
fn today(&self, _: Option<i64>) -> Option<Datetime> {
Some(Datetime::from_ymd(1970, 1, 1).unwrap())
}
diff --git a/docs/src/lib.rs b/docs/src/lib.rs
index 5ddb1198..1cb683e6 100644
--- a/docs/src/lib.rs
+++ b/docs/src/lib.rs
@@ -57,6 +57,7 @@ pub fn provide(resolver: &dyn Resolver) -> Vec<PageModel> {
tutorial_pages(resolver),
reference_pages(resolver),
guides_pages(resolver),
+ packages_page(),
markdown_page(resolver, "/docs/", "general/changelog.md"),
markdown_page(resolver, "/docs/", "general/community.md"),
]
@@ -118,6 +119,7 @@ pub enum BodyModel {
Funcs(FuncsModel),
Type(TypeModel),
Symbols(SymbolsModel),
+ Packages,
}
/// Build the tutorial.
@@ -133,14 +135,6 @@ fn tutorial_pages(resolver: &dyn Resolver) -> PageModel {
page
}
-/// Build the guides section.
-fn guides_pages(resolver: &dyn Resolver) -> PageModel {
- let mut page = markdown_page(resolver, "/docs/", "guides/welcome.md");
- page.children =
- vec![markdown_page(resolver, "/docs/guides/", "guides/guide-for-latex-users.md")];
- page
-}
-
/// Build the reference.
fn reference_pages(resolver: &dyn Resolver) -> PageModel {
let mut page = markdown_page(resolver, "/docs/", "reference/welcome.md");
@@ -164,6 +158,27 @@ fn reference_pages(resolver: &dyn Resolver) -> PageModel {
page
}
+/// Build the guides section.
+fn guides_pages(resolver: &dyn Resolver) -> PageModel {
+ let mut page = markdown_page(resolver, "/docs/", "guides/welcome.md");
+ page.children =
+ vec![markdown_page(resolver, "/docs/guides/", "guides/guide-for-latex-users.md")];
+ page
+}
+
+/// Build the packages section.
+fn packages_page() -> PageModel {
+ PageModel {
+ route: "/docs/packages/".into(),
+ title: "Packages".into(),
+ description: "Packages for Typst.".into(),
+ part: None,
+ outline: vec![],
+ body: BodyModel::Packages,
+ children: vec![],
+ }
+}
+
/// Create a page from a markdown file.
#[track_caller]
fn markdown_page(