Joe, At each test for the type of data you can also test to see if you found type, something like this:
stream := ReadStream on: myCollection. [stream atEnd] whileFalse: [:item | | notFound | item := stream next. notFound := true. (notFound and: [your column test1]) ifTrue: [notFound := false. stream upToEnd]. (notFound and: [your column test2]) ifTrue: [notFound := false. stream upToEnd]. (notFound and: [your column test3]) ifTrue: [notFound := false. stream upToEnd]. ]. Not pretty but it should work. You should also look into the #caseOf: method Bert suggested. I have my own Case class in VA Smalltalk that I expect is similar but I'm not familiar with #caseOf:, so you should look it up. I expect it will make the code a little cleaner. Lou On Tue, 10 May 2016 08:57:03 -0700 (PDT), Joseph Alotta <joseph.alo...@gmail.com> wrote: >Lou, > >I was trying to use the ReadStream, but the issue is to get execution to go >back to the top. If I send the upToEnd message, it still executes from the >same line and goes through the rest of the tests. > > >Sincerely, > >Joe. > > > >> On May 9, 2016, at 3:56 PM, Louis LaBrunda [via Smalltalk] >> <ml-node+s1294792n4894128...@n4.nabble.com> wrote: >> >> Hi Joe, >> >> You can map your collection to a stream and then use the stream methods to >> traverse the >> collection. >> >> stream := ReadStream on: myCollection. >> [stream atEnd] whileFalse: [:item | >> item := stream next. >> "I'm not sure upToEnd is the right method here but it is close. Look >> around, I'm sure you will >> find what you need." >> item doSomeWork. >> (when you think you are done with item) ifTrue: [stream >> upToEnd]. >> ]. >> >> Lou >> >> On Mon, 9 May 2016 16:00:58 -0500, Joseph Alotta <[hidden email]> wrote: >> >> >I don?t think any of the solutions work for my case. >> > >> >I want to evaluate several different variable for each step, make >> >calculations and if all of the conditions are met, then skip to the next >> >item, otherwise, do the next step of calculations. >> > >> >The project is reading comma deliminated bank or credit card files, taking >> >a column of data, counting various characters, and trying to determine what >> >kind of data it is. For example, a column of data with two slash >> >characters and eight digits per line is likely to be a date field. A >> >column of data with more than 3 letter characters and a percentage of >> >digits and a percentage of hash signs is likely to be a payee field. A >> >column of data with no spaces, no digits, no special characters is likely >> >to be a type of transaction field. A column of data with one period per >> >item, and only digits or a minus sign is likely to be a amount field, and >> >a column of data with a high percentage of zero length items and the rest >> >having C or K and a pound sign and four or more digits is likely to be a >> >check number field. >> > >> >I am doing a lot of tests for each field and I don?t think the switch is a >> >good fit. >> > >> >Sincerely, >> > >> >Joe. >> -- >> Louis LaBrunda >> Keystone Software Corp. >> SkypeMe callto://PhotonDemon >> >> _______________________________________________ >> Beginners mailing list >> [hidden email] >> http://lists.squeakfoundation.org/mailman/listinfo/beginners >> >> >> If you reply to this email, your message will be added to the discussion >> below: >> http://forum.world.st/next-or-break-in-a-loop-tp4894095p4894128.html >> To start a new topic under Squeak - Beginners, email >> ml-node+s1294792n107673...@n4.nabble.com >> To unsubscribe from Squeak - Beginners, click here. >> NAML -- Louis LaBrunda Keystone Software Corp. SkypeMe callto://PhotonDemon _______________________________________________ Beginners mailing list Beginners@lists.squeakfoundation.org http://lists.squeakfoundation.org/mailman/listinfo/beginners