diff options
| author | Laurenz <laurmaedje@gmail.com> | 2022-01-05 14:49:14 +0100 |
|---|---|---|
| committer | Laurenz <laurmaedje@gmail.com> | 2022-01-05 15:06:42 +0100 |
| commit | f7e8624b4cf31744d600167dd7f3a9d9d1626014 (patch) | |
| tree | 0941c8db497befc47a666d3d1384db4ab9fc5133 /src/library/align.rs | |
| parent | 4c81a5d43eabd959dbb500a8076f99f21bd037bd (diff) | |
Refactor
Diffstat (limited to 'src/library/align.rs')
| -rw-r--r-- | src/library/align.rs | 56 |
1 files changed, 28 insertions, 28 deletions
diff --git a/src/library/align.rs b/src/library/align.rs index 32735244..e8dfabb1 100644 --- a/src/library/align.rs +++ b/src/library/align.rs @@ -7,33 +7,7 @@ use super::ParNode; pub fn align(_: &mut EvalContext, args: &mut Args) -> TypResult<Value> { let aligns: Spec<_> = args.find().unwrap_or_default(); let body: PackedNode = args.expect("body")?; - - let mut styles = StyleMap::new(); - if let Some(align) = aligns.x { - styles.set(ParNode::ALIGN, align); - } - - Ok(Value::block(body.styled(styles).aligned(aligns))) -} - -dynamic! { - Align: "alignment", -} - -dynamic! { - Spec<Align>: "2d alignment", -} - -castable! { - Spec<Option<Align>>, - Expected: "1d or 2d alignment", - @align: Align => { - let mut aligns = Spec::default(); - aligns.set(align.axis(), Some(*align)); - aligns - }, - @aligns: Spec<Align> => aligns.map(Some), - + Ok(Value::block(body.aligned(aligns))) } /// A node that aligns its child. @@ -56,8 +30,14 @@ impl Layout for AlignNode { let mut pod = regions.clone(); pod.expand &= self.aligns.map_is_none(); + // Align paragraphs inside the child. + let mut passed = StyleMap::new(); + if let Some(align) = self.aligns.x { + passed.set(ParNode::ALIGN, align); + } + // Layout the child. - let mut frames = self.child.layout(ctx, &pod, styles); + let mut frames = self.child.layout(ctx, &pod, passed.chain(&styles)); for ((current, base), Constrained { item: frame, cts }) in regions.iter().zip(&mut frames) @@ -78,3 +58,23 @@ impl Layout for AlignNode { frames } } + +dynamic! { + Align: "alignment", +} + +dynamic! { + Spec<Align>: "2d alignment", +} + +castable! { + Spec<Option<Align>>, + Expected: "1d or 2d alignment", + @align: Align => { + let mut aligns = Spec::default(); + aligns.set(align.axis(), Some(*align)); + aligns + }, + @aligns: Spec<Align> => aligns.map(Some), + +} |
