1. <cffunction name="leftWords" access="public" output="false" returntype="string"
  2.             hint="I return a string limited to X characters without butchering the last word.">
  3.     <cfargument name="InputString" required="true" type="string" />
  4.     <cfargument name="CharacterLimit" required="true" type="numeric" />
  5.     
  6.     <cfset var CharacterCount = 0 />
  7.     <cfset var ReturnString = "" />
  8.     <cfloop list=#arguments.InputString# index="i" delimiters=" ">
  9.         <cfif CharacterCount + Len(i) LTE arguments.CharacterLimit>
  10.             <cfset CharacterCount = CharacterCount + Len(i) />
  11.             <cfset ReturnString = ListAppend(ReturnString,i," ") />
  12.         <cfelse>
  13.             <cfbreak />
  14.         </cfif>
  15.     </cfloop>
  16.     <cfreturn ReturnString />
  17. </cffunction>