How To: Manage columns of data (was Re: How To: Delete columns of data)

FlexibleLearning.com admin at FlexibleLearning.com
Sat Sep 6 05:44:24 EDT 2014


Peter:  Thank you for adding column ranges.
Mike: Thank you for the column extraction handler.

I believe this summarises our efforts to date. It includes column ranges and
the ability to either delete or extract columns of data from a table. I
accept that optimisation has been compromised in favour of code brevity when
extracting columns, but the time overhead is negligible. 

function manageColumns pData,pCols,pAction,pDelim
  -- Purpose: To delete or extract specified columns from a table
  -- Syntax: manageColumns <data>,<cols>,<action>[,<delim>]
  --     data: Specifies the data to parse
  --     cols: A comma separated list of columns or column ranges to be
removed or extracted
  --         for example "2,5,7"
  --         or a column range: "3-5"
  --         or a combination "2,4-5,7,9-11,"
  --     action: Either "delete" or "extract"
  --     delim: Optional column separator for example "," or "|"
  --         if unspecified, defaults to TAB
  -- By: Hugh Senior, based on handlers by Michael Doub, based on a handler
by Peter M. Brigham, based on a handler by Hugh Senior, Use-LC list
  
  if pCols ="" then return pData
  if pDelim <>"" then set the columnDelimiter to pDelim
  repeat for each item tCol in pCols
    if "-" is in tCol then
      set the itemDel to "-"
      repeat with i = item 1 of tCol to item -1 of tCol
        put i & comma after pColsExpanded
      end repeat
      set the itemDel to comma
    else
      put tCol & comma after pColsExpanded
    end if
  end repeat
  put char 1 to -2 of pColsExpanded into pCols
  split pData by column
  put item 2 of extents(pData) into tMax
  repeat with n=1 to tMax
    if pAction="delete" then get (n is NOT among the items of pCols)
    else get (n is among the items of pCols)
    if it then
      add 1 to x
      put pData[n] into pData[x]
    end if
  end repeat
  repeat with n=x+1 to tMax
    delete local pData[n]
  end repeat
  combine pData by column
  return pData
end manageColumns



Hugh Senior
FLCo






More information about the use-livecode mailing list