<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta content="text/html;charset=UTF-8" http-equiv="Content-Type"></head><body ><div style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10pt;"><div><br></div><div>Thank you! That is a keeper.<br></div><div><br></div><div><br></div><div>However, I had to add a reset to get the first one to work becuase it appears the Stream runs to the end at each iteration of the Array.<br></div><div><br></div><div><br></div><div><blockquote style="border: 1px solid rgb(204, 204, 204); padding: 7px; background-color: rgb(245, 245, 245);"><div>|ios|<br></div><div>ios := ReadStream on: 'Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit...|-'.<br></div><div><br></div><div>{ '{|'  . '|-' . '|}' . '{{' . '}}' .  '[[' . ']]' . '__' . '==' . '::' . '**' . '##' . ''''  } anySatisfy: [:pattern | ios match: pattern. <b>ios reset</b>].<br></div><div><br></div><div><br></div></blockquote><br></div><div>The second form is not detecting the the '|-'  at the end, as far as I can tell.<br></div><div><br></div><div><blockquote style="border: 1px solid rgb(204, 204, 204); padding: 7px; background-color: rgb(245, 245, 245);"><div><blockquote style="border: 1px solid rgb(204, 204, 204); padding: 7px; background-color: rgb(245, 245, 245);"><div>|ios|<br></div><div>ios := ReadStream on: 'Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit...|-'.<br></div><div>{ '{|'  . '|-' . '|}' . '{{' . '}}' .  '[[' . ']]' . '__' . '==' . '::' . '**' . '##' . '''' }<br></div><div>    detect: [:pattern | ios match: pattern]<br></div><div>    ifFound: [:pattern | self inform: 'Matched pattern: ' , pattern.]<br></div><div>    ifNone: [self inform: 'no match'. ].<br></div><div>  ios reset<br></div></blockquote></div></blockquote>cheers,<br>t</div><div><br></div><div><br></div><div class="zmail_extra_hr" style="border-top: 1px solid rgb(204, 204, 204); height: 0px; margin-top: 10px; margin-bottom: 10px; line-height: 0px;"><br></div><div class="zmail_extra" data-zbluepencil-ignore="true"><br><div id="Zm-_Id_-Sgn1">---- On Sat, 27 Nov 2021 11:36:49 -0500 <b>Thiede, Christoph <Christoph.Thiede@student.hpi.uni-potsdam.de></b> wrote ----<br></div><br><blockquote style="margin: 0px;"><div class="zm_-6192667581481793025_parse_6860513605158985686"><div id="x_1443467770divtagdefaultwrapper" style="font-size :  12pt; color :  #000000; font-family :  Calibri, Helvetica, sans-serif;" dir="ltr"><p style="margin-top: 0; margin-bottom: 0;"><span class="size" style="font-size:12pt">What about</span><br></p><p style="margin-top: 0; margin-bottom: 0;"><br></p><p style="margin-top: 0; margin-bottom: 0;"><span>{ '{|'  . '|-' . '|}' . '{{' . '}}' .  '[[' . ']]' . '__' . '==' . '::' . '**' . '##' . '''' } anySatisfy: [:pattern | self match: pattern]</span><br></p><p style="margin-top: 0; margin-bottom: 0;"><span><br></span></p><p style="margin-top: 0; margin-bottom: 0;"><span>?</span><br></p><p style="margin-top: 0; margin-bottom: 0;"><span><br></span></p><p style="margin-top: 0; margin-bottom: 0;">Maybe also this one if the identity of the matching pattern is of interest:<br></p><p style="margin-top: 0; margin-bottom: 0;"><br></p><p style="margin-top: 0; margin-bottom: 0;"><span class="font" style="font-family:Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols"><span class="size" style="font-size:16px">{ '{|'  . '|-' . '|}' . '{{' . '}}' .  '[[' . ']]' . '__' . '=='
 . '::' . '**' . '##' . '''' }</span></span><br></p><p style="margin-top: 0; margin-bottom: 0;"><span class="font" style="font-family:Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols"><span class="size" style="font-size:16px">    detect: [:pattern | self match: pattern]</span></span><br></p><p style="margin-top: 0; margin-bottom: 0;"><span class="font" style="font-family:Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols"><span class="size" style="font-size:16px">    ifFound: [:pattern | self inform: 'Matched pattern: ' , pattern]</span></span><br></p><p style="margin-top: 0; margin-bottom: 0;"><span class="font" style="font-family:Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols"><span class="size" style="font-size:16px">    ifNone: [self inform: 'no match']</span></span><br></p><p style="margin-top: 0; margin-bottom: 0;"><span class="font" style="font-family:Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols"><span class="size" style="font-size:16px"><br></span></span></p><p style="margin-top: 0; margin-bottom: 0;"><span class="font" style="font-family:Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols"><span class="size" style="font-size:16px">Best,</span></span><br></p><p style="margin-top: 0; margin-bottom: 0;"><span class="font" style="font-family:Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols"><span class="size" style="font-size:16px">Christoph</span></span><br></p><p style="margin-top: 0; margin-bottom: 0;"><span class="font" style="font-family:Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols"><span class="size" style="font-size:16px"><br></span></span></p><p style="margin-top: 0; margin-bottom: 0;"><span class="font" style="font-family:Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols"><span class="size" style="font-size:16px">PS: Don't use #| unless you explicitly want every method to be
 invoked always. Use #or:... instead, this is faster.</span></span><br></p></div><hr style="display :  inline-block; width :  98%;"><div id="x_1443467770divRplyFwdMsg" dir="ltr"><span class="font" style="font-family:Calibri, sans-serif"><span class="colour" style="color:#000000"><b>Von:</b> Squeak-dev <<a href="mailto:squeak-dev-bounces@lists.squeakfoundation.org" target="_blank">squeak-dev-bounces@lists.squeakfoundation.org</a>> im Auftrag von gettimothy via Squeak-dev <<a href="mailto:squeak-dev@lists.squeakfoundation.org" target="_blank">squeak-dev@lists.squeakfoundation.org</a>><br> <b>Gesendet:</b> Samstag, 27. November 2021 17:30:38<br> <b>An:</b> squeak-dev<br> <b>Betreff:</b> [squeak-dev] Anybody got an elegent construct for this functional monstrosity?</span></span> <div> <br></div></div><div><div style="font-family :  Verdana,  Arial,  Helvetica,  sans-serif; font-size :  10pt;"><div>I have a ReadStream and I want to detect some substrings in it.<br></div><div><br></div><div>This works, but it is ugly.<br></div><div><br></div><div><br></div><div><blockquote style="border :  1px solid rgb(204, 204, 204); padding :  7px; background-color :  rgb(245, 245, 245);"><div>((self match:'{|') | <br></div><div>(self match:'|-') |<br></div><div>(self match:'|}') |<br></div><div>(self match:'{{') |<br></div><div>(self match:'}}') |<br></div><div>(self match:'[[') |<br></div><div>(self match:']]') |<br></div><div>(self match:'__') |<br></div><div>(self match:'==') |<br></div><div>(self match:'::') |<br></div><div>(self match:'**') |<br></div><div>(self match:'##') |<br></div><div>(self match:'''') )<br></div></blockquote><br></div><div>Is anybody aware of an elegant approach to this?<br></div><div><br></div><div><br></div><div>Something along the lines of <br></div><div><br></div><div><br></div><div><blockquote style="border :  1px solid rgb(204, 204, 204); padding :  7px; background-color :  rgb(245, 245, 245);"><div>self matchAny: { '{|'  . '|-' . '|}' . '{{' . '}}' .  '[[' . ']]' . '__' . '==' . '::' . '**' . '##' . '''' }<br></div></blockquote><br></div><div><br></div><div>thx in advance<br></div></div><br></div></div></blockquote></div><div><br></div></div><br></body></html>