I should have given better context. I one only sorts the same field numeric, one gets:
123 132 213 231 312 321 Which is correct given the list of whole numbers in question. The stable sort allows one to then sort by char 3 of each, to get the result in the “compound” sort below. So am I missing something in all this? Craig > On Sep 5, 2023, at 10:29 AM, Craig Newman via use-livecode > <use-livecode@lists.runrev.com> wrote: > > I may be simply misunderstanding… > > Since HC days, one could concatenate sort criteria using the “&” character, > and obtain multiple stable sorts in one go. In LC as well, since given, in a > field 1: > > 231 > > 312 > > 123 > > 213 > > 321 > > 132 > > and in a button somewhere: > > on mouseUp > > get fld 1 > > sort it numeric by char 1 of each & char 3 of each > > answer it > > end mouseUp > > We get: > > 132 > > 123 > > 231 > > 213 > > 321 > > 312 > > > > Craig > > > > >> On Sep 3, 2023, at 8:29 AM, matthias rebbe via use-livecode >> <use-livecode@lists.runrev.com> wrote: >> >> Hello Mark, >> >> thanks for explanation and also for your solution. I will try. >> >> Maybe i should get my book "regular expressions" from Jeffrey E.F.Friedl >> from the shelf and should finish reading it, so i could make use of regular >> expressions in Livecode more often. >> >> Regards, >> Matthias >> >>> Am 03.09.2023 um 11:49 schrieb Mark Waddingham via use-livecode >>> <use-livecode@lists.runrev.com>: >>> >>> On 2023-09-03 10:26, panagiotis m via use-livecode wrote: >>>> Hello Matthias, >>>> I do not think that the syntax "sort <container> by sortKey1 and sortKey2" >>>> is supported >>> >>> Heh technically it 'is' - and does do something but it won't be what you >>> expected... >>> >>> So the syntax for sort in this case is: >>> >>> sort <container> by <expression> >>> >>> This works by iterating over the elements in <container>, passing each >>> through the expression to generate a sort key list, sorting that list and >>> then reordering the original list. >>> >>> Expressions can contain the boolean 'and' operator, so: >>> >>> sort <container> by X and Y >>> >>> Means that the sort key is evaluated as 'X and Y' for each element - >>> meaning sort ends up sorting a list of 'true' and 'false' values. >>> >>> As Panos says, if you want to sort by separate fields with decreasing >>> priority you need to do multiple sorts from least priority to most - this >>> works because 'sort' is stable (if two elements compare the same, then the >>> order of them in the output list is the same as the first). >>> >>> The alternative is to work out a sort expression which combines the two >>> parts of the element you want to sort so that the sort keys sort in that >>> order. This can be quite tricky, but (for example) - let's say your >>> container has elements of the form: >>> >>> <section-number>,<sub-section-number> >>> >>> So you want things in the 'obvious' sorted order - then you could use: >>> >>> sort tSections ascending text by format("%08d%08d", item 1 of each, item 2 >>> of each) >>> >>> Here the sortkey is defined so that the text sort of the sort keys is that >>> same as sorting first by sub-section number and then by section number. >>> >>> Warmest Regards, >>> >>> Mark. >>> >>> -- >>> Mark Waddingham ~ m...@livecode.com ~ http://www.livecode.com/ >>> LiveCode: Build Amazing Things >>> >>> _______________________________________________ >>> use-livecode mailing list >>> use-livecode@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@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@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@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode