explode.ls

-- Based on PHP's explode function. -- CBT: 2005-02-10
--
-- Examples:
--
--    put explode("your", "cleanyourhead")
--    -- ["clean", "head"]
--
--    put explode("r", "cleanyourhead")
--    -- ["cleanyou", "head"]
--
--    put explode("y", "cleanyourhead")
--    -- ["clean", "ourhead"]
--
on explode delimStr, str, limit
  
  if (the paramCount = 0) then return "Usage:" &RETURN &"-- explode(delimStr, str, limit)" 
  if delimStr = "" then return FALSE  
  if NOT str contains delimStr then return [str]
  
  set myArray = []
  
  set delimOffset = offset(delimStr, str)
  repeat while delimOffset > 0
    
    if integerP(limit) then
      
      if (count(myArray) < limit - 1) then
        
        set myItem = char 1 to delimOffset - 1 of str  
        delete char 1 to delimOffset + length(delimStr) - 1 of str
        add myArray, myItem
        
      else exit repeat
      
    else -- No limit, so just drive on.
      
      set myItem = char 1 to delimOffset - 1 of str  
      delete char 1 to delimOffset + length(delimStr) - 1 of str
      add myArray, myItem  
      
    end if
    
    set delimOffset = offset(delimStr, str)
    
  end repeat 
  
  if (length(str) > 0) then 
    add myArray, str
    set str = ""
  end if
  
  return myArray
  
end