From b792688776899fa254f94c43ced90d04d5d2b251 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=83=AA=E3=82=AD=E8=90=8C?= Date: Thu, 10 Jul 2025 16:50:41 +0200 Subject: [PATCH] remove treehouse-format crate and collapse everything into src --- Cargo.lock | 37 +++++++++++------ Cargo.toml | 38 +++++++++++++++--- crates/treehouse-format/Cargo.toml | 7 ---- crates/treehouse-format/src/lib.rs | 32 --------------- crates/treehouse/Cargo.toml | 36 ----------------- {crates/treehouse/src => src}/cli.rs | 0 {crates/treehouse/src => src}/cli/fix.rs | 2 +- {crates/treehouse/src => src}/cli/serve.rs | 0 .../src => src}/cli/serve/live_reload.rs | 0 .../src => src}/cli/serve/picture_upload.rs | 0 {crates/treehouse/src => src}/cli/wc.rs | 3 +- {crates/treehouse/src => src}/config.rs | 0 {crates/treehouse/src => src}/dirs.rs | 0 {crates/treehouse/src => src}/fun.rs | 0 {crates/treehouse/src => src}/fun/seasons.rs | 0 {crates/treehouse/src => src}/generate.rs | 0 .../treehouse/src => src}/generate/atom.rs | 0 .../src => src}/generate/dir_helper.rs | 0 .../generate/include_static_helper.rs | 0 .../src => src}/generate/simple_template.rs | 0 .../treehouse/src => src}/generate/tree.rs | 0 {crates/treehouse/src => src}/history.rs | 0 {crates/treehouse/src => src}/html.rs | 0 .../treehouse/src => src}/html/breadcrumbs.rs | 0 {crates/treehouse/src => src}/html/djot.rs | 0 .../treehouse/src => src}/html/highlight.rs | 0 .../src => src}/html/highlight/compiled.rs | 0 .../src => src}/html/highlight/tokenize.rs | 0 {crates/treehouse/src => src}/html/navmap.rs | 0 {crates/treehouse/src => src}/html/tree.rs | 5 ++- {crates/treehouse/src => src}/import_map.rs | 0 {crates/treehouse/src => src}/lib.rs | 0 {crates/treehouse/src => src}/main.rs | 0 {crates/treehouse/src => src}/parse.rs | 8 ++-- {crates/treehouse/src => src}/paths.rs | 0 {crates/treehouse/src => src}/sources.rs | 0 {crates/treehouse/src => src}/state.rs | 0 {crates/treehouse/src => src}/tree.rs | 40 ++++++++++++++++--- .../treehouse-format/src => src/tree}/ast.rs | 2 +- .../treehouse/src => src}/tree/attributes.rs | 0 src/tree/lib.rs | 1 + .../src => src}/tree/mini_template.rs | 0 .../treehouse-format/src => src/tree}/pull.rs | 2 +- {crates/treehouse/src => src}/vfs.rs | 0 {crates/treehouse/src => src}/vfs/anchored.rs | 0 {crates/treehouse/src => src}/vfs/asynch.rs | 0 {crates/treehouse/src => src}/vfs/cd.rs | 0 .../src => src}/vfs/content_cache.rs | 0 .../src => src}/vfs/content_version_cache.rs | 0 {crates/treehouse/src => src}/vfs/edit.rs | 0 {crates/treehouse/src => src}/vfs/file.rs | 0 .../src => src}/vfs/html_canonicalize.rs | 0 .../src => src}/vfs/image_size_cache.rs | 0 {crates/treehouse/src => src}/vfs/mem_dir.rs | 0 {crates/treehouse/src => src}/vfs/overlay.rs | 0 {crates/treehouse/src => src}/vfs/path.rs | 0 {crates/treehouse/src => src}/vfs/physical.rs | 0 static/css/main.css | 9 +++-- template/_doc.hbs | 35 ++++++++++++++++ {crates/treehouse/tests => tests}/it/main.rs | 0 {crates/treehouse/tests => tests}/it/vfs.rs | 0 .../treehouse/tests => tests}/it/vfs/cd.rs | 0 .../treehouse/tests => tests}/it/vfs/file.rs | 0 .../tests => tests}/it/vfs/mount_points.rs | 0 .../tests => tests}/it/vfs/physical.rs | 0 .../tests => tests}/it/vfs_physical/test.txt | 0 66 files changed, 145 insertions(+), 112 deletions(-) delete mode 100644 crates/treehouse-format/Cargo.toml delete mode 100644 crates/treehouse-format/src/lib.rs delete mode 100644 crates/treehouse/Cargo.toml rename {crates/treehouse/src => src}/cli.rs (100%) rename {crates/treehouse/src => src}/cli/fix.rs (99%) rename {crates/treehouse/src => src}/cli/serve.rs (100%) rename {crates/treehouse/src => src}/cli/serve/live_reload.rs (100%) rename {crates/treehouse/src => src}/cli/serve/picture_upload.rs (100%) rename {crates/treehouse/src => src}/cli/wc.rs (97%) rename {crates/treehouse/src => src}/config.rs (100%) rename {crates/treehouse/src => src}/dirs.rs (100%) rename {crates/treehouse/src => src}/fun.rs (100%) rename {crates/treehouse/src => src}/fun/seasons.rs (100%) rename {crates/treehouse/src => src}/generate.rs (100%) rename {crates/treehouse/src => src}/generate/atom.rs (100%) rename {crates/treehouse/src => src}/generate/dir_helper.rs (100%) rename {crates/treehouse/src => src}/generate/include_static_helper.rs (100%) rename {crates/treehouse/src => src}/generate/simple_template.rs (100%) rename {crates/treehouse/src => src}/generate/tree.rs (100%) rename {crates/treehouse/src => src}/history.rs (100%) rename {crates/treehouse/src => src}/html.rs (100%) rename {crates/treehouse/src => src}/html/breadcrumbs.rs (100%) rename {crates/treehouse/src => src}/html/djot.rs (100%) rename {crates/treehouse/src => src}/html/highlight.rs (100%) rename {crates/treehouse/src => src}/html/highlight/compiled.rs (100%) rename {crates/treehouse/src => src}/html/highlight/tokenize.rs (100%) rename {crates/treehouse/src => src}/html/navmap.rs (100%) rename {crates/treehouse/src => src}/html/tree.rs (99%) rename {crates/treehouse/src => src}/import_map.rs (100%) rename {crates/treehouse/src => src}/lib.rs (100%) rename {crates/treehouse/src => src}/main.rs (100%) rename {crates/treehouse/src => src}/parse.rs (85%) rename {crates/treehouse/src => src}/paths.rs (100%) rename {crates/treehouse/src => src}/sources.rs (100%) rename {crates/treehouse/src => src}/state.rs (100%) rename {crates/treehouse/src => src}/tree.rs (94%) rename {crates/treehouse-format/src => src/tree}/ast.rs (99%) rename {crates/treehouse/src => src}/tree/attributes.rs (100%) create mode 100644 src/tree/lib.rs rename {crates/treehouse/src => src}/tree/mini_template.rs (100%) rename {crates/treehouse-format/src => src/tree}/pull.rs (99%) rename {crates/treehouse/src => src}/vfs.rs (100%) rename {crates/treehouse/src => src}/vfs/anchored.rs (100%) rename {crates/treehouse/src => src}/vfs/asynch.rs (100%) rename {crates/treehouse/src => src}/vfs/cd.rs (100%) rename {crates/treehouse/src => src}/vfs/content_cache.rs (100%) rename {crates/treehouse/src => src}/vfs/content_version_cache.rs (100%) rename {crates/treehouse/src => src}/vfs/edit.rs (100%) rename {crates/treehouse/src => src}/vfs/file.rs (100%) rename {crates/treehouse/src => src}/vfs/html_canonicalize.rs (100%) rename {crates/treehouse/src => src}/vfs/image_size_cache.rs (100%) rename {crates/treehouse/src => src}/vfs/mem_dir.rs (100%) rename {crates/treehouse/src => src}/vfs/overlay.rs (100%) rename {crates/treehouse/src => src}/vfs/path.rs (100%) rename {crates/treehouse/src => src}/vfs/physical.rs (100%) create mode 100644 template/_doc.hbs rename {crates/treehouse/tests => tests}/it/main.rs (100%) rename {crates/treehouse/tests => tests}/it/vfs.rs (100%) rename {crates/treehouse/tests => tests}/it/vfs/cd.rs (100%) rename {crates/treehouse/tests => tests}/it/vfs/file.rs (100%) rename {crates/treehouse/tests => tests}/it/vfs/mount_points.rs (100%) rename {crates/treehouse/tests => tests}/it/vfs/physical.rs (100%) rename {crates/treehouse/tests => tests}/it/vfs_physical/test.txt (100%) diff --git a/Cargo.lock b/Cargo.lock index 5f8e6a8..e89722b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -724,7 +724,7 @@ dependencies = [ "pest_derive", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -1409,7 +1409,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "879952a81a83930934cbf1786752d6dedc3b1f29e8f8fb2ad1d0a36f377cf442" dependencies = [ "memchr", - "thiserror", + "thiserror 1.0.69", "ucd-trie", ] @@ -1599,7 +1599,7 @@ dependencies = [ "rand_chacha", "simd_helpers", "system-deps", - "thiserror", + "thiserror 1.0.69", "v_frame", "wasm-bindgen", ] @@ -1931,7 +1931,16 @@ version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" dependencies = [ - "thiserror-impl", + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" +dependencies = [ + "thiserror-impl 2.0.12", ] [[package]] @@ -1945,6 +1954,17 @@ dependencies = [ "syn", ] +[[package]] +name = "thiserror-impl" +version = "2.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "thread_local" version = "1.1.8" @@ -2176,24 +2196,17 @@ dependencies = [ "regex", "serde", "serde_json", + "thiserror 2.0.12", "tokio", "toml_edit 0.19.15", "tracing", "tracing-chrome", "tracing-subscriber", - "treehouse-format", "ulid", "webp", "xmlparser", ] -[[package]] -name = "treehouse-format" -version = "0.1.0" -dependencies = [ - "thiserror", -] - [[package]] name = "typenum" version = "1.17.0" diff --git a/Cargo.toml b/Cargo.toml index 9c407e9..97f0b1b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,11 +1,37 @@ -[workspace] -members = ["crates/*"] -resolver = "2" +[package] +name = "treehouse" +version = "0.1.0" +edition = "2021" -[workspace.dependencies] +[dependencies] +anyhow = "1.0.75" +axum = { version = "0.7.9", features = ["macros"] } +axum-macros = "0.4.2" +base64 = "0.21.7" +blake3 = "1.5.3" +chrono = { version = "0.4.35", features = ["serde"] } +clap = { version = "4.3.22", features = ["derive"] } +codespan-reporting = "0.11.1" +dashmap = "6.1.0" +git2 = { version = "0.19.0", default-features = false, features = ["vendored-libgit2"] } +handlebars = "4.3.7" +image = "0.25.5" +indexmap = { version = "2.2.6", features = ["serde"] } +jotdown = { version = "0.4.1", default-features = false } +rand = "0.8.5" +rayon = "1.10.0" +regex = "1.10.3" +serde = { version = "1.0.183", features = ["derive"] } +serde_json = "1.0.105" +thiserror = "2.0.12" +tokio = { version = "1.32.0", features = ["full"] } +toml_edit = { version = "0.19.14", features = ["serde"] } tracing = "0.1.40" - -treehouse-format = { path = "crates/treehouse-format" } +tracing-chrome = "0.7.2" +tracing-subscriber = { version = "0.3.18", features = ["env-filter"] } +ulid = "1.0.0" +webp = "0.3.0" +xmlparser = "0.13.6" [profile.dev] package.webp.opt-level = 3 diff --git a/crates/treehouse-format/Cargo.toml b/crates/treehouse-format/Cargo.toml deleted file mode 100644 index 7db6b26..0000000 --- a/crates/treehouse-format/Cargo.toml +++ /dev/null @@ -1,7 +0,0 @@ -[package] -name = "treehouse-format" -version = "0.1.0" -edition = "2021" - -[dependencies] -thiserror = "1.0.47" diff --git a/crates/treehouse-format/src/lib.rs b/crates/treehouse-format/src/lib.rs deleted file mode 100644 index 6afdf89..0000000 --- a/crates/treehouse-format/src/lib.rs +++ /dev/null @@ -1,32 +0,0 @@ -use std::ops::Range; - -pub mod ast; -pub mod pull; - -#[derive(Debug, thiserror::Error, Clone, PartialEq, Eq)] -pub enum ParseErrorKind { - #[error("branch kind (`+` or `-`) expected")] - BranchKindExpected, - - #[error("root branches must not be indented")] - RootIndentLevel, - - #[error("at least {expected} spaces of indentation were expected, but got {got}")] - InconsistentIndentation { got: usize, expected: usize }, - - #[error("unterminated code block")] - UnterminatedCodeBlock, -} - -#[derive(Debug, Clone, PartialEq, Eq, thiserror::Error)] -#[error("{range:?}: {kind}")] -pub struct ParseError { - pub kind: ParseErrorKind, - pub range: Range, -} - -impl ParseErrorKind { - pub fn at(self, range: Range) -> ParseError { - ParseError { kind: self, range } - } -} diff --git a/crates/treehouse/Cargo.toml b/crates/treehouse/Cargo.toml deleted file mode 100644 index 2198fdf..0000000 --- a/crates/treehouse/Cargo.toml +++ /dev/null @@ -1,36 +0,0 @@ -[package] -name = "treehouse" -version = "0.1.0" -edition = "2021" - -[dependencies] - -treehouse-format = { workspace = true } - -anyhow = "1.0.75" -axum = { version = "0.7.9", features = ["macros"] } -axum-macros = "0.4.2" -base64 = "0.21.7" -blake3 = "1.5.3" -chrono = { version = "0.4.35", features = ["serde"] } -clap = { version = "4.3.22", features = ["derive"] } -codespan-reporting = "0.11.1" -dashmap = "6.1.0" -git2 = { version = "0.19.0", default-features = false, features = ["vendored-libgit2"] } -handlebars = "4.3.7" -image = "0.25.5" -indexmap = { version = "2.2.6", features = ["serde"] } -jotdown = { version = "0.4.1", default-features = false } -rand = "0.8.5" -rayon = "1.10.0" -regex = "1.10.3" -serde = { version = "1.0.183", features = ["derive"] } -serde_json = "1.0.105" -tokio = { version = "1.32.0", features = ["full"] } -toml_edit = { version = "0.19.14", features = ["serde"] } -tracing.workspace = true -tracing-chrome = "0.7.2" -tracing-subscriber = { version = "0.3.18", features = ["env-filter"] } -ulid = "1.0.0" -webp = "0.3.0" -xmlparser = "0.13.6" diff --git a/crates/treehouse/src/cli.rs b/src/cli.rs similarity index 100% rename from crates/treehouse/src/cli.rs rename to src/cli.rs diff --git a/crates/treehouse/src/cli/fix.rs b/src/cli/fix.rs similarity index 99% rename from crates/treehouse/src/cli/fix.rs rename to src/cli/fix.rs index b5e1342..6e64cc0 100644 --- a/crates/treehouse/src/cli/fix.rs +++ b/src/cli/fix.rs @@ -3,11 +3,11 @@ use std::ops::{ControlFlow, Range}; use anyhow::{anyhow, Context}; use codespan_reporting::diagnostic::Diagnostic; use tracing::{error, info}; -use treehouse_format::ast::Branch; use crate::{ parse::{self, parse_toml_with_diagnostics, parse_tree_with_diagnostics}, state::{report_diagnostics, FileId, Source, Treehouse}, + tree::ast::Branch, vfs::{self, Content, Dir, Edit, EditPath, VPath}, }; diff --git a/crates/treehouse/src/cli/serve.rs b/src/cli/serve.rs similarity index 100% rename from crates/treehouse/src/cli/serve.rs rename to src/cli/serve.rs diff --git a/crates/treehouse/src/cli/serve/live_reload.rs b/src/cli/serve/live_reload.rs similarity index 100% rename from crates/treehouse/src/cli/serve/live_reload.rs rename to src/cli/serve/live_reload.rs diff --git a/crates/treehouse/src/cli/serve/picture_upload.rs b/src/cli/serve/picture_upload.rs similarity index 100% rename from crates/treehouse/src/cli/serve/picture_upload.rs rename to src/cli/serve/picture_upload.rs diff --git a/crates/treehouse/src/cli/wc.rs b/src/cli/wc.rs similarity index 97% rename from crates/treehouse/src/cli/wc.rs rename to src/cli/wc.rs index b210225..7028dc3 100644 --- a/crates/treehouse/src/cli/wc.rs +++ b/src/cli/wc.rs @@ -1,10 +1,9 @@ use std::ops::ControlFlow; -use treehouse_format::ast::{Branch, Roots}; - use crate::{ parse::parse_tree_with_diagnostics, state::{report_diagnostics, Source, Treehouse}, + tree::ast::{Branch, Roots}, vfs::{self, Content, Dir, VPath}, }; diff --git a/crates/treehouse/src/config.rs b/src/config.rs similarity index 100% rename from crates/treehouse/src/config.rs rename to src/config.rs diff --git a/crates/treehouse/src/dirs.rs b/src/dirs.rs similarity index 100% rename from crates/treehouse/src/dirs.rs rename to src/dirs.rs diff --git a/crates/treehouse/src/fun.rs b/src/fun.rs similarity index 100% rename from crates/treehouse/src/fun.rs rename to src/fun.rs diff --git a/crates/treehouse/src/fun/seasons.rs b/src/fun/seasons.rs similarity index 100% rename from crates/treehouse/src/fun/seasons.rs rename to src/fun/seasons.rs diff --git a/crates/treehouse/src/generate.rs b/src/generate.rs similarity index 100% rename from crates/treehouse/src/generate.rs rename to src/generate.rs diff --git a/crates/treehouse/src/generate/atom.rs b/src/generate/atom.rs similarity index 100% rename from crates/treehouse/src/generate/atom.rs rename to src/generate/atom.rs diff --git a/crates/treehouse/src/generate/dir_helper.rs b/src/generate/dir_helper.rs similarity index 100% rename from crates/treehouse/src/generate/dir_helper.rs rename to src/generate/dir_helper.rs diff --git a/crates/treehouse/src/generate/include_static_helper.rs b/src/generate/include_static_helper.rs similarity index 100% rename from crates/treehouse/src/generate/include_static_helper.rs rename to src/generate/include_static_helper.rs diff --git a/crates/treehouse/src/generate/simple_template.rs b/src/generate/simple_template.rs similarity index 100% rename from crates/treehouse/src/generate/simple_template.rs rename to src/generate/simple_template.rs diff --git a/crates/treehouse/src/generate/tree.rs b/src/generate/tree.rs similarity index 100% rename from crates/treehouse/src/generate/tree.rs rename to src/generate/tree.rs diff --git a/crates/treehouse/src/history.rs b/src/history.rs similarity index 100% rename from crates/treehouse/src/history.rs rename to src/history.rs diff --git a/crates/treehouse/src/html.rs b/src/html.rs similarity index 100% rename from crates/treehouse/src/html.rs rename to src/html.rs diff --git a/crates/treehouse/src/html/breadcrumbs.rs b/src/html/breadcrumbs.rs similarity index 100% rename from crates/treehouse/src/html/breadcrumbs.rs rename to src/html/breadcrumbs.rs diff --git a/crates/treehouse/src/html/djot.rs b/src/html/djot.rs similarity index 100% rename from crates/treehouse/src/html/djot.rs rename to src/html/djot.rs diff --git a/crates/treehouse/src/html/highlight.rs b/src/html/highlight.rs similarity index 100% rename from crates/treehouse/src/html/highlight.rs rename to src/html/highlight.rs diff --git a/crates/treehouse/src/html/highlight/compiled.rs b/src/html/highlight/compiled.rs similarity index 100% rename from crates/treehouse/src/html/highlight/compiled.rs rename to src/html/highlight/compiled.rs diff --git a/crates/treehouse/src/html/highlight/tokenize.rs b/src/html/highlight/tokenize.rs similarity index 100% rename from crates/treehouse/src/html/highlight/tokenize.rs rename to src/html/highlight/tokenize.rs diff --git a/crates/treehouse/src/html/navmap.rs b/src/html/navmap.rs similarity index 100% rename from crates/treehouse/src/html/navmap.rs rename to src/html/navmap.rs diff --git a/crates/treehouse/src/html/tree.rs b/src/html/tree.rs similarity index 99% rename from crates/treehouse/src/html/tree.rs rename to src/html/tree.rs index 7453bb5..a574e39 100644 --- a/crates/treehouse/src/html/tree.rs +++ b/src/html/tree.rs @@ -1,7 +1,6 @@ use std::fmt::Write; use chrono::{DateTime, Utc}; -use treehouse_format::pull::BranchKind; use crate::{ config::Config, @@ -11,7 +10,9 @@ use crate::{ state::{FileId, Treehouse}, tree::{ attributes::{Content, Stage, Visibility}, - mini_template, SemaBranchId, + mini_template, + pull::BranchKind, + SemaBranchId, }, vfs::{self, VPath, VPathBuf}, }; diff --git a/crates/treehouse/src/import_map.rs b/src/import_map.rs similarity index 100% rename from crates/treehouse/src/import_map.rs rename to src/import_map.rs diff --git a/crates/treehouse/src/lib.rs b/src/lib.rs similarity index 100% rename from crates/treehouse/src/lib.rs rename to src/lib.rs diff --git a/crates/treehouse/src/main.rs b/src/main.rs similarity index 100% rename from crates/treehouse/src/main.rs rename to src/main.rs diff --git a/crates/treehouse/src/parse.rs b/src/parse.rs similarity index 85% rename from crates/treehouse/src/parse.rs rename to src/parse.rs index 56fe2f4..e24bcbe 100644 --- a/crates/treehouse/src/parse.rs +++ b/src/parse.rs @@ -2,9 +2,11 @@ use std::{ops::Range, str::FromStr}; use codespan_reporting::diagnostic::{Diagnostic, Label, LabelStyle, Severity}; use tracing::instrument; -use treehouse_format::ast::Roots; -use crate::state::{toml_error_to_diagnostic, FileId, TomlError, Treehouse}; +use crate::{ + state::{toml_error_to_diagnostic, FileId, TomlError, Treehouse}, + tree::{self, ast::Roots}, +}; pub struct ErrorsEmitted; @@ -13,7 +15,7 @@ pub fn parse_tree_with_diagnostics( file_id: FileId, input: &str, ) -> Result>> { - Roots::parse(&mut treehouse_format::pull::Parser { input, position: 0 }).map_err(|error| { + Roots::parse(&mut tree::pull::Parser { input, position: 0 }).map_err(|error| { vec![Diagnostic { severity: Severity::Error, code: Some("tree".into()), diff --git a/crates/treehouse/src/paths.rs b/src/paths.rs similarity index 100% rename from crates/treehouse/src/paths.rs rename to src/paths.rs diff --git a/crates/treehouse/src/sources.rs b/src/sources.rs similarity index 100% rename from crates/treehouse/src/sources.rs rename to src/sources.rs diff --git a/crates/treehouse/src/state.rs b/src/state.rs similarity index 100% rename from crates/treehouse/src/state.rs rename to src/state.rs diff --git a/crates/treehouse/src/tree.rs b/src/tree.rs similarity index 94% rename from crates/treehouse/src/tree.rs rename to src/tree.rs index 6c3bd9d..b922e32 100644 --- a/crates/treehouse/src/tree.rs +++ b/src/tree.rs @@ -1,20 +1,22 @@ +pub mod ast; pub mod attributes; pub mod mini_template; +pub mod pull; use std::ops::Range; use attributes::Timestamps; use codespan_reporting::diagnostic::{Diagnostic, Label, LabelStyle, Severity}; use tracing::instrument; -use treehouse_format::{ - ast::{Branch, Roots}, - pull::BranchKind, -}; use crate::{ config::Config, state::{toml_error_to_diagnostic, FileId, Source, TomlError, Treehouse}, - tree::attributes::{Attributes, Content}, + tree::{ + ast::{Branch, Roots}, + attributes::{Attributes, Content}, + pull::BranchKind, + }, }; use self::attributes::RootAttributes; @@ -409,3 +411,31 @@ impl SemaBranch { attributes } } + +#[derive(Debug, thiserror::Error, Clone, PartialEq, Eq)] +pub enum ParseErrorKind { + #[error("branch kind (`+` or `-`) expected")] + BranchKindExpected, + + #[error("root branches must not be indented")] + RootIndentLevel, + + #[error("at least {expected} spaces of indentation were expected, but got {got}")] + InconsistentIndentation { got: usize, expected: usize }, + + #[error("unterminated code block")] + UnterminatedCodeBlock, +} + +#[derive(Debug, Clone, PartialEq, Eq, thiserror::Error)] +#[error("{range:?}: {kind}")] +pub struct ParseError { + pub kind: ParseErrorKind, + pub range: Range, +} + +impl ParseErrorKind { + pub fn at(self, range: Range) -> ParseError { + ParseError { kind: self, range } + } +} diff --git a/crates/treehouse-format/src/ast.rs b/src/tree/ast.rs similarity index 99% rename from crates/treehouse-format/src/ast.rs rename to src/tree/ast.rs index e8e4915..5c97879 100644 --- a/crates/treehouse-format/src/ast.rs +++ b/src/tree/ast.rs @@ -1,6 +1,6 @@ use std::ops::Range; -use crate::{ +use super::{ pull::{Attributes, BranchEvent, BranchKind, Parser}, ParseError, ParseErrorKind, }; diff --git a/crates/treehouse/src/tree/attributes.rs b/src/tree/attributes.rs similarity index 100% rename from crates/treehouse/src/tree/attributes.rs rename to src/tree/attributes.rs diff --git a/src/tree/lib.rs b/src/tree/lib.rs new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/src/tree/lib.rs @@ -0,0 +1 @@ + diff --git a/crates/treehouse/src/tree/mini_template.rs b/src/tree/mini_template.rs similarity index 100% rename from crates/treehouse/src/tree/mini_template.rs rename to src/tree/mini_template.rs diff --git a/crates/treehouse-format/src/pull.rs b/src/tree/pull.rs similarity index 99% rename from crates/treehouse-format/src/pull.rs rename to src/tree/pull.rs index 964ca4e..c1e4fd6 100644 --- a/crates/treehouse-format/src/pull.rs +++ b/src/tree/pull.rs @@ -1,6 +1,6 @@ use std::{convert::identity, ops::Range}; -use crate::{ParseError, ParseErrorKind}; +use super::{ParseError, ParseErrorKind}; #[derive(Debug, Clone, Copy, PartialEq, Eq)] pub enum BranchKind { diff --git a/crates/treehouse/src/vfs.rs b/src/vfs.rs similarity index 100% rename from crates/treehouse/src/vfs.rs rename to src/vfs.rs diff --git a/crates/treehouse/src/vfs/anchored.rs b/src/vfs/anchored.rs similarity index 100% rename from crates/treehouse/src/vfs/anchored.rs rename to src/vfs/anchored.rs diff --git a/crates/treehouse/src/vfs/asynch.rs b/src/vfs/asynch.rs similarity index 100% rename from crates/treehouse/src/vfs/asynch.rs rename to src/vfs/asynch.rs diff --git a/crates/treehouse/src/vfs/cd.rs b/src/vfs/cd.rs similarity index 100% rename from crates/treehouse/src/vfs/cd.rs rename to src/vfs/cd.rs diff --git a/crates/treehouse/src/vfs/content_cache.rs b/src/vfs/content_cache.rs similarity index 100% rename from crates/treehouse/src/vfs/content_cache.rs rename to src/vfs/content_cache.rs diff --git a/crates/treehouse/src/vfs/content_version_cache.rs b/src/vfs/content_version_cache.rs similarity index 100% rename from crates/treehouse/src/vfs/content_version_cache.rs rename to src/vfs/content_version_cache.rs diff --git a/crates/treehouse/src/vfs/edit.rs b/src/vfs/edit.rs similarity index 100% rename from crates/treehouse/src/vfs/edit.rs rename to src/vfs/edit.rs diff --git a/crates/treehouse/src/vfs/file.rs b/src/vfs/file.rs similarity index 100% rename from crates/treehouse/src/vfs/file.rs rename to src/vfs/file.rs diff --git a/crates/treehouse/src/vfs/html_canonicalize.rs b/src/vfs/html_canonicalize.rs similarity index 100% rename from crates/treehouse/src/vfs/html_canonicalize.rs rename to src/vfs/html_canonicalize.rs diff --git a/crates/treehouse/src/vfs/image_size_cache.rs b/src/vfs/image_size_cache.rs similarity index 100% rename from crates/treehouse/src/vfs/image_size_cache.rs rename to src/vfs/image_size_cache.rs diff --git a/crates/treehouse/src/vfs/mem_dir.rs b/src/vfs/mem_dir.rs similarity index 100% rename from crates/treehouse/src/vfs/mem_dir.rs rename to src/vfs/mem_dir.rs diff --git a/crates/treehouse/src/vfs/overlay.rs b/src/vfs/overlay.rs similarity index 100% rename from crates/treehouse/src/vfs/overlay.rs rename to src/vfs/overlay.rs diff --git a/crates/treehouse/src/vfs/path.rs b/src/vfs/path.rs similarity index 100% rename from crates/treehouse/src/vfs/path.rs rename to src/vfs/path.rs diff --git a/crates/treehouse/src/vfs/physical.rs b/src/vfs/physical.rs similarity index 100% rename from crates/treehouse/src/vfs/physical.rs rename to src/vfs/physical.rs diff --git a/static/css/main.css b/static/css/main.css index 79a0d53..2b4b5e0 100644 --- a/static/css/main.css +++ b/static/css/main.css @@ -147,7 +147,7 @@ html { } body { - font-size: 1.4rem; + font-size: 1.6rem; } pre, @@ -183,9 +183,10 @@ input { "slnt" var(--recursive-slnt), "CRSV" var(--recursive-crsv); - font-feature-settings: var(--recursive-simplified-f), - var(--recursive-simplified-g), var(--recursive-simplified-l), - var(--recursive-simplified-r), var(--recursive-no-serif-L-Z); + font-feature-settings: + var(--recursive-simplified-f), var(--recursive-simplified-g), + var(--recursive-simplified-l), var(--recursive-simplified-r), + var(--recursive-no-serif-L-Z); } h1 { diff --git a/template/_doc.hbs b/template/_doc.hbs new file mode 100644 index 0000000..132c397 --- /dev/null +++ b/template/_doc.hbs @@ -0,0 +1,35 @@ + + + + + + {{> components/_head.hbs }} + + + + + + {{> components/_noscript.hbs }} + + {{> components/_nav.hbs }} + {{> components/_header.hbs }} + + {{!-- + NOTE: ~ because components/_tree.hbs must not include any extra indentation, because it may + contain pre elements which shouldn't be indented. + --}} + {{~> components/_tree.hbs }} + + {{!-- For all pages except the one linked from the footer, include the footer icon. --}} + {{#if (ne page.tree_path "treehouse")}} + {{> components/_footer.hbs }} + {{/if}} + + + + + + + diff --git a/crates/treehouse/tests/it/main.rs b/tests/it/main.rs similarity index 100% rename from crates/treehouse/tests/it/main.rs rename to tests/it/main.rs diff --git a/crates/treehouse/tests/it/vfs.rs b/tests/it/vfs.rs similarity index 100% rename from crates/treehouse/tests/it/vfs.rs rename to tests/it/vfs.rs diff --git a/crates/treehouse/tests/it/vfs/cd.rs b/tests/it/vfs/cd.rs similarity index 100% rename from crates/treehouse/tests/it/vfs/cd.rs rename to tests/it/vfs/cd.rs diff --git a/crates/treehouse/tests/it/vfs/file.rs b/tests/it/vfs/file.rs similarity index 100% rename from crates/treehouse/tests/it/vfs/file.rs rename to tests/it/vfs/file.rs diff --git a/crates/treehouse/tests/it/vfs/mount_points.rs b/tests/it/vfs/mount_points.rs similarity index 100% rename from crates/treehouse/tests/it/vfs/mount_points.rs rename to tests/it/vfs/mount_points.rs diff --git a/crates/treehouse/tests/it/vfs/physical.rs b/tests/it/vfs/physical.rs similarity index 100% rename from crates/treehouse/tests/it/vfs/physical.rs rename to tests/it/vfs/physical.rs diff --git a/crates/treehouse/tests/it/vfs_physical/test.txt b/tests/it/vfs_physical/test.txt similarity index 100% rename from crates/treehouse/tests/it/vfs_physical/test.txt rename to tests/it/vfs_physical/test.txt