diff options
| author | Laurenz <laurmaedje@gmail.com> | 2023-06-26 13:57:21 +0200 |
|---|---|---|
| committer | Laurenz <laurmaedje@gmail.com> | 2023-06-27 18:40:17 +0200 |
| commit | 7b92bd7c340d9f9c094ed2fa57912049317d9b20 (patch) | |
| tree | b91399526ba94d87309d09d864df2935dd7a4d0a /docs/src | |
| parent | 9c7f31870b4e1bf37df79ebbe1df9a56df83d878 (diff) | |
Basic package management
Diffstat (limited to 'docs/src')
| -rw-r--r-- | docs/src/html.rs | 42 | ||||
| -rw-r--r-- | docs/src/lib.rs | 31 |
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( |
