SPAM-MED: Re: Time to upgrade my technique...

Jim Carwardine jim at oyfconsulting.com
Tue Jun 10 13:10:40 EDT 2008


Thanks, guys... Shame on me for using fields instead of variables.  I  
knew that one.  That is an original 1987 HC self-learning (that  
reflects my PL1 days in the early 70's believe it or not) that I have  
fought ever since.

Now, to rewrite and relearn... Jim

On 10-Jun-08, at 12:55 PM, Jim Ault wrote:

> Here are some skeleton techniques that can be applied to your set of  
> tasks.
> <full listing of original appears below my code>
>
> Jim Ault
> Las Vegas
>
> ----------------- start code -------------
>
> on doJimsTasks
>  --Jim Ault    6.10.08    for    Jim Cowardine
>  --partial script to show techniques
>  --will not run, but shows example techniques
>  --this is not the only way to build a fast Rev routine
>
>  put fld 1 into mainList  --use variables in RAM
>  put 0 into i
>  put 1 into j
>  put empty into eventOutputList --final listing
>  put empty into currentEvent -- each line we want to fill
>  --this is added to eventOutputList at the end of the loop
>  --then eventOutputList is put into field 2 at the finish
>
>  --set up a comma listing of keywords for later
>  put "Dartmouth,Burnside,Bedford,Sackville,Kentville," into cityList
>  put "Port  Hawksbury,Truro,Bridgewater,Tantallon," after cityList
>  put "Glen Haven,Hubbards,Bayers Lake,Cole  Harbour" after cityList
>
>  --now create a list of only those lines that qualify
>  filter mainList with "*BEGIN:VEVENT*"
>  --now the only lines remaining are the ones we want
>  put mainList into keepers --this is a better name, but optional
>
>  -- I use LNN to be the unmodifiable variable to read
>  repeat for each line LNN in keepers
>    add 1 to i
>    if LNN contains "SUMMARY" then
>    end if
>    if LNN contains "LOCATION" then
>    end if
>    if LNN contains "DSTART" then
>    end if
>    if LNN contains "END:VEVENT" then
>    end if
>
>
>    if holdLine is 1 then
>      put eventDate into item 2 of currentEvent
>      put locationName into item 5 of currentEvent
>
>      set the itemDel to comma
>      if item 5 of currentEvent is among the items of cityList then
>        put item 5 of currentEvent into item 6 of currentEvent
>      end if
>
>      put currentEvent into line j of eventOuputList
>
>    end repeat
>    put eventOuputList into field 2
>    set the itemdelimiter to ","
>    sort lines of field 2 by item 7 of each
>    sort lines of field 2 dateTime by item 2 of each
>
>
>  end doJimsTasks
>
> ------------  end code  -----------------
>
>
> On 6/10/08 7:53 AM, "Jim Carwardine" <jim at oyfconsulting.com> wrote:
>
>> Hi Folks... I hope this isn't asking too much.  I have found using  
>> the
>> docs to be less than satisfying when trying an alternative coding
>> technique.  I guess I fall into the old dog, actually the old
>> Hypercard dog, trying to learn the new Rev tricks.
>>
>> I just wrote a quick and dirty script to parse out an iCal calendar
>> saved as a text file to feed my car expense calculator which was
>> published a few months ago in a Rev newsletter.  The script is very
>> slow and I was intrigued to know how to speed it up as I am aware  
>> that
>> I am using very archaic scripting techniques.
>>
>> Here is my script.  It's relatively short and contains almost all of
>> my favourite coding patterns.  If anyone has the inclination, perhaps
>> you could point out how I might make use of Revs improvements over
>> Hypercard...
>>
>> It has to do with better ways to handle repeating actions and better
>> ways to handle lists... Thanks in advance... Jim
>>
>> --> all handlers
>>
>> on mouseUp
>>     put 0 into eventMark -- didn't end up using this for anything by
>> a switch
>>     put 1 into j
>>     put empty into eventLine
>>     put empty into field 2
>>     repeat with i = 1 to the number of lines of field 1
>>         if line i of field 1 contains "BEGIN:VEVENT" then -- found an
>> event
>>             put 1 into eventMark
>>             next repeat
>>         end if
>>         if eventMark > 0 then -- we are parsing an event now
>>             breakpoint
>>             if line i of field 1 contains "SUMMARY:" then -- found
>> the event name
>>                 put 2 into eventMark
>>                 set the itemdelimiter to ":"
>>                 put item 2 of line i of field 1 into eventName --
>> hold event name
>>                 next repeat
>>             end if
>>             if line i of field 1 contains "LOCATION:" then -- found
>> the event location
>>                 put 3 into eventMark
>>                 if line i of field 1 contains "\," then replace "\, "
>> with " " in line i of field 1
>>                 set the itemdelimiter to ":"
>>                 put item 2 of line i of field 1 into locationName --
>> hold event location
>>                 next repeat
>>             end if
>>             if line i of field 1 contains "DTSTART;" then -- found
>> the event location
>>                 put 4 into eventMark
>>                 set the itemdelimiter to ":"
>>                 put char 1 to 4 of item 2 of line i of field 1 into
>> eventYear -- hold event year - yyyymmdd
>>                 put char 5 to 6 of item 2 of line i of field 1 into
>> eventMonth -- hold event month - yyyymmdd
>>                 put char 7 to 8 of item 2 of line i of field 1 into
>> eventDay -- hold event day - yyyymmdd
>>                 put char 10 to 13 of item 2 of line i of field 1 into
>> eventTime -- hold event time
>>                 next repeat
>>             end if
>>         end if
>>         if line i of field 1 contains "END:VEVENT" then -- found an
>> event ending
>>             set itemdelimiter to ","
>>             if eventYear = "2007" then
>>                 -- if eventMonth ≥ "10" then
>>                 put eventMonth & "/" & eventDay & "/" & eventYear
>> into eventDate
>>                 put 1 into holdLine
>>                 -- else put 0 into holdLine
>>             else put 0 into holdLine
>>
>>             if holdLine is 1 then
>>                 put eventDate into item 2 of line j of field 2
>>                 if locationName is empty then put "Halifax" into
>> locationName
>>                 put locationName into item 5 of line j of field 2
>>                 put " - " & eventName after item 5 of line j of  
>> field 2
>>                 put empty into item 6 of line j of field 2
>>                 if item 5 of line j of field 2 contains "Dartmouth"
>> then put "Dartmouth" into item 6 of line j of field 2
>>                 if item 5 of line j of field 2 contains "Burnside"
>> then put "Burnside" into item 6 of line j of field 2
>>                 if item 5 of line j of field 2 contains "Bedford"
>> then put "Bedford" into item 6 of line j of field 2
>>                 if item 5 of line j of field 2 contains "Sackville"
>> then put "Sackville" into item 6 of line j of field 2
>>                 if item 5 of line j of field 2 contains "Kentville"
>> then put "Kentville" into item 6 of line j of field 2
>>                 if item 5 of line j of field 2 contains "Port
>> Hawksbury" then put "Port Hawksbury" into item 6 of line j of field 2
>>                 if item 5 of line j of field 2 contains "Truro" then
>> put "Truro" into item 6 of line j of field 2
>>                 if item 5 of line j of field 2 contains "Bridgewater"
>> then put "Bridgewater" into item 6 of line j of field 2
>>                 if item 5 of line j of field 2 contains "Tantallon"
>> then put "Tantallon" into item 6 of line j of field 2
>>                 if item 5 of line j of field 2 contains "Glen Haven"
>> then put "Glen Haven" into item 6 of line j of field 2
>>                 if item 5 of line j of field 2 contains "Hubbards"
>> then put "Hubbards" into item 6 of line j of field 2
>>                 if item 5 of line j of field 2 contains "Bayers Lake"
>> then put "Bayers Lake" into item 6 of line j of field 2
>>                 if item 5 of line j of field 2 contains "Cole
>> Harbour" then put "Cole Harbour" into item 6 of line j of field 2
>>                 if item 5 of line j of field 2 contains "airport"
>> then put "airport" into item 6 of line j of field 2
>>                 put eventTime into item 7 of line j of field 2
>>                 if line j of field 2 contains "\" then replace "\"
>> with empty in line j of field 2
>>                 put return after line j of field 2
>>                 add 1 to j
>>                 put empty into eventDate
>>                 put empty into locationName
>>                 put empty into eventName
>>                 put empty into eventYear
>>                 put empty into eventMonth
>>                 put empty into eventDay
>>                 put empty into eventTime
>>             end if
>>             put 0 into eventMark
>>             -- end if
>>         end if
>>         if the optionkey is "down" then exit repeat
>>     end repeat
>>     set the itemdelimiter to ","
>>     sort lines of field 2 by item 7 of each
>>     sort lines of field 2 dateTime by item 2 of each
>> end mouseUp
>> Jim Carwardine,
>> President & CEO
>> OYF Consulting
>> Ph. 902.823.2339 / 866.601.2339
>> Fx. 902.823-2139
>> <www.StrategicDoing.com>
>> StrategicDoing™: Execution depends on employees.
>> Strategic Partner with HiringSmart Canada Ltd.
>
>
> _______________________________________________
> use-revolution mailing list
> use-revolution at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your  
> subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-revolution


Jim Carwardine,
President & CEO
OYF Consulting
Ph. 902.823.2339 / 866.601.2339
Fx. 902.823-2139
<www.StrategicDoing.com>
StrategicDoing™: Execution depends on employees.
Strategic Partner with HiringSmart Canada Ltd.
-- 






More information about the use-livecode mailing list