<!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>