From 6e75ebdc2d3f10af1126121ac8addbc0ce8bbb8f Mon Sep 17 00:00:00 2001 From: Christopher Date: Sat, 16 Sep 2017 19:44:26 -0500 Subject: [PATCH] Fix #337 - Array/Matrix trim trailing empty line (#479) --- src/environments.js | 8 ++++++++ .../images/AccentsText-chrome.png | Bin 4564 -> 4564 bytes .../images/ArrayRemoveEmptyLine-chrome.png | Bin 0 -> 6615 bytes .../images/ArrayRemoveEmptyLine-firefox.png | Bin 0 -> 6636 bytes test/screenshotter/ss_data.yaml | 5 +++++ 5 files changed, 13 insertions(+) create mode 100644 test/screenshotter/images/ArrayRemoveEmptyLine-chrome.png create mode 100644 test/screenshotter/images/ArrayRemoveEmptyLine-firefox.png diff --git a/src/environments.js b/src/environments.js index 6c43c759..9e89a961 100644 --- a/src/environments.js +++ b/src/environments.js @@ -96,6 +96,14 @@ function parseArray( if (next === "&") { parser.consume(); } else if (next === "\\end") { + // Arrays terminate newlines with `\crcr` which consumes a `\cr` if + // the last line is empty. + const lastRow = body[body.length - 1][0].value; + if (body.length > 1 + && lastRow.value.length === 1 + && lastRow.value[0].value.length === 0) { + body.pop(); + } break; } else if (next === "\\\\" || next === "\\cr") { const cr = parser.parseFunction(); diff --git a/test/screenshotter/images/AccentsText-chrome.png b/test/screenshotter/images/AccentsText-chrome.png index 0c9f8b8ae11a5614eace8247bb9f8225fde10cf1..5a27d560f0d006023d64c8f3fdc8512ef9ade455 100644 GIT binary patch delta 2197 zcmcbjd_{S}-TF1I4D)RBkDlV5FUc=wpZqg%y1)2Mp$pT+7%S>cKeWxf_#pT2!JVn! zSiUT&WH8g0p7-;W_tyu~UthnPy>uJvmxYxK>*VMDEdBam)5QnZf^IYYx?sbQFE#h4 z_3MMLetq3H+bfs*h4W*EntIRLXZM5o&3cjwTsP)2)@H~wtbVP$zrL#2cE<|2J?HWn z6B09J8iL#0>t22P_4UlEhYA1LyWVoWaJ|f6V`OUcSzeAeZ?!(dI_+(m3*>#7HhMVNs@jX}VNL16}i!-g=%8zq0M{r}8V?z8@TN&nx9D|HQW zTR9HMF7MCdG}!Xz5Bur2oG&~dGvxf~%@Y4zyXVQa20Ihp1NM7!Dqc;W_jhW0echM% z`htYH4duJ#IdlwonF~H&dN}d_&uX{D?S5;x3*vTy!b+?`|Glxz2lxDWJ@ajL=^fBL z3JUr_hJ9O;D(=MpdOO$n|HcZ7&6jK$6C5*z8eWE9|Gz)pxcpu0*DLcyZi!y#R%6_; z%I?i?d*kwV->Tj{wPSB-UE;{F?N3U5?Tz#IQj4BVsQM(&4T`E}hMsvG0e_#a+x&io zy1xD<%?0wjOdoCqGQ7K8`mL+#)7jKA)-Or_7%Nf&Yp;C2`S$qV{p-@}S6$fFV0Xrz z!Ms^b!8@hOW3Pftc?CM%!%AP;eFW#_XW!JpZO1* z)GztRUtV1h;qXkpA=%yi@03r~j8$g;8Ri&p9nde|Ah{s^Gyj40y-Wp8?6Vnvnf_;( zW6X6RP&S9{#q~eT1y3~?w5@OOTv-2;{XySH_J8O9{P-_&WA|BmhTGHnnLfOieZ%%5 zwAr3bs-9y*+4=Hqb}u$Dh)rT+l&F3E|7ZQb5AQ>-7MZg)vo1L)+vs+mb1!3l&@5OY;a+r6Jy2y z4~z@*XGrqiGn1JUotC)3IhAQcW#r$E2l`i=^Lyrr|C#K|`oBI~pkepByFZRhOJBad z-_7`Z?%hvE{{K6_|E_V}_kX+P>)yOvd%pJ_-?rLcH+B1MORfi}e&Z6krohl1dj5I% z@%Qt7+q}=!*p<3Kgs~xkiQ%9W%Y)D6_kPS=t!G&}e=d8?M^EwkqEGA&(%1GBzkDMd z?EdeY`?Z>H$K2x!Y#$uG^rwD1L;oBr%V)>mmi<4UFK<8V|I7Y=3!c7f@Z0*s^ue+D z66^{4*~_b+Uu{QlOZtaOLxw`%wwY@Y1hu>JkNa~GRWmT!-ceBruUpXuyBfe%Mx zpa0J@D19NE8^-qQf)>MfeQEZDug1m8=UeTWWuwM(WA@hHS|8;7^%(6e%D>e%ch=v} z+NyV``~DObo6@8FN|6SrUlutqr1{Mfd7y31`>*g%$#2!hxG6g{U)=RR z#%NKJ8mjv*s!_BtPGqO{hxW32(o1%&IMU>x-^KEvef@<1VjSpD8JO%D8Cwo-4-t50W8Kl|s$e~BB` zQ@9SC(f8r{Al@3rVim5%@PF@p6$bV^oh>RCwgxd)JU*At^e1hhYU4Ult^>Tq`?x~> z*3L9-TsM{Tz+&yyS+5p%A7{MrRqo({xYa%k=j3F5pDwGZPblL2(5TeS6ss-N@KBtw z|IV(*?e0Cy8;(q8OmNf?Y|zzTzsmK$O~uB#BF+y|@oWvP3tSlVNi7y}9-VNMQ>v&4m$dV7DCfWNSor^X|965lU$&KH zGsk92He6<7|NH9hv$XeuHLkn2Hm=*sec(CU@jqX0m(QN_*X_fm{H;+kFY2RKGyHil z;h^UJ{Qj5qGh&$jc+EcAcy24#0n7jAOaHyGZCanZ+3LbpGsYd2702ekH>!X9MD8H_ zPFsmLXQNmi+**3rxbE!dy~Op#_zkI?XzvhX|GGDqF30WqeD>9e`@c`jU-$Ef`a7-d zsSBq3WKYQ4+RprZPwoGC`TVhwd8ZvTnHUbTFf>iAGT_+2uz4c4F5Bh}+`^1v-|AWZ XIjSgZm{!ifz`)??>gTe~DWM4f)dE$! delta 2218 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

>1Y2&b#pT znf1X^4=RU{hcY_uzLIKcNcz|v&;YAy8qSwn%oz$pK?xv zaKG|TvFv%N7p|TRVc+JzyJVc!zvEZK&ENa2R;RxDwQvFd`>JaW`d&;IY?R+@m}wth zS#kQ``dj-Xemr>D!Cz*Zy+GWR@y3qtDYMu8`n6_${IzZW%QI*G*nC-#z03|QDY3V3 zS73elwSN69?gIyPKigGWEqZg4(c%3mrVWMrPrBWGw%fSw&)RJaHnrcjh_9W=QxWie zGh0=lSi{B4%X|OanJ2#9p81c*`OQpAxtKTnyf=C6uD4J3uKPPTS8cM~t=DrL*jpJh z-tl~Cio5=A@5w2v&%Z47ThM%op-0aC=GxowHy>a6s?YGYoSQMv|0v^*f?r$KKmWet z%a^!Drvw=+Nl1d&CxOUhkLB`fd8&v+N~dat-pn_FOiLwok3kG`j1U z8*jjnm;RJdqPFCh-GiC7x_>5~OvyI?Vj{hvgO5?dws=!If5zVZ{u_P2&-M9sDef7Q z*cDZV`}6CbfB(97P4%OcRe#sNPt{9sjAb(T_2J3JcMqr#`!=>0fuSz7aiZ+`5HfCc&7tO+H@X03|)evy^$&ld~X+ch-{O&jm& ziZxvP9~T>HUHV_|J?rb$S=r|qo92sfvn7=L+QCp=xB0PS_?_B4|Lr$C=yG^3#(Us} zZ1(C`ad+>X`G3$cbnDvs{}0uVA7YgFdwE-EsmJu)&3|4@SaoaZ+rWbd4v6s|c=366 zcy#QA#6OYNA;0JC|54=dei{eEhx>CG91PF~jno(fd>9mFj7lKJ(ME%0G?lQx231EB k!)Rg{O$;2vB^!K`&s@nFAILM~I%pcl)78&qol`;+02Y