diff options
| author | Laurenz <laurmaedje@gmail.com> | 2020-08-14 20:43:03 +0200 |
|---|---|---|
| committer | Laurenz <laurmaedje@gmail.com> | 2020-08-14 20:43:03 +0200 |
| commit | c8f6b5bd5c55845562571c196a0b2c1a7ca20f71 (patch) | |
| tree | 0e5066064f1bf81f847cb1cfe23578e2f42fe1e8 /src/library | |
| parent | 650c712eabc6f665a0a0cc2a47fb5b90cf715d87 (diff) | |
Desugar body into last argument 🍩
Diffstat (limited to 'src/library')
| -rw-r--r-- | src/library/align.rs | 12 | ||||
| -rw-r--r-- | src/library/boxed.rs | 8 | ||||
| -rw-r--r-- | src/library/font.rs | 8 | ||||
| -rw-r--r-- | src/library/page.rs | 5 | ||||
| -rw-r--r-- | src/library/spacing.rs | 5 | ||||
| -rw-r--r-- | src/library/val.rs | 7 |
6 files changed, 22 insertions, 23 deletions
diff --git a/src/library/align.rs b/src/library/align.rs index 1ff07b89..115793b1 100644 --- a/src/library/align.rs +++ b/src/library/align.rs @@ -12,9 +12,9 @@ use super::*; /// There may not be two alignment specifications for the same axis. pub fn align(call: FuncCall, _: &ParseState) -> Pass<SyntaxNode> { let mut f = Feedback::new(); - let mut args = call.header.args; + let mut args = call.args; let node = AlignNode { - body: call.body.map(|s| s.v), + content: args.pos.get::<SyntaxTree>(), aligns: args.pos.all::<Spanned<SpecAlign>>().collect(), h: args.key.get::<Spanned<SpecAlign>>("horizontal", &mut f), v: args.key.get::<Spanned<SpecAlign>>("vertical", &mut f), @@ -25,7 +25,7 @@ pub fn align(call: FuncCall, _: &ParseState) -> Pass<SyntaxNode> { #[derive(Debug, Clone, PartialEq)] struct AlignNode { - body: Option<SyntaxTree>, + content: Option<SyntaxTree>, aligns: SpanVec<SpecAlign>, h: Option<Spanned<SpecAlign>>, v: Option<Spanned<SpecAlign>>, @@ -64,9 +64,9 @@ impl Layout for AlignNode { } } - Pass::new(match &self.body { - Some(body) => { - let layouted = layout(body, ctx).await; + Pass::new(match &self.content { + Some(tree) => { + let layouted = layout(tree, ctx).await; f.extend(layouted.feedback); vec![AddMultiple(layouted.output)] } diff --git a/src/library/boxed.rs b/src/library/boxed.rs index 5191480f..3ca3ae44 100644 --- a/src/library/boxed.rs +++ b/src/library/boxed.rs @@ -8,9 +8,9 @@ use super::*; /// - `height`: The height of the box (length of relative to parent's height). pub fn boxed(call: FuncCall, _: &ParseState) -> Pass<SyntaxNode> { let mut f = Feedback::new(); - let mut args = call.header.args; + let mut args = call.args; let node = BoxNode { - body: call.body.map(|s| s.v).unwrap_or(SyntaxTree::new()), + content: args.pos.get::<SyntaxTree>().unwrap_or(SyntaxTree::new()), width: args.key.get::<ScaleLength>("width", &mut f), height: args.key.get::<ScaleLength>("height", &mut f), }; @@ -20,7 +20,7 @@ pub fn boxed(call: FuncCall, _: &ParseState) -> Pass<SyntaxNode> { #[derive(Debug, Clone, PartialEq)] struct BoxNode { - body: SyntaxTree, + content: SyntaxTree, width: Option<ScaleLength>, height: Option<ScaleLength>, } @@ -45,7 +45,7 @@ impl Layout for BoxNode { ctx.spaces[0].expansion.vertical = true; }); - layout(&self.body, ctx).await.map(|out| { + layout(&self.content, ctx).await.map(|out| { let layout = out.into_iter().next().unwrap(); vec![Add(layout)] }) diff --git a/src/library/font.rs b/src/library/font.rs index 356acc58..d445a246 100644 --- a/src/library/font.rs +++ b/src/library/font.rs @@ -20,10 +20,10 @@ use super::*; /// ``` pub fn font(call: FuncCall, _: &ParseState) -> Pass<SyntaxNode> { let mut f = Feedback::new(); - let mut args = call.header.args; + let mut args = call.args; let node = FontNode { - body: call.body.map(|s| s.v), + content: args.pos.get::<SyntaxTree>(), size: args.pos.get::<ScaleLength>(), style: args.key.get::<FontStyle>("style", &mut f), weight: args.key.get::<FontWeight>("weight", &mut f), @@ -53,7 +53,7 @@ pub fn font(call: FuncCall, _: &ParseState) -> Pass<SyntaxNode> { #[derive(Debug, Clone, PartialEq)] struct FontNode { - body: Option<SyntaxTree>, + content: Option<SyntaxTree>, size: Option<ScaleLength>, style: Option<FontStyle>, weight: Option<FontWeight>, @@ -91,7 +91,7 @@ impl Layout for FontNode { text.fallback.flatten(); - Pass::okay(match &self.body { + Pass::okay(match &self.content { Some(tree) => vec![ SetTextStyle(text), LayoutSyntaxTree(tree), diff --git a/src/library/page.rs b/src/library/page.rs index 0a018994..b47749ea 100644 --- a/src/library/page.rs +++ b/src/library/page.rs @@ -18,8 +18,7 @@ use super::*; /// - `flip`: Flips custom or paper-defined width and height (boolean). pub fn page(call: FuncCall, _: &ParseState) -> Pass<SyntaxNode> { let mut f = Feedback::new(); - let mut args = call.header.args; - expect_no_body(call.body, &mut f); + let mut args = call.args; let node = PageNode { paper: args.pos.get::<Paper>(), width: args.key.get::<Length>("width", &mut f), @@ -79,7 +78,7 @@ impl Layout for PageNode { /// `pagebreak`: Ends the current page. pub fn pagebreak(call: FuncCall, _: &ParseState) -> Pass<SyntaxNode> { let mut f = Feedback::new(); - drain_args(call.header.args, &mut f); + drain_args(call.args, &mut f); Pass::node(PageBreakNode, f) } diff --git a/src/library/spacing.rs b/src/library/spacing.rs index 14c6135a..ad30a122 100644 --- a/src/library/spacing.rs +++ b/src/library/spacing.rs @@ -20,12 +20,11 @@ pub fn v(call: FuncCall, _: &ParseState) -> Pass<SyntaxNode> { fn spacing(call: FuncCall, axis: SpecAxis) -> Pass<SyntaxNode> { let mut f = Feedback::new(); - let mut args = call.header.args; - expect_no_body(call.body, &mut f); + let mut args = call.args; let node = SpacingNode { spacing: args.pos.expect::<ScaleLength>(&mut f) .map(|s| (axis, s)) - .or_missing(call.header.name.span, "spacing", &mut f), + .or_missing(call.name.span, "spacing", &mut f), }; drain_args(args, &mut f); Pass::node(node, f) diff --git a/src/library/val.rs b/src/library/val.rs index bbbeb1d1..6e83571a 100644 --- a/src/library/val.rs +++ b/src/library/val.rs @@ -5,21 +5,22 @@ use super::*; /// This is also the fallback function, which is used when a function name /// cannot be resolved. pub fn val(call: FuncCall, _: &ParseState) -> Pass<SyntaxNode> { + let mut args = call.args; let node = ValNode { - body: call.body.map(|s| s.v), + content: args.pos.get::<SyntaxTree>(), }; Pass::node(node, Feedback::new()) } #[derive(Debug, Clone, PartialEq)] struct ValNode { - body: Option<SyntaxTree>, + content: Option<SyntaxTree>, } #[async_trait(?Send)] impl Layout for ValNode { async fn layout<'a>(&'a self, _: LayoutContext<'_>) -> Pass<Commands<'a>> { - Pass::okay(match &self.body { + Pass::okay(match &self.content { Some(tree) => vec![LayoutSyntaxTree(tree)], None => vec![], }) |
