SPAM-MED: Re: Time to upgrade my technique...
Phil Davis
revdev at pdslabs.net
Tue Jun 10 13:49:47 EDT 2008
Wow - another former PL/1 programmer! I thought I was the only one left,
except at the Rev conference I learned that Robert Cailliau also used it
in earlier days.
Phil Davis
Jim Carwardine wrote:
> 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.
--
Phil Davis
PDS Labs
Professional Software Development
http://pdslabs.net
More information about the use-livecode
mailing list