<div dir="ltr">Hi Nicola,<div> I see your point regarding the functionality of upTo:, but you can easily overcome that using #peekBack. Using you example: </div><div>-----</div><div>s _ 'hello-1Ahello-2Ahel'.<br>'/tmp/test.txt' asFileEntry fileContents: s.<br><br>st1 _ '/tmp/test.txt' asFileEntry readStream .<br><br>st1 upTo: $A. " 'hello-1' "</div><div>st1 upTo: $A. " 'hello-2' "<br>st1 upTo: $A. " 'hel' "      </div><div>(st1 atEnd and: [ st1 peekBack ~= $A ]) ifTrue: [ self error: 'End of file without delimiter ].   <br></div><div>------</div><div> </div><div> Regarding my concern of adding this functionality to Cuis, we are trying to have a compact set of classes and methods to reduce complexity (or at least not increase it) and help newcomers to understand it and oldies to remember it :-) . We are also trying to add more and more tests because it is the only way to keep a system from becoming a legacy one and to reduce the fear it produces to change something.</div><div> The strictUpTo:startPos: you are sending is almost a copy of the upTo: method, with a few lines changed. Even though the functionality makes sense (although right now you are the only one needing it and as I said, you can use peekBack to overcome it), adding that method adds repeated code which in the long term makes it more difficult to understand and maintain, even more because it does not have tests.</div><div> So I hope you understand that as maintainers of Cuis, we want to be loyal to the goals I mentioned before and keep Cuis as clean and simple as possible. If you can refactor what you sent to avoid having repeated code with #upTo: and add tests that verify the functionality of both methods (strictUpTo: and upTo:), that will make our task easier and meet the goals we have. If you think this does not make sense to you, or you do not have the time to do it, it is completely understandable and in that case I suggest for you to have it as an extension of the StandardFileStream class or just use the peekBack message as I showed.</div><div> I hope you understand my concern and agree with me. If not, please let me know.</div><div><br></div><div>Cheers!</div><div>Hernan.</div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Oct 19, 2021 at 10:32 AM Nicola Mingotti <<a href="mailto:nmingotti@gmail.com">nmingotti@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
  
    
  
  <div>
    <br>
    Hi Hernan,<br>
    <br>
    In all frankness, in I would wipe out the old 'upTo' because its
    behavior is a bit "wild".<br>
    <br>
    On the other side, I understand it may create problems in
    retro-compatibility, that is why for<br>
    the moment i propose to add a new method which behaves a bit better.<br>
    <br>
    I hope this example explains the problem:<br>
    -------------------------------------------------------<br>
    s _ 'hello-1Ahello-2Ahel'.<br>
    '/tmp/test.txt' asFileEntry fileContents: s. <br>
    <br>
    st1 _ '/tmp/test.txt' asFileEntry readStream . <br>
    <br>
    st1 upTo: $A. " 'hello-1' "<br>
    st1 upTo: $A. " 'hello-2' "<br>
    st1 upTo: $A. " 'hel' "         "(*)"<br>
    ------------------------------------------------------<br>
    (*) You can't establish in any way if you actually found an "A"
    terminated block or just hit the end of file<br>
    (*) If you hit the end of file you eat an incomplete record, this is
    another problem, maybe another process<br>
    was going to end writing that record but you will never know. <br>
    <br>
    Maybe there is another method around that performs similarly to
    'strictUpTp', if there is I did not find it, sorry.<br>
    <br>
    IMHO, In a scale of importance from 0 to 10, this method, for a
    programmer, >= 8.<br>
    I would definitely not put it into an external package, too much
    fundamental.<br>
    <br>
    bye<br>
    Nicola<br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <div>On 10/19/21 14:44, Hernan Wilkinson
      wrote:<br>
    </div>
    <blockquote type="cite">
      
      <div dir="ltr">Hi Nicola!<br>
        <div> I was wondering, why are you suggesting adding them to the
          base? Is it not enough to implement them as an extension in
          your package? </div>
        <div> Also, I think that any new functionality should come with
          its corresponding tests to help the maintenance and
          understanding of the functionality.</div>
        <div><br>
        </div>
        <div>Cheers!</div>
        <div>Hernan.</div>
        <div><br>
        </div>
      </div>
      <br>
      <div class="gmail_quote">
        <div dir="ltr" class="gmail_attr">On Tue, Oct 19, 2021 at 7:04
          AM Nicola Mingotti via Cuis-dev <<a href="mailto:cuis-dev@lists.cuis.st" target="_blank">cuis-dev@lists.cuis.st</a>>
          wrote:<br>
        </div>
        <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
          <div> <font size="4"><font face="monospace">Hi Juan, guys,<br>
                <br>
                I would like to add to Cuis the 2 methods i attach here.
                One is a helper method.<br>
                <br>
                -----------<br>
                StandardFileStream strictUpTo: delim.<br>
                -----------<br>
                <br>
                Differently from 'upTo: delim' this method:<br>
                1. Does not return stuff if it does not find 'delim'.<br>
                2. Does not upgrade the position on the stream if does
                not find 'delim'.<br>
                3. If it finds 'delim' returns a chunk that includes it.<br>
                <br>
                I am parsing log files at the moment, this is very much
                useful.<br>
                <br>
                NOTE. Up to now I tested only on small files.<br>
                <br>
                bye<br>
                Nicola<br>
                <br>
                <br>
                <br>
                <br>
              </font></font> </div>
          -- <br>
          Cuis-dev mailing list<br>
          <a href="mailto:Cuis-dev@lists.cuis.st" target="_blank">Cuis-dev@lists.cuis.st</a><br>
          <a href="https://lists.cuis.st/mailman/listinfo/cuis-dev" rel="noreferrer" target="_blank">https://lists.cuis.st/mailman/listinfo/cuis-dev</a><br>
        </blockquote>
      </div>
      <br clear="all">
      <div><br>
      </div>
      -- <br>
      <div dir="ltr">
        <div dir="ltr"><span style="font-size:xx-small;border-collapse:collapse">
            <div style="font-size:small"><a href="https://10pines.com/" style="font-family:Roboto,Helvetica,Arial,sans-serif;font-size:medium" target="_blank"><img src="https://10pines.github.io/email-signature/10pines-firma@2x.png" style="margin-bottom: 0.5em;" width="108"></a><span style="color:rgb(0,0,0);font-family:Roboto,Helvetica,Arial,sans-serif;font-size:medium"></span>
              <h1 style="margin:0px;font-size:14px">Hernán Wilkinson</h1>
              <h2 style="margin:0px 0px 1em;font-size:14px;color:rgb(100,100,100)">Software
                Developer & Coach</h2>
              <p style="margin:0px;color:rgb(100,100,100);font-size:12px">Alem
                896, Floor 6, Buenos Aires, Argentina</p>
              <p style="margin:0px;color:rgb(100,100,100);font-size:12px">+54
                11 6091 3125</p>
              <p style="margin:0px;color:rgb(100,100,100);font-size:12px">@HernanWilkinson</p>
            </div>
          </span></div>
      </div>
    </blockquote>
    <br>
  </div>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><span style="font-size:xx-small;border-collapse:collapse"><div style="font-size:small"><a href="https://10pines.com/" style="font-family:Roboto,Helvetica,Arial,sans-serif;font-size:medium" target="_blank"><img width="108" src="https://10pines.github.io/email-signature/10pines-firma@2x.png" style="margin-bottom: 0.5em;"></a><span style="color:rgb(0,0,0);font-family:Roboto,Helvetica,Arial,sans-serif;font-size:medium"></span><h1 style="margin:0px;font-size:14px">Hernán Wilkinson</h1><h2 style="margin:0px 0px 1em;font-size:14px;color:rgb(100,100,100)">Software Developer & Coach</h2><p style="margin:0px;color:rgb(100,100,100);font-size:12px">Alem 896, Floor 6, Buenos Aires, Argentina</p><p style="margin:0px;color:rgb(100,100,100);font-size:12px">+54 11 6091 3125</p><p style="margin:0px;color:rgb(100,100,100);font-size:12px">@HernanWilkinson</p></div></span></div></div>