Time to upgrade my technique...

Jim Carwardine jim at oyfconsulting.com
Tue Jun 10 10:53:16 EDT 2008


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






More information about the use-livecode mailing list