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