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" <[EMAIL PROTECTED]> 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@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.
--



_______________________________________________
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution

Reply via email to