<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
{mso-style-priority:99;
mso-style-link:"Plain Text Char";
margin:0cm;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
span.PlainTextChar
{mso-style-name:"Plain Text Char";
mso-style-priority:99;
mso-style-link:"Plain Text";
font-family:"Calibri",sans-serif;}
.MsoChpDefault
{mso-style-type:export-only;
font-family:"Calibri",sans-serif;}
@page WordSection1
{size:612.0pt 792.0pt;
margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-NZ link="#0563C1" vlink="#954F72"><div class=WordSection1><p class=MsoPlainText>Hmm, may need to think about this.<o:p></o:p></p><p class=MsoPlainText>We risk adding adhoc patches on adhoc patches and painting ourselves into a corner.<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>Agree we should not add a new keyword just to emulate an obscure special case that is not well understood or well handled by 'ignore'. So a modifier of 'ignore' would be better, as Tarquin suggests.<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>>extend ignore end 8 7 #or<o:p></o:p></p><p class=MsoPlainText>>extend ignore 8 7 end<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>Not sure about the word 'end', as it will not always be evident which end of a loop is the 'end’. Especially where there are loops within loops or beside loops. Maybe 'force'. Not sure about that either, but the user rule of thumb could be, if 'ignore' does not work, try 'ignore force'.<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>extend ignore force 8 7 #or<o:p></o:p></p><p class=MsoPlainText>extend ignore 8 7 force<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>Maybe we should take time to think about it for a while. We have a tentative solution right now, as Stacho has found, using the combination.<o:p></o:p></p><p class=MsoPlainText> extend start 1<o:p></o:p></p><p class=MsoPlainText> extend ignore 7 8<o:p></o:p></p><p class=MsoPlainText> extend ignore 8 7<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>ie, <span style='background:yellow;mso-highlight:yellow'>if extend ignore <leg> does not work, try following it with extend ignore <reversed leg></span><o:p></o:p></p><p class=MsoPlainText><img width=411 height=151 style='width:4.2847in;height:1.5694in' id="Picture_x0020_1" src="cid:image002.png@01D65502.6086F080"><o:p></o:p></p><p class=MsoPlainText>Using Tarquin's example this gives a log like...<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>START 1@extendedloop<o:p></o:p></p><p class=MsoPlainText>RIGHT 2@extendedloop<o:p></o:p></p><p class=MsoPlainText>RIGHT 10@extendedloop<o:p></o:p></p><p class=MsoPlainText>RIGHT 9@extendedloop<o:p></o:p></p><p class=MsoPlainText>RIGHT 8@extendedloop #ie random branch taken as far as 8<o:p></o:p></p><p class=MsoPlainText>BACK 9@extendedloop<o:p></o:p></p><p class=MsoPlainText>BACK 10@extendedloop<o:p></o:p></p><p class=MsoPlainText>BACK 2@extendedloop #step back to 2<o:p></o:p></p><p class=MsoPlainText>RIGHT 3@extendedloop<o:p></o:p></p><p class=MsoPlainText>RIGHT 4@extendedloop<o:p></o:p></p><p class=MsoPlainText>RIGHT 5@extendedloop<o:p></o:p></p><p class=MsoPlainText>RIGHT 6@extendedloop<o:p></o:p></p><p class=MsoPlainText>RIGHT 7@extendedloop<o:p></o:p></p><p class=MsoPlainText>RIGHT 11@extendedloop #at end branch 11…<o:p></o:p></p><p class=MsoPlainText>BACK 7@extendedloop<o:p></o:p></p><p class=MsoPlainText>BACK 6@extendedloop<o:p></o:p></p><p class=MsoPlainText>BACK 5@extendedloop<o:p></o:p></p><p class=MsoPlainText>BACK 4@extendedloop<o:p></o:p></p><p class=MsoPlainText>BACK 3@extendedloop<o:p></o:p></p><p class=MsoPlainText>BACK 2@extendedloop<o:p></o:p></p><p class=MsoPlainText>BACK 1@extendedloop #step all the way back to 1<o:p></o:p></p><p class=MsoPlainText>START 8@extendedloop #auto restart at 8<o:p></o:p></p><p class=MsoPlainText>RIGHT 7@extendedloop #finish the last leg<o:p></o:p></p><p class=MsoPlainText>done<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>And vise versa<o:p></o:p></p><p class=MsoPlainText> extend start 1<o:p></o:p></p><p class=MsoPlainText> extend ignore 8 7 <o:p></o:p></p><p class=MsoPlainText> extend ignore 7 8<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>START 1@extendedloop<o:p></o:p></p><p class=MsoPlainText>RIGHT 2@extendedloop<o:p></o:p></p><p class=MsoPlainText>RIGHT 10@extendedloop<o:p></o:p></p><p class=MsoPlainText>RIGHT 9@extendedloop<o:p></o:p></p><p class=MsoPlainText>RIGHT 8@extendedloop #ie random branch taken as far as 8<o:p></o:p></p><p class=MsoPlainText>BACK 9@extendedloop<o:p></o:p></p><p class=MsoPlainText>BACK 10@extendedloop<o:p></o:p></p><p class=MsoPlainText>BACK 2@extendedloop #ie random branch taken as far as 8<o:p></o:p></p><p class=MsoPlainText>RIGHT 3@extendedloop<o:p></o:p></p><p class=MsoPlainText>RIGHT 4@extendedloop<o:p></o:p></p><p class=MsoPlainText>RIGHT 5@extendedloop<o:p></o:p></p><p class=MsoPlainText>RIGHT 6@extendedloop<o:p></o:p></p><p class=MsoPlainText>RIGHT 7@extendedloop<o:p></o:p></p><p class=MsoPlainText>RIGHT 11@extendedloop #at end branch 11…<o:p></o:p></p><p class=MsoPlainText>BACK 7@extendedloop<o:p></o:p></p><p class=MsoPlainText>BACK 6@extendedloop<o:p></o:p></p><p class=MsoPlainText>BACK 5@extendedloop<o:p></o:p></p><p class=MsoPlainText>BACK 4@extendedloop<o:p></o:p></p><p class=MsoPlainText>BACK 3@extendedloop<o:p></o:p></p><p class=MsoPlainText>BACK 2@extendedloop<o:p></o:p></p><p class=MsoPlainText>BACK 1@extendedloop #step all the way back to 1<o:p></o:p></p><p class=MsoPlainText>START 8@extendedloop#auto restart at 8<o:p></o:p></p><p class=MsoPlainText>RIGHT 7@extendedloop #finish the last leg<o:p></o:p></p><p class=MsoPlainText>done<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>It disturbs me that the sequence is exactly the same.<o:p></o:p></p><p class=MsoPlainText>I agree with Tarquin, “it smells like there will be some unpredictable hidden behaviours in there”.<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText><b>A question Stacho.<o:p></o:p></b></p><p class=MsoPlainText>Are extend statements processed in sequence they are written, or are they all read by Therion before Therion chooses best order to process them (as it does with survey data)?<o:p></o:p></p><p class=MsoPlainText>I’m suspecting the latter.<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>Bruce<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText><span lang=EN-US>-----Original Message-----<br>From: Therion <therion-bounces@speleo.sk> On Behalf Of Tarquin Wilton-Jones via Therion<br>Sent: Wednesday, 8 July 2020 02:42<br>To: therion@speleo.sk<br>Cc: Tarquin Wilton-Jones <tarquin.wilton-jones@ntlworld.com><br>Subject: Re: [Therion] Revisiting Breaking extended elevations on specific stations</span></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>> Well, there is one workaround. But to be honest, I have no idea why :/<o:p></o:p></p><p class=MsoPlainText>> <o:p></o:p></p><p class=MsoPlainText>> extend ignore 7 8<o:p></o:p></p><p class=MsoPlainText>> extend ignore 8 7<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>Wow!<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>First thought is; that ... really shouldn't work, and it looks almost like a bug.<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>Maybe there is logic though, if you look at those two statements in the opposite order (which also works, by the way).<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>Therion proceeds along 1-2-10-9-8-7-11<o:p></o:p></p><p class=MsoPlainText>"Therion, please ignore 8-7"<o:p></o:p></p><p class=MsoPlainText>Therion breaks the survey at 8. Therion now goes:<o:p></o:p></p><p class=MsoPlainText> 10-9-8 8<o:p></o:p></p><p class=MsoPlainText> / /<o:p></o:p></p><p class=MsoPlainText>1-2-3-4-5-6-7-11<o:p></o:p></p><p class=MsoPlainText>"Therion, please ignore 7-8"<o:p></o:p></p><p class=MsoPlainText>Therion breaks the survey at 7. It now has a floating 7-8 leg not connected to anything. So it connects it to the 10-9-8 branch, and ends up with the desired output.<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>So maybe this is trustworthy rather than a bug? But it hurts my head to read it, and it smells like there will be some unpredictable hidden behaviours in there.<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>> Something like:<o:p></o:p></p><p class=MsoPlainText>> <o:p></o:p></p><p class=MsoPlainText>> extend end 8 7<o:p></o:p></p><p class=MsoPlainText>> <o:p></o:p></p><p class=MsoPlainText>> ... would be definitely better. Is it OK to implement it like that?<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>I like that it will never clash with existing stuff. I don't like that it introduces a new keyword instead of "ignore", that does the same thing as "ignore". I would personally prefer it as a modifier rather than a keyword, for consistency:<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>extend ignore end 8 7<o:p></o:p></p><p class=MsoPlainText>extend ignore 8 7 end<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>But others may have stronger opinions.<o:p></o:p></p><p class=MsoPlainText>_______________________________________________<o:p></o:p></p><p class=MsoPlainText>Therion mailing list<o:p></o:p></p><p class=MsoPlainText><a href="mailto:Therion@speleo.sk"><span style='color:windowtext;text-decoration:none'>Therion@speleo.sk</span></a><o:p></o:p></p><p class=MsoPlainText><a href="https://mailman.speleo.sk/listinfo/therion"><span style='color:windowtext;text-decoration:none'>https://mailman.speleo.sk/listinfo/therion</span></a><o:p></o:p></p></div></body></html>