diff options
| author | Laurenz <laurmaedje@gmail.com> | 2020-10-04 19:06:20 +0200 |
|---|---|---|
| committer | Laurenz <laurmaedje@gmail.com> | 2020-10-04 19:06:20 +0200 |
| commit | 0f7c70fd93db23ec866ae13aa2f146b7787afabf (patch) | |
| tree | 7a67019fa77931e1722789cfd27997dd82a9b521 /src/library/spacing.rs | |
| parent | 6672f8f7dfcb38bbda3ec92bdf95341c05e9a782 (diff) | |
Separate state and constraints 🧶
Diffstat (limited to 'src/library/spacing.rs')
| -rw-r--r-- | src/library/spacing.rs | 31 |
1 files changed, 11 insertions, 20 deletions
diff --git a/src/library/spacing.rs b/src/library/spacing.rs index 03f52ba4..91f407fe 100644 --- a/src/library/spacing.rs +++ b/src/library/spacing.rs @@ -6,35 +6,26 @@ use crate::layout::SpacingKind; /// /// # Positional arguments /// - The spacing (length or relative to font size). -pub async fn h(name: Span, args: DictValue, ctx: LayoutContext<'_>) -> Pass<Value> { - spacing(name, args, ctx, SpecAxis::Horizontal) +pub async fn h(args: DictValue, ctx: &mut LayoutContext) -> Value { + spacing(args, ctx, SpecAxis::Horizontal) } /// `v`: Add vertical spacing. /// /// # Positional arguments /// - The spacing (length or relative to font size). -pub async fn v(name: Span, args: DictValue, ctx: LayoutContext<'_>) -> Pass<Value> { - spacing(name, args, ctx, SpecAxis::Vertical) +pub async fn v(args: DictValue, ctx: &mut LayoutContext) -> Value { + spacing(args, ctx, SpecAxis::Vertical) } -fn spacing( - name: Span, - mut args: DictValue, - ctx: LayoutContext<'_>, - axis: SpecAxis, -) -> Pass<Value> { - let mut f = Feedback::new(); - - let spacing = args.expect::<Linear>("spacing", name, &mut f); - let commands = if let Some(spacing) = spacing { - let axis = axis.to_gen(ctx.sys); - let spacing = spacing.eval(ctx.style.text.font_size()); +fn spacing(mut args: DictValue, ctx: &mut LayoutContext, axis: SpecAxis) -> Value { + let spacing = args.expect::<Linear>("spacing", Span::ZERO, &mut ctx.f); + args.unexpected(&mut ctx.f); + Value::Commands(if let Some(spacing) = spacing { + let axis = axis.to_gen(ctx.state.sys); + let spacing = spacing.eval(ctx.state.text.font_size()); vec![AddSpacing(spacing, SpacingKind::Hard, axis)] } else { vec![] - }; - - args.unexpected(&mut f); - Pass::commands(commands, f) + }) } |
