From 790dc9e6670b0d90c9ff68a0981cdbfb7d9c536a Mon Sep 17 00:00:00 2001 From: Laurenz Date: Fri, 12 Feb 2021 22:55:26 +0100 Subject: [PATCH] =?UTF-8?q?Cleaning=20=F0=9F=A7=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/eval/value.rs | 102 -------------------------- src/exec/mod.rs | 4 +- src/exec/state.rs | 4 +- src/geom/length.rs | 2 +- src/layout/background.rs | 21 +++--- src/library/layout.rs | 2 +- src/pretty.rs | 124 +++++++++++++++++++++++++++----- tests/lang/ref/call-args.png | Bin 3295 -> 3432 bytes tests/lang/ref/call-bracket.png | Bin 1611 -> 12516 bytes tests/lang/ref/call-chain.png | Bin 8692 -> 0 bytes tests/lang/ref/call-invalid.png | Bin 1706 -> 1766 bytes tests/lang/ref/comment.png | Bin 1168 -> 682 bytes tests/lang/ref/repr.png | Bin 8355 -> 8451 bytes tests/lang/typ/call-bracket.typ | 38 ++++++++-- tests/lang/typ/call-chain.typ | 31 -------- tests/lang/typ/comment.typ | 4 +- tests/lang/typ/expr-binary.typ | 1 - tests/lang/typ/repr.typ | 2 +- tests/library/ref/box.png | Bin 5087 -> 2704 bytes tests/library/typ/box.typ | 25 +++---- 20 files changed, 167 insertions(+), 193 deletions(-) delete mode 100644 tests/lang/ref/call-chain.png delete mode 100644 tests/lang/typ/call-chain.typ diff --git a/src/eval/value.rs b/src/eval/value.rs index ce89d453..2879e6d6 100644 --- a/src/eval/value.rs +++ b/src/eval/value.rs @@ -8,7 +8,6 @@ use super::*; use crate::color::Color; use crate::exec::ExecContext; use crate::geom::{Angle, Length, Linear, Relative}; -use crate::pretty::{Pretty, Printer}; use crate::syntax::Tree; /// A computational value. @@ -103,22 +102,6 @@ pub type ValueArray = Vec; /// A dictionary value: `(color: #f79143, pattern: dashed)`. pub type ValueDict = BTreeMap; -impl Pretty for ValueDict { - fn pretty(&self, p: &mut Printer) { - p.push('('); - if self.is_empty() { - p.push(':'); - } else { - p.join(self, ", ", |(key, value), p| { - p.push_str(key); - p.push_str(": "); - value.pretty(p); - }); - } - p.push(')'); - } -} - /// A template value: `[*Hi* there]`. pub type ValueTemplate = Vec; @@ -156,7 +139,6 @@ impl TemplateAny { Self { name: name.into(), f: Rc::new(f) } } - /// The name of the template node. pub fn name(&self) -> &str { &self.name @@ -358,13 +340,6 @@ impl ValueArgs { } } -// This is a workaround because `-> impl Trait + 'a + 'b` does not work. -// -// See also: https://github.com/rust-lang/rust/issues/49431 -#[doc(hidden)] -pub trait Captures<'a> {} -impl<'a, T: ?Sized> Captures<'a> for T {} - /// An argument to a function call: `12` or `draw: false`. #[derive(Debug, Clone, PartialEq)] pub struct ValueArg { @@ -681,80 +656,3 @@ macro_rules! typify { } }; } - -#[cfg(test)] -mod tests { - use super::*; - use crate::color::RgbaColor; - use crate::pretty::pretty; - - #[track_caller] - fn test_pretty(value: impl Into, exp: &str) { - assert_eq!(pretty(&value.into()), exp); - } - - #[test] - fn test_pretty_print_value() { - // Simple values. - test_pretty(Value::None, "none"); - test_pretty(false, "false"); - test_pretty(12, "12"); - test_pretty(3.14, "3.14"); - test_pretty(Length::pt(5.5), "5.5pt"); - test_pretty(Angle::deg(90.0), "90.0deg"); - test_pretty(Relative::ONE / 2.0, "50.0%"); - test_pretty(Relative::new(0.3) + Length::cm(2.0), "30.0% + 2.0cm"); - test_pretty(Color::Rgba(RgbaColor::new(1, 1, 1, 0xff)), "#010101"); - test_pretty("hello", r#""hello""#); - - // Array. - test_pretty(Value::Array(vec![]), "()"); - test_pretty(vec![Value::None], "(none,)"); - test_pretty(vec![Value::Int(1), Value::Int(2)], "(1, 2)"); - - // Dictionary. - let mut dict = BTreeMap::new(); - test_pretty(dict.clone(), "(:)"); - dict.insert("one".into(), Value::Int(1)); - test_pretty(dict.clone(), "(one: 1)"); - dict.insert("two".into(), Value::Bool(false)); - test_pretty(dict, "(one: 1, two: false)"); - - // Template. - test_pretty( - vec![ - TemplateNode::Tree { - tree: Rc::new(vec![Node::Strong]), - map: HashMap::new(), - }, - TemplateNode::Any(TemplateAny::new("example", |_| {})), - ], - "[*]", - ); - - // Function and arguments. - test_pretty(ValueFunc::new("nil", |_, _| Value::None), ""); - test_pretty( - ValueArgs { - span: Span::ZERO, - items: vec![ - ValueArg { - name: Some(Spanned::zero("a".into())), - value: Spanned::zero(Value::Int(1)), - }, - ValueArg { - name: None, - value: Spanned::zero(Value::Int(2)), - }, - ], - }, - "", - ); - - // Any. - test_pretty(ValueAny::new(1), "1"); - - // Error. - test_pretty(Value::Error, ""); - } -} diff --git a/src/exec/mod.rs b/src/exec/mod.rs index a0ed946d..57fe8138 100644 --- a/src/exec/mod.rs +++ b/src/exec/mod.rs @@ -145,8 +145,8 @@ impl Exec for Value { impl Exec for ValueTemplate { fn exec(&self, ctx: &mut ExecContext) { - for part in self { - part.exec(ctx); + for node in self { + node.exec(ctx); } } } diff --git a/src/exec/state.rs b/src/exec/state.rs index 21fb7fb6..977b0b73 100644 --- a/src/exec/state.rs +++ b/src/exec/state.rs @@ -44,8 +44,8 @@ pub struct PageSettings { pub size: Size, /// Whether the expand the pages to the `size` or to fit the content. pub expand: Spec, - /// The amount of white space in the order [left, top, right, bottom]. If a - /// side is set to `None`, the default for the paper class is used. + /// The amount of white space on each side of the page. If a side is set to + /// `None`, the default for the paper class is used. pub margins: Sides>, } diff --git a/src/geom/length.rs b/src/geom/length.rs index db28761b..b0ca24df 100644 --- a/src/geom/length.rs +++ b/src/geom/length.rs @@ -107,7 +107,7 @@ impl Display for Length { use LengthUnit::*; // Format with the unit that yields the shortest output, preferring - // larger / metrics units when tied. + // larger / metric units when tied. let mut buf = ryu::Buffer::new(); let unit = [Cm, Mm, In, Pt] .iter() diff --git a/src/layout/background.rs b/src/layout/background.rs index 07248e02..6b605d7f 100644 --- a/src/layout/background.rs +++ b/src/layout/background.rs @@ -1,11 +1,11 @@ use super::*; -/// A node that represents a rectangular box. +/// A node that places a rectangular filled background behind another node. #[derive(Debug, Clone, PartialEq)] pub struct NodeBackground { /// The background fill. pub fill: Fill, - /// The child node to be filled in. + /// The child node to be filled. pub child: Node, } @@ -13,17 +13,12 @@ impl Layout for NodeBackground { fn layout(&self, ctx: &mut LayoutContext, areas: &Areas) -> Layouted { let mut layouted = self.child.layout(ctx, areas); - if let Some(first) = layouted.frames_mut().first_mut() { - first.elements.insert( - 0, - ( - Point::ZERO, - Element::Geometry(Geometry { - shape: Shape::Rect(first.size), - fill: self.fill.clone(), - }), - ), - ) + for frame in layouted.frames_mut() { + let element = Element::Geometry(Geometry { + shape: Shape::Rect(frame.size), + fill: self.fill.clone(), + }); + frame.elements.insert(0, (Point::ZERO, element)) } layouted diff --git a/src/library/layout.rs b/src/library/layout.rs index 3577ee36..7fc7154f 100644 --- a/src/library/layout.rs +++ b/src/library/layout.rs @@ -293,6 +293,7 @@ pub fn page(ctx: &mut EvalContext, args: &mut ValueArgs) -> Value { None }) }); + let width = args.get(ctx, "width"); let height = args.get(ctx, "height"); let margins = args.get(ctx, "margins"); @@ -352,7 +353,6 @@ pub fn page(ctx: &mut EvalContext, args: &mut ValueArgs) -> Value { std::mem::swap(&mut page.expand.horizontal, &mut page.expand.vertical); } - ctx.set_dirs(Gen::new(main, cross)); let mut softness = ctx.end_page_group(|_| false); diff --git a/src/pretty.rs b/src/pretty.rs index 025bc66c..2e16a914 100644 --- a/src/pretty.rs +++ b/src/pretty.rs @@ -508,6 +508,22 @@ impl Pretty for ValueArray { } } +impl Pretty for ValueDict { + fn pretty(&self, p: &mut Printer) { + p.push('('); + if self.is_empty() { + p.push(':'); + } else { + p.join(self, ", ", |(key, value), p| { + p.push_str(key); + p.push_str(": "); + value.pretty(p); + }); + } + p.push(')'); + } +} + impl Pretty for ValueTemplate { fn pretty(&self, p: &mut Printer) { p.push('['); @@ -529,7 +545,7 @@ impl Pretty for TemplateNode { impl Pretty for TemplateAny { fn pretty(&self, p: &mut Printer) { - p.push('<'); + p.push_str("'); } @@ -537,7 +553,7 @@ impl Pretty for TemplateAny { impl Pretty for ValueFunc { fn pretty(&self, p: &mut Printer) { - p.push('<'); + p.push_str("'); } @@ -545,9 +561,9 @@ impl Pretty for ValueFunc { impl Pretty for ValueArgs { fn pretty(&self, p: &mut Printer) { - p.push('<'); + p.push('('); p.join(&self.items, ", ", |item, p| item.pretty(p)); - p.push('>'); + p.push(')'); } } @@ -613,13 +629,22 @@ pretty_display! { #[cfg(test)] mod tests { + use std::collections::{BTreeMap, HashMap}; + use std::rc::Rc; + use super::*; + use crate::color::RgbaColor; use crate::env::Env; use crate::eval::eval; use crate::parse::parse; #[track_caller] - fn test(src: &str, exp: &str) { + fn roundtrip(src: &str) { + test_parse(src, src); + } + + #[track_caller] + fn test_parse(src: &str, exp: &str) { let tree = parse(src).output; let found = pretty(&tree); if exp != found { @@ -631,8 +656,8 @@ mod tests { } #[track_caller] - fn roundtrip(src: &str) { - test(src, src); + fn test_value(value: impl Into, exp: &str) { + assert_eq!(pretty(&value.into()), exp); } #[test] @@ -659,11 +684,11 @@ mod tests { roundtrip("```\n`\n```"); roundtrip("``` ` ```"); roundtrip("````\n```\n```\n````"); - test("```lang```", "```lang ```"); - test("```1 ```", "``"); - test("``` 1```", "`1`"); - test("``` 1 ```", "`1 `"); - test("```` ` ````", "``` ` ```"); + test_parse("```lang```", "```lang ```"); + test_parse("```1 ```", "``"); + test_parse("``` 1```", "`1`"); + test_parse("``` 1 ```", "`1 `"); + test_parse("```` ` ````", "``` ` ```"); } #[test] @@ -679,7 +704,7 @@ mod tests { roundtrip("{20.0%}"); roundtrip("{#abcdef}"); roundtrip(r#"{"hi"}"#); - test(r#"{"let's \" go"}"#, r#"{"let's \" go"}"#); + test_parse(r#"{"let's \" go"}"#, r#"{"let's \" go"}"#); // Arrays. roundtrip("{()}"); @@ -720,8 +745,8 @@ mod tests { roundtrip("#[v 1]"); roundtrip("#[v 1, 2][*Ok*]"); roundtrip("#[v 1 | f 2]"); - test("{#[v]}", "{v()}"); - test("#[v 1, #[f 2]]", "#[v 1 | f 2]"); + test_parse("{#[v]}", "{v()}"); + test_parse("#[v 1, #[f 2]]", "#[v 1 | f 2]"); // Keywords. roundtrip("#let x = 1 + 2"); @@ -738,9 +763,70 @@ mod tests { } #[test] - fn test_pretty_print_str() { - assert_eq!(pretty("\n"), r#""\n""#); - assert_eq!(pretty("\\"), r#""\\""#); - assert_eq!(pretty("\""), r#""\"""#); + fn test_pretty_print_value() { + // Simple values. + test_value(Value::None, "none"); + test_value(false, "false"); + test_value(12, "12"); + test_value(3.14, "3.14"); + test_value(Length::pt(5.5), "5.5pt"); + test_value(Angle::deg(90.0), "90.0deg"); + test_value(Relative::ONE / 2.0, "50.0%"); + test_value(Relative::new(0.3) + Length::cm(2.0), "30.0% + 2.0cm"); + test_value(Color::Rgba(RgbaColor::new(1, 1, 1, 0xff)), "#010101"); + test_value("hello", r#""hello""#); + test_value("\n", r#""\n""#); + test_value("\\", r#""\\""#); + test_value("\"", r#""\"""#); + + // Array. + test_value(Value::Array(vec![]), "()"); + test_value(vec![Value::None], "(none,)"); + test_value(vec![Value::Int(1), Value::Int(2)], "(1, 2)"); + + // Dictionary. + let mut dict = BTreeMap::new(); + test_value(dict.clone(), "(:)"); + dict.insert("one".into(), Value::Int(1)); + test_value(dict.clone(), "(one: 1)"); + dict.insert("two".into(), Value::Bool(false)); + test_value(dict, "(one: 1, two: false)"); + + // Template. + test_value( + vec![ + TemplateNode::Tree { + tree: Rc::new(vec![Node::Strong]), + map: HashMap::new(), + }, + TemplateNode::Any(TemplateAny::new("example", |_| {})), + ], + "[*]", + ); + + // Function and arguments. + test_value(ValueFunc::new("nil", |_, _| Value::None), ""); + test_value( + ValueArgs { + span: Span::ZERO, + items: vec![ + ValueArg { + name: Some(Spanned::zero("a".into())), + value: Spanned::zero(Value::Int(1)), + }, + ValueArg { + name: None, + value: Spanned::zero(Value::Int(2)), + }, + ], + }, + "(a: 1, 2)", + ); + + // Any. + test_value(ValueAny::new(1), "1"); + + // Error. + test_value(Value::Error, ""); } } diff --git a/tests/lang/ref/call-args.png b/tests/lang/ref/call-args.png index 99acd84b34451cdb399dba8bd84fd25d8828a317..b288be22459f58f60f732d3892c0cb847e017544 100644 GIT binary patch literal 3432 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 diff --git a/tests/lang/ref/call-bracket.png b/tests/lang/ref/call-bracket.png index 347907b891bd01a7741f791bf856520c30aa1309..b5b2f767936f3c88022aae6bee88a0dbc981aa97 100644 GIT binary patch literal 12516 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 z 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 literal 1611 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 YkGU$>saC(z0#wv^y85}Sb4q9e0L@MN7ytkO diff --git a/tests/lang/ref/repr.png b/tests/lang/ref/repr.png index 110e26c08af3164ca15506018223cb876a275d42..16c7ea9588e41d1e9fb5eb45f186b7cd3fd79225 100644 GIT binary patch literal 8451 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 dl?9wK9gl3Eddg8>25ukue*oWodz%0N literal 8355 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 G+p{VyLayGCjg7Un z_3=HI5xSV~c6%5Z85tTH!nIssP~={yyWzG&IvNhz+S)sJ?$q6U0IFsQRkMIX^mah@ zs6+JCRbd-9ZiGM}YRZ}rWi4ez)%A)h>l7hMimD(W%`&XEg2MV(dpp}xKXggE7s51| z(AwUEetL~R;*IojP=OszHu^dzUPSt9+h>l;WY*}QWKxMn|Ec(YkY{i)aT^hL(xR&( zqFQxshD&zchu9Kto7^@*>9TZK_38ELTJbcUY7txw=yU9I1RsG$IDTbo4;oOqpl|&) z0ISV1V3FE;6Xmh+{^f-;ABsVtCPqJIn2@^o4U{-GoKr{=;$;0Q0HTBjpcZ^B`yKPq zv)@|H!8}oU90YxCq7T^}l7~k`se5_;tD87d+r;-l&ytaWHHgk@cp6hOIv|SF52;Ic z7Q=EAfQhM*PO2BPQk8gQ5QUiERZ~?1Ugn+GI761sfT&E3&m2UAXp)W&7kzmCVbM{^ z`O(xKQuK*CX)-uR?&JW78ko`#v7vcu^V=g+zCh6`dvEh)KS1c;fW08fL4)l9x63`q zg9woh!}hY6VN4_&2-%a*e7U0hMvr&>ztj$u<3)klEM7(*h5Zf2yc=c+4_9yT{S!aq(y| z3baF2BOOR}UT$P^9V4%9Ex$w`^8W2!mSp$#G{Nv=&PXq*aI}xt6Hk-8T{{y6&rHqK zJI%RLZx3Ov(co4Th%lchBKZN;oIAuATH-OAbhPU zy&+pTlUJX{Nxj{vlLlmT;!pj;azPb;z@I>u+}JU#B!$gjN}y#lSBs}YOAT}px$2l- zu}$DELyZh%E?!2r4jLmt1*OjZ)ega0FPc#%nCg@_WMuK|`|a!u`jpihTxZj~v}&&4 z!hqN8DNIS6XBa(F@pO#`Q6)3Utj*xk9L6kRlnGbyes@9jV;zQopvApnKDsgwiRNvv zBPl%&u=Uu_fJI0*8mN-Q`WC^WP+B!QfJ-k^eU(hCpk6M4G2d~o0Hr|_u0)TX9?s9B zyV{Ija1)G!31}NAn(U45is)cdsbQl1i7}b96f$<}$hYYC*vSnXiM_9BlwJdt`}9r) z!lG2H?cEifPg`hg*%Og}!IB-3x}`aW|0G_Fm%K*qE-Y}6+CGH~te*@~1d(AC)r0%3 z7tR1lPm!(7ugf^i*$+zD7;8pf5x3RhtgkPs6&{-vbx{k_%Eq82d;Beq_n<6)&8P>95Ipw$B(ogbiNnAJDpTuEBZ!Jqih|G) z=@eg5%l}V^)$uxaJDJR9gEb78A90?u3#>S3X&rTv{WCF5mO(prF0ZO)2pUFU|6A1( z-9NVp5aT9l`9%lud(-^lX|u$lu0s#ZTzGsIxveX7s+;A8t!e#Ro^;27wz{fF%7d6z zN@<@US-1)CZ5epU%ck+OX{D%2i@i-jK~y)o(1(>#b}^OOoRaUKmR*=8YJz(`8x}W> zMTSpinB=ynl!qa}pV82;bFSIu`-V`{D~vb<7Z3b2;}>2j9n54Ot@B|u69h4u_1NiO zN_Vi`9O%z>%mkb7-41@p0~ZhGJ!;2AxA1lIT(S&WY{v;S(?s-?R&!C>8}EwD?q4?L!9|jm=(Av({Ve}1r#81M~pFtoD$rFlgoXV?Igpe;5BL*Rr^;0)aDH@#Rf3 zmCnqQ7vI%38%kUtu+IhjpLg;hVd*pbI^31{V#VvTp2~y3YCcUNU!KiZCy$lV<*4OD z%hG)Er>R$=|D0oGoLQ~xpM-unHI~iFIoa_0FC@n{3}r3;{YPP{VFA@G3!KOl><>HJ J6@PdB`fryqe9Hg; literal 5087 zcmeHLdsLHG5(g<_p&GZk25mxUeOF#Scm@nmEg*rgT1pkago+X|je!^?1VT_&X^ViC zR%{4_JtFKHNy=7azWbY* zJ9F=R_sq=wK8uMCTk5#R(ZfLt!u|1+seh8K&)>ZU_H98b7NF-8z zz@9BJ2f~s7==QGY&jRQ1|&ZpQ$DD3|k4*h-|umGZ-0a=}vX`}k&8U7F9a{?I= z^o|0XAu?YF{%8Ny(^F%@7=emD(KBIDYmG3XoM0YAq_MJ z?8!7>j8+z}l?a|3J1pGpnPM?hl?R|>0sTIJ1Fj%8#-*BO8WJ2rL_)^|eO4Yjf8+ck z9&YyIPEKK531-gC>U?39LgSFLx-P9tMB7H%106eH)#W(7lNC6xl{Yt{vdn{jHp*;| zKalfIuhT9%R^fD1Kor=hRx0dwL_lNK0>MQTTkjVH7B4N0U~cRu&D>Yzy@3;oOlKe| zQ{O{uS6Vm0Dd=NRC-27(429f~-kXb-AIH1l4o{I;!a+OMkUCvNQH3MZyDl*y^7-!lF6rEb{6X8gtheKL_zMGy(fmCBTG7)b$G{UHyXzv$p>RF?d{VKV@B4DtDOUvD8Es}apvum#dQ)0(-5+s+wluyUM?exqw13-`ia z)m2_>OAg2g45I(&gYYV7D@|s)@SAPO3aiqg8x!#j zBHH3S(5esp_`?~OU5dPU(Kl{Ylx7mx0Z3ppUq@d;rL2aljZ zzs5SUPm?#`d%o{2_1xqM@TB(?rQH`Zqi!)p8DIY^C)OfWPgJ*>DAf;k-RtwBEP=bQUGtI&=#y&xkQ3jHmjyxU_ zUD6nPEDaQyCvncNiXd`Du|q}ERG))KA&f2B1Mt;l9nwr+nZPISA=r0ab5%E?1xW7F z)(4eVYq3m{3g;OuD{IP5G>;2S`Z}&usc1-}cX{gzi)wnOR-K^)8QxGoco*0RQqoiD z)jF+fX?xo+!yS;HXLYsBBYm$DMAH=azx1kG-coq;L_nl+JSp~*rjEpDWfGl`+9}E9 zIP?nquq?KJ^AZy!3Q@+bBQv&x0u+K-S44P)H57H7gv**FkU~y>Jl0{6nO5XU6GcI| zPiy?094kO?BAi{A+SG?my`)Km@t~dN=q^O`G7aWKgo}JF6w(z3^2F197m*MNKd?-L z0qf~IC3E%kT3?9jdIE7Vu3s2HNb#5Ce7m=#7s}C0Qk#f9We5^U)jHeoRZB~C=k`99 z%SWZba4Dxnp*G=;9WRB={OL69r!2hk`LpneUhAQvyf#J)|3%_9)@o_6D{HINT^ZMkaI?dVtQr+K_3%ejmQjZpO^-Vr zr#}LkbmB~7r?Ys!>DcUenwmqB7*ysPi+DYem4uVuQ4Pj%9EXxGH^AZaojacjba5QI z5H-i&qckXyvq{u=tEG(nmGhR%#oEGxrZtFk-08THj0k0%+Tss{v8`q58Xc!);(@TR z`7OXL&ZMY9rN-`xrSuNo;tx3#Oi<@k%Gtf#=;V9fP0dkH!E>xkW2SN5U(seM_ zD6Uxa?|$StTaN!bHR0hG=@LMqwFoznP>+lbiuHgi@Pvdz!;2}WDG>|g?FFX&6a2H` z&qUT43VX%b1%2p(>aT}m#}xKsl@~n9BLvxNw2PP(PJh4n5&*NelEAEFET#s%BnK~X z?JwChb^~BTa{OJP|CT7IOr8!aBN#m_cJhX-qPfpBU#!=D;j!?93MwL>JWfv;Ke3T^FO%Qyb9v0Ain6O_|@6@oo5HU mdDW>r^tWm`bE{