diff options
Diffstat (limited to 'src/library/align.rs')
| -rw-r--r-- | src/library/align.rs | 40 |
1 files changed, 23 insertions, 17 deletions
diff --git a/src/library/align.rs b/src/library/align.rs index c16277f6..16c44905 100644 --- a/src/library/align.rs +++ b/src/library/align.rs @@ -1,9 +1,11 @@ +//! Aligning nodes in their parent container. + use super::prelude::*; use super::ParNode; /// `align`: Configure the alignment along the layouting axes. pub fn align(_: &mut EvalContext, args: &mut Args) -> TypResult<Value> { - let aligns: Spec<_> = args.expect("alignment")?; + let aligns: Spec<_> = args.find().unwrap_or_default(); let body: Node = args.expect("body")?; let mut styles = Styles::new(); @@ -16,6 +18,26 @@ pub fn align(_: &mut EvalContext, args: &mut Args) -> TypResult<Value> { )) } +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), + +} + /// A node that aligns its child. #[derive(Debug, Hash)] pub struct AlignNode { @@ -57,19 +79,3 @@ impl Layout for AlignNode { frames } } - -dynamic! { - Align: "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), - -} |
