summaryrefslogtreecommitdiff
path: root/src/library
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2020-08-14 20:43:03 +0200
committerLaurenz <laurmaedje@gmail.com>2020-08-14 20:43:03 +0200
commitc8f6b5bd5c55845562571c196a0b2c1a7ca20f71 (patch)
tree0e5066064f1bf81f847cb1cfe23578e2f42fe1e8 /src/library
parent650c712eabc6f665a0a0cc2a47fb5b90cf715d87 (diff)
Desugar body into last argument 🍩
Diffstat (limited to 'src/library')
-rw-r--r--src/library/align.rs12
-rw-r--r--src/library/boxed.rs8
-rw-r--r--src/library/font.rs8
-rw-r--r--src/library/page.rs5
-rw-r--r--src/library/spacing.rs5
-rw-r--r--src/library/val.rs7
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![],
})