More restructuring

This commit is contained in:
Laurenz 2022-03-11 11:58:56 +01:00
parent b71113d37a
commit e6b532391d
48 changed files with 80 additions and 76 deletions

View File

@ -9,7 +9,8 @@ use crate::diag::TypResult;
use crate::eval::StyleChain; use crate::eval::StyleChain;
use crate::frame::{Element, Frame, Geometry, Shape, Stroke}; use crate::frame::{Element, Frame, Geometry, Shape, Stroke};
use crate::geom::{Align, Length, Linear, Paint, Point, Sides, Size, Spec, Transform}; use crate::geom::{Align, Length, Linear, Paint, Point, Sides, Size, Spec, Transform};
use crate::library::layout::{AlignNode, MoveNode, PadNode}; use crate::library::graphics::MoveNode;
use crate::library::layout::{AlignNode, PadNode};
use crate::util::Prehashed; use crate::util::Prehashed;
use crate::Context; use crate::Context;

View File

@ -155,7 +155,7 @@ impl Eval for MathNode {
type Output = Template; type Output = Template;
fn eval(&self, _: &mut Context, _: &mut Scopes) -> EvalResult<Self::Output> { fn eval(&self, _: &mut Context, _: &mut Scopes) -> EvalResult<Self::Output> {
Ok(Template::show(library::elements::MathNode { Ok(Template::show(library::math::MathNode {
formula: self.formula.clone(), formula: self.formula.clone(),
display: self.display, display: self.display,
})) }))
@ -166,7 +166,7 @@ impl Eval for HeadingNode {
type Output = Template; type Output = Template;
fn eval(&self, ctx: &mut Context, scp: &mut Scopes) -> EvalResult<Self::Output> { fn eval(&self, ctx: &mut Context, scp: &mut Scopes) -> EvalResult<Self::Output> {
Ok(Template::show(library::elements::HeadingNode { Ok(Template::show(library::structure::HeadingNode {
body: self.body().eval(ctx, scp)?, body: self.body().eval(ctx, scp)?,
level: self.level(), level: self.level(),
})) }))
@ -177,7 +177,7 @@ impl Eval for ListNode {
type Output = Template; type Output = Template;
fn eval(&self, ctx: &mut Context, scp: &mut Scopes) -> EvalResult<Self::Output> { fn eval(&self, ctx: &mut Context, scp: &mut Scopes) -> EvalResult<Self::Output> {
Ok(Template::List(library::elements::ListItem { Ok(Template::List(library::structure::ListItem {
number: None, number: None,
body: Box::new(self.body().eval(ctx, scp)?), body: Box::new(self.body().eval(ctx, scp)?),
})) }))
@ -188,7 +188,7 @@ impl Eval for EnumNode {
type Output = Template; type Output = Template;
fn eval(&self, ctx: &mut Context, scp: &mut Scopes) -> EvalResult<Self::Output> { fn eval(&self, ctx: &mut Context, scp: &mut Scopes) -> EvalResult<Self::Output> {
Ok(Template::Enum(library::elements::ListItem { Ok(Template::Enum(library::structure::ListItem {
number: self.number(), number: self.number(),
body: Box::new(self.body().eval(ctx, scp)?), body: Box::new(self.body().eval(ctx, scp)?),
})) }))

View File

@ -10,9 +10,9 @@ use super::{
StyleMap, StyleVecBuilder, StyleMap, StyleVecBuilder,
}; };
use crate::diag::StrResult; use crate::diag::StrResult;
use crate::library::elements::{ListItem, ListKind, ListNode, ORDERED, UNORDERED};
use crate::library::layout::{FlowChild, FlowNode, PageNode, PlaceNode, SpacingKind}; use crate::library::layout::{FlowChild, FlowNode, PageNode, PlaceNode, SpacingKind};
use crate::library::prelude::*; use crate::library::prelude::*;
use crate::library::structure::{ListItem, ListKind, ListNode, ORDERED, UNORDERED};
use crate::library::text::{DecoNode, ParChild, ParNode, TextNode, UNDERLINE}; use crate::library::text::{DecoNode, ParChild, ParNode, TextNode, UNDERLINE};
use crate::util::EcoString; use crate::util::EcoString;

View File

@ -1,15 +0,0 @@
//! Primitive and semantic elements.
mod heading;
mod image;
mod list;
mod math;
mod shape;
mod table;
pub use self::image::*;
pub use heading::*;
pub use list::*;
pub use math::*;
pub use shape::*;
pub use table::*;

View File

@ -0,0 +1,11 @@
//! Graphical elements and effects.
mod hide;
mod image;
mod shape;
mod transform;
pub use self::image::*;
pub use hide::*;
pub use shape::*;
pub use transform::*;

View File

@ -5,23 +5,19 @@ mod columns;
mod container; mod container;
mod flow; mod flow;
mod grid; mod grid;
mod hide;
mod pad; mod pad;
mod page; mod page;
mod place; mod place;
mod spacing; mod spacing;
mod stack; mod stack;
mod transform;
pub use align::*; pub use align::*;
pub use columns::*; pub use columns::*;
pub use container::*; pub use container::*;
pub use flow::*; pub use flow::*;
pub use grid::*; pub use grid::*;
pub use hide::*;
pub use pad::*; pub use pad::*;
pub use page::*; pub use page::*;
pub use place::*; pub use place::*;
pub use spacing::*; pub use spacing::*;
pub use stack::*; pub use stack::*;
pub use transform::*;

View File

@ -3,9 +3,11 @@
//! Call [`new`] to obtain a [`Scope`] containing all standard library //! Call [`new`] to obtain a [`Scope`] containing all standard library
//! definitions. //! definitions.
pub mod elements; pub mod graphics;
pub mod layout; pub mod layout;
pub mod math;
pub mod prelude; pub mod prelude;
pub mod structure;
pub mod text; pub mod text;
pub mod utility; pub mod utility;
@ -18,8 +20,8 @@ pub fn new() -> Scope {
// Text. // Text.
std.def_class::<text::TextNode>("text"); std.def_class::<text::TextNode>("text");
std.def_class::<text::ParNode>("par"); std.def_class::<text::ParNode>("par");
std.def_class::<text::ParbreakNode>("parbreak");
std.def_class::<text::LinebreakNode>("linebreak"); std.def_class::<text::LinebreakNode>("linebreak");
std.def_class::<text::ParbreakNode>("parbreak");
std.def_class::<text::StrongNode>("strong"); std.def_class::<text::StrongNode>("strong");
std.def_class::<text::EmphNode>("emph"); std.def_class::<text::EmphNode>("emph");
std.def_class::<text::RawNode>("raw"); std.def_class::<text::RawNode>("raw");
@ -28,17 +30,11 @@ pub fn new() -> Scope {
std.def_class::<text::OverlineNode>("overline"); std.def_class::<text::OverlineNode>("overline");
std.def_class::<text::LinkNode>("link"); std.def_class::<text::LinkNode>("link");
// Elements. // Structure.
std.def_class::<elements::MathNode>("math"); std.def_class::<structure::HeadingNode>("heading");
std.def_class::<elements::HeadingNode>("heading"); std.def_class::<structure::ListNode>("list");
std.def_class::<elements::ListNode>("list"); std.def_class::<structure::EnumNode>("enum");
std.def_class::<elements::EnumNode>("enum"); std.def_class::<structure::TableNode>("table");
std.def_class::<elements::TableNode>("table");
std.def_class::<elements::ImageNode>("image");
std.def_class::<elements::RectNode>("rect");
std.def_class::<elements::SquareNode>("square");
std.def_class::<elements::EllipseNode>("ellipse");
std.def_class::<elements::CircleNode>("circle");
// Layout. // Layout.
std.def_class::<layout::PageNode>("page"); std.def_class::<layout::PageNode>("page");
@ -54,10 +50,20 @@ pub fn new() -> Scope {
std.def_class::<layout::ColumnsNode>("columns"); std.def_class::<layout::ColumnsNode>("columns");
std.def_class::<layout::ColbreakNode>("colbreak"); std.def_class::<layout::ColbreakNode>("colbreak");
std.def_class::<layout::PlaceNode>("place"); std.def_class::<layout::PlaceNode>("place");
std.def_class::<layout::MoveNode>("move");
std.def_class::<layout::ScaleNode>("scale"); // Graphics.
std.def_class::<layout::RotateNode>("rotate"); std.def_class::<graphics::ImageNode>("image");
std.def_class::<layout::HideNode>("hide"); std.def_class::<graphics::RectNode>("rect");
std.def_class::<graphics::SquareNode>("square");
std.def_class::<graphics::EllipseNode>("ellipse");
std.def_class::<graphics::CircleNode>("circle");
std.def_class::<graphics::MoveNode>("move");
std.def_class::<graphics::ScaleNode>("scale");
std.def_class::<graphics::RotateNode>("rotate");
std.def_class::<graphics::HideNode>("hide");
// Math.
std.def_class::<math::MathNode>("math");
// Utility functions. // Utility functions.
std.def_func("assert", utility::assert); std.def_func("assert", utility::assert);

View File

@ -0,0 +1,9 @@
//! Document structuring.
mod heading;
mod list;
mod table;
pub use heading::*;
pub use list::*;
pub use table::*;

View File

Before

Width:  |  Height:  |  Size: 936 B

After

Width:  |  Height:  |  Size: 936 B

View File

Before

Width:  |  Height:  |  Size: 179 KiB

After

Width:  |  Height:  |  Size: 179 KiB

View File

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 4.6 KiB

View File

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 40 KiB

View File

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

Before

Width:  |  Height:  |  Size: 7.1 KiB

After

Width:  |  Height:  |  Size: 7.1 KiB

View File

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View File

Before

Width:  |  Height:  |  Size: 55 KiB

After

Width:  |  Height:  |  Size: 55 KiB

View File

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

View File

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 25 KiB

View File

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

View File

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View File

@ -16,6 +16,17 @@
// Error: 6-10 expected string, array or dictionary, found length // Error: 6-10 expected string, array or dictionary, found length
#len(12pt) #len(12pt)
---
// Test the `upper` and `lower` functions.
#let memes = "ArE mEmEs gReAt?";
#test(lower(memes), "are memes great?")
#test(upper(memes), "ARE MEMES GREAT?")
#test(upper("Ελλάδα"), "ΕΛΛΆΔΑ")
---
// Error: 8-9 expected string or template, found integer
#upper(1)
--- ---
// Test the `sorted` function. // Test the `sorted` function.
#test(sorted(()), ()) #test(sorted(()), ())

View File

@ -0,0 +1,19 @@
// Test numbering formatting functions.
---
#upper("Abc 8")
#upper[def]
#lower("SCREAMING MUST BE SILENCED in " + roman(1672) + " years")
#for i in range(9) {
symbol(i)
[ and ]
roman(i)
[ for #i]
parbreak()
}
---
// Error: 9-11 must be at least zero
#symbol(-1)

View File

@ -1,34 +0,0 @@
// Test string handling functions.
// Ref: false
---
// Test the `upper`, `lower`, and number formatting functions.
#let memes = "ArE mEmEs gReAt?";
#test(lower(memes), "are memes great?")
#test(upper(memes), "ARE MEMES GREAT?")
#test(upper("Ελλάδα"), "ΕΛΛΆΔΑ")
---
// Test numbering formatting functions.
// Ref: true
#upper("Abc 8")
#upper[def]
#lower("SCREAMING MUST BE SILENCED in " + roman(1672) + " years")
#for i in range(9) {
symbol(i)
[ and ]
roman(i)
[ for #i]
parbreak()
}
---
// Error: 8-9 expected string or template, found integer
#upper(1)
---
// Error: 9-11 must be at least zero
#symbol(-1)