After some common-sense advice from Sean, I've upgraded the iCal CFC. It now uses an init method to load in the original string. It also caches the parsed events in case you need to run it again.
As an example:
<cfset ical = createObject("component","ical").init(data)>
<cfset results = ical.getEvents()>
<cfset results = ical.getEvents()>
The download is in the My Tools pod.