Probably a pointless question about using sort to search..
Geoff Canyon
gcanyon at gmail.com
Sat Dec 12 10:53:14 EST 2015
I'll take another swing at the horse. My objection to this handler/function
at this point is that it's replacing (at most) six lines of code:
put the itemDel into savedDelimiter
set the itemDel to someDelimiter
combine someArray with someDelimiter
sort items of someArray <sort params here>
split someArray with someDelimiter
set the itemDel to savedDelimiter
with a call to a handler that doesn't (yet) support escaping the delimiter
or all the parameters sort supports. Supporting "by word 4 of each" for
example would drive you batty trying to support it.
On Sat, Dec 12, 2015 at 10:21 AM, Peter M. Brigham <pmbrig at gmail.com> wrote:
> At this point probably beating a dead horse, but here's a cleaned up
> handler that handles cr's in the data. Geoff is right that the basic idea
> can be done in 3 lines, but this automates choosing an alternate delimiter
> and specifying the sort mode in a one-line call.
>
> The original handler came from one of the LC lessons, and was used to
> prepare an array for a function to search the contents of an array that
> scales logarithmically rather than linearly.
>
> -- Peter
>
> Peter M. Brigham
> pmbrig at gmail.com
> http://home.comcast.net/~pmbrig
>
> -------
>
> on sortArray @pArray, pSortMode, pDelim
> -- sort the values of an array, returning an integer-keyed array
> -- whose values increase as the keys increase
> -- pArray is referenced, so the original array will be changed
> -- note that the original keys of the array will be discarded,
> -- thus most useful for transforming numerically-keyed arrays
> -- pSortMode = {"text"|"textCaseSens"|"numeric"|"dateTime"}
> -- textCaseSens sets caseSensitive to true before sorting by text
> -- if sortMode = empty, defaults to numeric
> -- specify a delimiter pDelim if the elements of the array contain cr's
> -- you can use this to prepare an array for the logarithmicSearch()
> function
> -- not sure who wrote the original,
> -- cleaned up and expanded by Peter M. Brigham, pmbrig at gmail.com,
> -- with help from the use-LC list
>
> if pSortMode = empty then put "numeric" into pSortMode
> if pDelim = empty then put cr into pDelim
> combine pArray with pDelim
> -- now pArray is a pDelim-delimited list of values
> -- sort the list as directed
> set the linedel to pDelim
> switch pSortMode
> case "textCaseSens"
> set the casesensitive to true
> case "text"
> sort lines of pArray
> break
> case "numeric"
> sort lines of pArray numeric
> break
> case "dateTime"
> sort lines of pArray dateTime
> break
> end switch
> # transform the sorted list back to a numerically indexed array
> split pArray with pDelim
> end sortArray
>
>
> On Dec 11, 2015, at 7:34 PM, Geoff Canyon wrote:
>
> > On Fri, Dec 11, 2015 at 6:51 PM, Alex Tweedly <alex at tweedly.org> wrote:
> >
> >>
> >> I haven't read everything in this thread, so I don't know if Peter's
> >> function handled this or not ...
> >>
> >> On 11/12/2015 23:32, Geoff Canyon wrote:
> >>
> >>> On Thu, Dec 10, 2015 at 12:47 PM, Peter Brigham <pmbrig at gmail.com>
> wrote:
> >>>
> >>>>
> >>>> But back to the first point, this function can be eliminated in three
> >>> lines
> >>> of code:
> >>>
> >>> combine someArray using cr
> >>> sort lines of someArray -- however you like
> >>> split someArray by cr
> >>>
> >>> Ummm ...
> >> put "abc" & CR & "def" into somearray[1]
> >> put "ghj" into somearray[2]
> >> and then try the above 3-line code snippet.
> >>
> >> -- Alex.
> >
> >
> > From the function:
> >
> > repeat for each line k in keyList
> > put pArray[k] & cr after valueList
> >
> > It doesn't.
> >
> > _______________________________________________
> > use-livecode mailing list
> > use-livecode at lists.runrev.com
> > Please visit this url to subscribe, unsubscribe and manage your
> subscription preferences:
> > http://lists.runrev.com/mailman/listinfo/use-livecode
>
>
> _______________________________________________
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your
> subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode
>
More information about the use-livecode
mailing list