summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2022-11-20 20:57:40 +0100
committerLaurenz <laurmaedje@gmail.com>2022-11-20 21:39:19 +0100
commit72361106bcef403ef88f1745a215e0d911148072 (patch)
tree2455074aa977e3be2c0b85aefdf4e86a20d96881
parentf69c3fb1e5b6e331a2adf0fa342d7793cdf615ad (diff)
Add flag for model printing
-rw-r--r--library/src/structure/list.rs23
-rw-r--r--tests/src/tests.rs16
2 files changed, 15 insertions, 24 deletions
diff --git a/library/src/structure/list.rs b/library/src/structure/list.rs
index aa844232..3f73386c 100644
--- a/library/src/structure/list.rs
+++ b/library/src/structure/list.rs
@@ -144,7 +144,7 @@ impl<const L: ListKind> LayoutBlock for ListNode<L> {
}
/// An item in a list.
-#[derive(Clone, PartialEq, Hash)]
+#[derive(Debug, Clone, Hash)]
pub enum ListItem {
/// An item of an unordered list.
List(Box<Content>),
@@ -183,24 +183,11 @@ impl ListItem {
}
}
-impl Debug for ListItem {
- fn fmt(&self, f: &mut Formatter) -> fmt::Result {
- match self {
- Self::List(body) => write!(f, "- {body:?}"),
- Self::Enum(number, body) => match number {
- Some(n) => write!(f, "{n}. {body:?}"),
- None => write!(f, "+ {body:?}"),
- },
- Self::Desc(item) => item.fmt(f),
- }
- }
-}
-
#[node]
impl ListItem {}
/// A description list item.
-#[derive(Clone, PartialEq, Hash)]
+#[derive(Debug, Clone, Hash)]
pub struct DescItem {
/// The term described by the list item.
pub term: Content,
@@ -218,12 +205,6 @@ castable! {
},
}
-impl Debug for DescItem {
- fn fmt(&self, f: &mut Formatter) -> fmt::Result {
- write!(f, "/ {:?}: {:?}", self.term, self.body)
- }
-}
-
/// How to label a list.
pub type ListKind = usize;
diff --git a/tests/src/tests.rs b/tests/src/tests.rs
index cdd82117..a867f065 100644
--- a/tests/src/tests.rs
+++ b/tests/src/tests.rs
@@ -7,7 +7,7 @@ use std::io::Read;
use std::ops::Range;
use std::path::{Path, PathBuf};
-use comemo::Prehashed;
+use comemo::{Prehashed, Track};
use elsa::FrozenVec;
use once_cell::unsync::OnceCell;
use tiny_skia as sk;
@@ -100,6 +100,7 @@ struct Args {
#[derive(Default, Copy, Clone, Eq, PartialEq)]
struct PrintConfig {
syntax: bool,
+ model: bool,
frames: bool,
}
@@ -120,6 +121,8 @@ impl Args {
"--pdf" => pdf = true,
// Debug print the syntax trees.
"--syntax" => print.syntax = true,
+ // Debug print the model.
+ "--model" => print.model = true,
// Debug print the frames.
"--frames" => print.frames = true,
// Everything else is a file filter.
@@ -355,7 +358,7 @@ fn test(
if world.print.frames {
for frame in &frames {
- println!("Frame: {:#?}", frame);
+ println!("Frame:\n{:#?}\n", frame);
}
}
@@ -405,7 +408,7 @@ fn test_part(
let id = world.set(src_path, text);
let source = world.source(id);
if world.print.syntax {
- println!("Syntax Tree: {:#?}", source.root())
+ println!("Syntax Tree:\n{:#?}\n", source.root())
}
let (local_compare_ref, mut ref_errors) = parse_metadata(&source);
@@ -414,6 +417,13 @@ fn test_part(
ok &= test_spans(source.root());
ok &= test_reparse(world.source(id).text(), i, rng);
+ if world.print.model {
+ let tracked = (world as &dyn World).track();
+ let route = typst::model::Route::default();
+ let module = typst::model::eval(tracked, route.track(), id).unwrap();
+ println!("Model:\n{:#?}\n", module.content);
+ }
+
let (mut frames, errors) = match typst::typeset(world, id) {
Ok(frames) => (frames, vec![]),
Err(errors) => (vec![], *errors),