From 3ca5b238238e1128aa7bbfbd5db9e632045d8600 Mon Sep 17 00:00:00 2001 From: Laurenz Date: Mon, 28 Feb 2022 15:50:48 +0100 Subject: Reorganize library --- src/eval/class.rs | 2 +- src/eval/layout.rs | 4 +- src/eval/mod.rs | 16 +- src/eval/styles.rs | 3 +- src/eval/template.rs | 7 +- src/library/align.rs | 73 -- src/library/columns.rs | 113 --- src/library/container.rs | 26 - src/library/deco.rs | 74 -- src/library/elements/heading.rs | 150 ++++ src/library/elements/image.rs | 116 ++++ src/library/elements/list.rs | 212 ++++++ src/library/elements/math.rs | 37 + src/library/elements/mod.rs | 15 + src/library/elements/shape.rs | 166 +++++ src/library/elements/table.rs | 100 +++ src/library/flow.rs | 273 -------- src/library/grid.rs | 581 ---------------- src/library/heading.rs | 152 ---- src/library/hide.rs | 32 - src/library/image.rs | 118 ---- src/library/layout/align.rs | 71 ++ src/library/layout/columns.rs | 111 +++ src/library/layout/container.rs | 24 + src/library/layout/flow.rs | 272 ++++++++ src/library/layout/grid.rs | 579 ++++++++++++++++ src/library/layout/hide.rs | 30 + src/library/layout/mod.rs | 27 + src/library/layout/pad.rs | 83 +++ src/library/layout/page.rs | 419 +++++++++++ src/library/layout/place.rs | 59 ++ src/library/layout/spacing.rs | 52 ++ src/library/layout/stack.rs | 259 +++++++ src/library/layout/transform.rs | 86 +++ src/library/link.rs | 66 -- src/library/list.rs | 210 ------ src/library/math.rs | 39 -- src/library/mod.rs | 206 ++---- src/library/numbering.rs | 113 --- src/library/pad.rs | 85 --- src/library/page.rs | 421 ----------- src/library/par.rs | 634 ----------------- src/library/place.rs | 61 -- src/library/prelude.rs | 20 + src/library/raw.rs | 129 ---- src/library/shape.rs | 156 ----- src/library/spacing.rs | 54 -- src/library/stack.rs | 261 ------- src/library/table.rs | 102 --- src/library/text.rs | 1114 ------------------------------ src/library/text/deco.rs | 250 +++++++ src/library/text/link.rs | 64 ++ src/library/text/mod.rs | 409 +++++++++++ src/library/text/par.rs | 617 +++++++++++++++++ src/library/text/raw.rs | 127 ++++ src/library/text/shaping.rs | 552 +++++++++++++++ src/library/transform.rs | 79 --- src/library/utility.rs | 294 -------- src/library/utility/math.rs | 114 +++ src/library/utility/mod.rs | 187 +++++ src/library/utility/numbering.rs | 111 +++ tests/ref/elements/enum.png | Bin 0 -> 26118 bytes tests/ref/elements/heading.png | Bin 0 -> 25291 bytes tests/ref/elements/image.png | Bin 0 -> 183386 bytes tests/ref/elements/list.png | Bin 0 -> 21396 bytes tests/ref/elements/math.png | Bin 0 -> 3444 bytes tests/ref/elements/shape-aspect.png | Bin 0 -> 4663 bytes tests/ref/elements/shape-circle.png | Bin 0 -> 40653 bytes tests/ref/elements/shape-ellipse.png | Bin 0 -> 22046 bytes tests/ref/elements/shape-fill-stroke.png | Bin 0 -> 2893 bytes tests/ref/elements/shape-rect.png | Bin 0 -> 7261 bytes tests/ref/elements/shape-square.png | Bin 0 -> 18777 bytes tests/ref/elements/table.png | Bin 0 -> 1566 bytes tests/ref/layout/box-block.png | Bin 7628 -> 0 bytes tests/ref/layout/container.png | Bin 0 -> 7628 bytes tests/ref/layout/image.png | Bin 183386 -> 0 bytes tests/ref/layout/shape-aspect.png | Bin 4663 -> 0 bytes tests/ref/layout/shape-circle.png | Bin 40653 -> 0 bytes tests/ref/layout/shape-ellipse.png | Bin 22046 -> 0 bytes tests/ref/layout/shape-fill-stroke.png | Bin 2893 -> 0 bytes tests/ref/layout/shape-rect.png | Bin 7261 -> 0 bytes tests/ref/layout/shape-square.png | Bin 18777 -> 0 bytes tests/ref/layout/table.png | Bin 1566 -> 0 bytes tests/ref/markup/emph-strong.png | Bin 6988 -> 0 bytes tests/ref/markup/enums.png | Bin 26118 -> 0 bytes tests/ref/markup/escape.png | Bin 13675 -> 0 bytes tests/ref/markup/heading.png | Bin 25291 -> 0 bytes tests/ref/markup/linebreak.png | Bin 641 -> 0 bytes tests/ref/markup/lists.png | Bin 21396 -> 0 bytes tests/ref/markup/math.png | Bin 3444 -> 0 bytes tests/ref/markup/raw.png | Bin 22255 -> 0 bytes tests/ref/markup/shorthands.png | Bin 3838 -> 0 bytes tests/ref/text/deco.png | Bin 0 -> 29421 bytes tests/ref/text/decorations.png | Bin 29421 -> 0 bytes tests/ref/text/emph-strong.png | Bin 0 -> 6988 bytes tests/ref/text/escape.png | Bin 0 -> 13675 bytes tests/ref/text/linebreak.png | Bin 0 -> 14308 bytes tests/ref/text/linebreaks.png | Bin 14308 -> 0 bytes tests/ref/text/link.png | Bin 0 -> 35262 bytes tests/ref/text/links.png | Bin 35262 -> 0 bytes tests/ref/text/raw.png | Bin 0 -> 22255 bytes tests/ref/text/shorthands.png | Bin 0 -> 3838 bytes tests/typ/elements/enum.typ | 60 ++ tests/typ/elements/heading.typ | 50 ++ tests/typ/elements/image.typ | 59 ++ tests/typ/elements/list.typ | 51 ++ tests/typ/elements/math.typ | 12 + tests/typ/elements/shape-aspect.typ | 46 ++ tests/typ/elements/shape-circle.typ | 51 ++ tests/typ/elements/shape-ellipse.typ | 23 + tests/typ/elements/shape-fill-stroke.typ | 26 + tests/typ/elements/shape-rect.typ | 30 + tests/typ/elements/shape-square.typ | 39 ++ tests/typ/elements/table.typ | 13 + tests/typ/layout/box-block.typ | 22 - tests/typ/layout/container.typ | 22 + tests/typ/layout/image.typ | 59 -- tests/typ/layout/shape-aspect.typ | 46 -- tests/typ/layout/shape-circle.typ | 51 -- tests/typ/layout/shape-ellipse.typ | 23 - tests/typ/layout/shape-fill-stroke.typ | 26 - tests/typ/layout/shape-rect.typ | 30 - tests/typ/layout/shape-square.typ | 39 -- tests/typ/layout/table.typ | 13 - tests/typ/markup/emph-strong.typ | 33 - tests/typ/markup/enums.typ | 60 -- tests/typ/markup/escape.typ | 38 - tests/typ/markup/heading.typ | 50 -- tests/typ/markup/linebreak.typ | 4 - tests/typ/markup/lists.typ | 51 -- tests/typ/markup/math.typ | 12 - tests/typ/markup/raw.typ | 59 -- tests/typ/markup/shorthands.typ | 8 - tests/typ/text/deco.typ | 31 + tests/typ/text/decorations.typ | 31 - tests/typ/text/emph-strong.typ | 33 + tests/typ/text/escape.typ | 38 + tests/typ/text/linebreak.typ | 28 + tests/typ/text/linebreaks.typ | 28 - tests/typ/text/link.typ | 35 + tests/typ/text/links.typ | 35 - tests/typ/text/raw.typ | 59 ++ tests/typ/text/shorthands.typ | 8 + tests/typ/utility/collection.typ | 6 - tests/typ/utility/strings.typ | 12 +- tests/typeset.rs | 3 +- 146 files changed, 6132 insertions(+), 6138 deletions(-) delete mode 100644 src/library/align.rs delete mode 100644 src/library/columns.rs delete mode 100644 src/library/container.rs delete mode 100644 src/library/deco.rs create mode 100644 src/library/elements/heading.rs create mode 100644 src/library/elements/image.rs create mode 100644 src/library/elements/list.rs create mode 100644 src/library/elements/math.rs create mode 100644 src/library/elements/mod.rs create mode 100644 src/library/elements/shape.rs create mode 100644 src/library/elements/table.rs delete mode 100644 src/library/flow.rs delete mode 100644 src/library/grid.rs delete mode 100644 src/library/heading.rs delete mode 100644 src/library/hide.rs delete mode 100644 src/library/image.rs create mode 100644 src/library/layout/align.rs create mode 100644 src/library/layout/columns.rs create mode 100644 src/library/layout/container.rs create mode 100644 src/library/layout/flow.rs create mode 100644 src/library/layout/grid.rs create mode 100644 src/library/layout/hide.rs create mode 100644 src/library/layout/mod.rs create mode 100644 src/library/layout/pad.rs create mode 100644 src/library/layout/page.rs create mode 100644 src/library/layout/place.rs create mode 100644 src/library/layout/spacing.rs create mode 100644 src/library/layout/stack.rs create mode 100644 src/library/layout/transform.rs delete mode 100644 src/library/link.rs delete mode 100644 src/library/list.rs delete mode 100644 src/library/math.rs delete mode 100644 src/library/numbering.rs delete mode 100644 src/library/pad.rs delete mode 100644 src/library/page.rs delete mode 100644 src/library/par.rs delete mode 100644 src/library/place.rs create mode 100644 src/library/prelude.rs delete mode 100644 src/library/raw.rs delete mode 100644 src/library/shape.rs delete mode 100644 src/library/spacing.rs delete mode 100644 src/library/stack.rs delete mode 100644 src/library/table.rs delete mode 100644 src/library/text.rs create mode 100644 src/library/text/deco.rs create mode 100644 src/library/text/link.rs create mode 100644 src/library/text/mod.rs create mode 100644 src/library/text/par.rs create mode 100644 src/library/text/raw.rs create mode 100644 src/library/text/shaping.rs delete mode 100644 src/library/transform.rs delete mode 100644 src/library/utility.rs create mode 100644 src/library/utility/math.rs create mode 100644 src/library/utility/mod.rs create mode 100644 src/library/utility/numbering.rs create mode 100644 tests/ref/elements/enum.png create mode 100644 tests/ref/elements/heading.png create mode 100644 tests/ref/elements/image.png create mode 100644 tests/ref/elements/list.png create mode 100644 tests/ref/elements/math.png create mode 100644 tests/ref/elements/shape-aspect.png create mode 100644 tests/ref/elements/shape-circle.png create mode 100644 tests/ref/elements/shape-ellipse.png create mode 100644 tests/ref/elements/shape-fill-stroke.png create mode 100644 tests/ref/elements/shape-rect.png create mode 100644 tests/ref/elements/shape-square.png create mode 100644 tests/ref/elements/table.png delete mode 100644 tests/ref/layout/box-block.png create mode 100644 tests/ref/layout/container.png delete mode 100644 tests/ref/layout/image.png delete mode 100644 tests/ref/layout/shape-aspect.png delete mode 100644 tests/ref/layout/shape-circle.png delete mode 100644 tests/ref/layout/shape-ellipse.png delete mode 100644 tests/ref/layout/shape-fill-stroke.png delete mode 100644 tests/ref/layout/shape-rect.png delete mode 100644 tests/ref/layout/shape-square.png delete mode 100644 tests/ref/layout/table.png delete mode 100644 tests/ref/markup/emph-strong.png delete mode 100644 tests/ref/markup/enums.png delete mode 100644 tests/ref/markup/escape.png delete mode 100644 tests/ref/markup/heading.png delete mode 100644 tests/ref/markup/linebreak.png delete mode 100644 tests/ref/markup/lists.png delete mode 100644 tests/ref/markup/math.png delete mode 100644 tests/ref/markup/raw.png delete mode 100644 tests/ref/markup/shorthands.png create mode 100644 tests/ref/text/deco.png delete mode 100644 tests/ref/text/decorations.png create mode 100644 tests/ref/text/emph-strong.png create mode 100644 tests/ref/text/escape.png create mode 100644 tests/ref/text/linebreak.png delete mode 100644 tests/ref/text/linebreaks.png create mode 100644 tests/ref/text/link.png delete mode 100644 tests/ref/text/links.png create mode 100644 tests/ref/text/raw.png create mode 100644 tests/ref/text/shorthands.png create mode 100644 tests/typ/elements/enum.typ create mode 100644 tests/typ/elements/heading.typ create mode 100644 tests/typ/elements/image.typ create mode 100644 tests/typ/elements/list.typ create mode 100644 tests/typ/elements/math.typ create mode 100644 tests/typ/elements/shape-aspect.typ create mode 100644 tests/typ/elements/shape-circle.typ create mode 100644 tests/typ/elements/shape-ellipse.typ create mode 100644 tests/typ/elements/shape-fill-stroke.typ create mode 100644 tests/typ/elements/shape-rect.typ create mode 100644 tests/typ/elements/shape-square.typ create mode 100644 tests/typ/elements/table.typ delete mode 100644 tests/typ/layout/box-block.typ create mode 100644 tests/typ/layout/container.typ delete mode 100644 tests/typ/layout/image.typ delete mode 100644 tests/typ/layout/shape-aspect.typ delete mode 100644 tests/typ/layout/shape-circle.typ delete mode 100644 tests/typ/layout/shape-ellipse.typ delete mode 100644 tests/typ/layout/shape-fill-stroke.typ delete mode 100644 tests/typ/layout/shape-rect.typ delete mode 100644 tests/typ/layout/shape-square.typ delete mode 100644 tests/typ/layout/table.typ delete mode 100644 tests/typ/markup/emph-strong.typ delete mode 100644 tests/typ/markup/enums.typ delete mode 100644 tests/typ/markup/escape.typ delete mode 100644 tests/typ/markup/heading.typ delete mode 100644 tests/typ/markup/linebreak.typ delete mode 100644 tests/typ/markup/lists.typ delete mode 100644 tests/typ/markup/math.typ delete mode 100644 tests/typ/markup/raw.typ delete mode 100644 tests/typ/markup/shorthands.typ create mode 100644 tests/typ/text/deco.typ delete mode 100644 tests/typ/text/decorations.typ create mode 100644 tests/typ/text/emph-strong.typ create mode 100644 tests/typ/text/escape.typ create mode 100644 tests/typ/text/linebreak.typ delete mode 100644 tests/typ/text/linebreaks.typ create mode 100644 tests/typ/text/link.typ delete mode 100644 tests/typ/text/links.typ create mode 100644 tests/typ/text/raw.typ create mode 100644 tests/typ/text/shorthands.typ diff --git a/src/eval/class.rs b/src/eval/class.rs index 5e1857d7..2cced74d 100644 --- a/src/eval/class.rs +++ b/src/eval/class.rs @@ -33,7 +33,7 @@ use crate::Context; /// ``` /// /// [construct]: Self::construct -/// [`TextNode`]: crate::library::TextNode +/// [`TextNode`]: crate::library::text::TextNode /// [`set`]: Self::set #[derive(Clone)] pub struct Class { diff --git a/src/eval/layout.rs b/src/eval/layout.rs index 38ad3977..02912544 100644 --- a/src/eval/layout.rs +++ b/src/eval/layout.rs @@ -9,7 +9,7 @@ use crate::diag::TypResult; use crate::eval::StyleChain; use crate::frame::{Element, Frame, Geometry, Shape, Stroke}; use crate::geom::{Align, Length, Linear, Paint, Point, Sides, Size, Spec, Transform}; -use crate::library::{AlignNode, PadNode, TransformNode, MOVE}; +use crate::library::layout::{AlignNode, MoveNode, PadNode}; use crate::util::Prehashed; use crate::Context; @@ -203,7 +203,7 @@ impl LayoutNode { /// Transform this node's contents without affecting layout. pub fn moved(self, offset: Point) -> Self { if !offset.is_zero() { - TransformNode:: { + MoveNode { transform: Transform::translation(offset.x, offset.y), child: self, } diff --git a/src/eval/mod.rs b/src/eval/mod.rs index 380e9e9d..f8b4b0f0 100644 --- a/src/eval/mod.rs +++ b/src/eval/mod.rs @@ -120,7 +120,7 @@ impl Eval for StrongNode { type Output = Template; fn eval(&self, ctx: &mut Context, scp: &mut Scopes) -> EvalResult { - Ok(Template::show(library::StrongNode( + Ok(Template::show(library::text::StrongNode( self.body().eval(ctx, scp)?, ))) } @@ -130,7 +130,7 @@ impl Eval for EmphNode { type Output = Template; fn eval(&self, ctx: &mut Context, scp: &mut Scopes) -> EvalResult { - Ok(Template::show(library::EmphNode( + Ok(Template::show(library::text::EmphNode( self.body().eval(ctx, scp)?, ))) } @@ -140,12 +140,12 @@ impl Eval for RawNode { type Output = Template; fn eval(&self, _: &mut Context, _: &mut Scopes) -> EvalResult { - let template = Template::show(library::RawNode { + let template = Template::show(library::text::RawNode { text: self.text.clone(), block: self.block, }); Ok(match self.lang { - Some(_) => template.styled(library::RawNode::LANG, self.lang.clone()), + Some(_) => template.styled(library::text::RawNode::LANG, self.lang.clone()), None => template, }) } @@ -155,7 +155,7 @@ impl Eval for MathNode { type Output = Template; fn eval(&self, _: &mut Context, _: &mut Scopes) -> EvalResult { - Ok(Template::show(library::MathNode { + Ok(Template::show(library::elements::MathNode { formula: self.formula.clone(), display: self.display, })) @@ -166,7 +166,7 @@ impl Eval for HeadingNode { type Output = Template; fn eval(&self, ctx: &mut Context, scp: &mut Scopes) -> EvalResult { - Ok(Template::show(library::HeadingNode { + Ok(Template::show(library::elements::HeadingNode { body: self.body().eval(ctx, scp)?, level: self.level(), })) @@ -177,7 +177,7 @@ impl Eval for ListNode { type Output = Template; fn eval(&self, ctx: &mut Context, scp: &mut Scopes) -> EvalResult { - Ok(Template::List(library::ListItem { + Ok(Template::List(library::elements::ListItem { number: None, body: Box::new(self.body().eval(ctx, scp)?), })) @@ -188,7 +188,7 @@ impl Eval for EnumNode { type Output = Template; fn eval(&self, ctx: &mut Context, scp: &mut Scopes) -> EvalResult { - Ok(Template::Enum(library::ListItem { + Ok(Template::Enum(library::elements::ListItem { number: self.number(), body: Box::new(self.body().eval(ctx, scp)?), })) diff --git a/src/eval/styles.rs b/src/eval/styles.rs index 8e7bd4b6..5a8371a9 100644 --- a/src/eval/styles.rs +++ b/src/eval/styles.rs @@ -5,7 +5,8 @@ use std::sync::Arc; use super::{Args, Func, Span, Template, Value}; use crate::diag::{At, TypResult}; -use crate::library::{PageNode, ParNode}; +use crate::library::layout::PageNode; +use crate::library::text::ParNode; use crate::Context; /// A map of style properties. diff --git a/src/eval/template.rs b/src/eval/template.rs index 747e5d44..94cc0aff 100644 --- a/src/eval/template.rs +++ b/src/eval/template.rs @@ -10,11 +10,10 @@ use super::{ StyleMap, StyleVecBuilder, }; 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::prelude::*; -use crate::library::{ - DecoNode, FlowChild, FlowNode, ListItem, ListKind, ListNode, PageNode, ParChild, - ParNode, PlaceNode, SpacingKind, TextNode, ORDERED, UNDERLINE, UNORDERED, -}; +use crate::library::text::{DecoNode, ParChild, ParNode, TextNode, UNDERLINE}; use crate::util::EcoString; /// Composable representation of styled content. diff --git a/src/library/align.rs b/src/library/align.rs deleted file mode 100644 index 2fd734d3..00000000 --- a/src/library/align.rs +++ /dev/null @@ -1,73 +0,0 @@ -//! Aligning nodes in their parent container. - -use super::prelude::*; -use super::ParNode; - -/// Align a node along the layouting axes. -#[derive(Debug, Hash)] -pub struct AlignNode { - /// How to align the node horizontally and vertically. - pub aligns: Spec>, - /// The node to be aligned. - pub child: LayoutNode, -} - -#[class] -impl AlignNode { - fn construct(_: &mut Context, args: &mut Args) -> TypResult