Products Downloads


French version


 

This function returns a result sequence from sorting a sequence of Hash-type objects.

Sorting can be in ascending or descending order. It is performed according to the values of an object attribute. To do this, the attribute name or sequence of attribute names representing the path in dot notation leading to the sub-level object attribute needs to be specified.
When the indicated attribute values are String type, locale-based sorting is applie  

Unlike lexicographic sorting which compares the coding value of each character, this sort uses a collation which enables two character strings to be compared according to a given language.

 

NB:
Some differences in relation to the FreeMarker "built-in" "sort_by" function (click here for more details) applied to a ([?]?sort_by) sequence and the "lexicographicSortBy" function:

  • The result obtained from the three "sort_by", "lexicographicSortBy" and "localeBasedSortBy" functions is identical for Boolean/Number/Date/Time/Date-time types. For the String type, the FreeMarker "sort_by" function applies a sort using a collation (so a result identical to "localBasedSortBy" but different from "lexicographicSortBy"),
  • The "sort_by" function does not sort in descending order. The only solution is to use the FreeMarker "reverse" ([?]?sort_by()?reverse) function, but the original order of equal values is not respected.


Parameters

Hash sequence

seqHash

Hash object sequence to sort

Mandatory

String/String Sequence

sedAttrName

Object attribute on which to apply the sort. It is identified by its name or attribute name sequence representing the path in dot notation leading to it.

Mandatory

Boolean

ascendingOrder

"true" for an ascending sort, "false" for a descending sort

Optional.

The default value is "true"

Hash

collatorInfos

Definition of collation information. This object can have the following attributes:

  • "locale": string in IETF BCP 47 format identifying a sort locale,
  • "strength": string representing the strength of the collation to determine the level of difference considered as significant in the comparisons. Five values are provided: "identical", "primary", "secondary", "tertiary" and "quaternary".
  • "decomposition": string representing the collation decomposition mode. It determines the processing of Unicode combining characters. Setting the decomposition mode enables the user to choose between a quicker and fuller classification behavior. Three values are provided: "no_decomposition", "canonical_decomposition" and "full_decomposition"

Optional.

If this object is not provided, the locale taken for sorting is that entered for template execution ("strength" and "decomposition" attributes will have a default value which depends on the locale).

 


For example

<#assign elegance = [
	{"value": "Élégance"},
	{"value": "Elegance"},
	{"value": "elegance"}
	{"value": "élégance"},
	{"value": "elegANCE"},
	{"value": "elègance"}
	]>
<#-- Sorted by value -->
<#list hardisCode.localeBasedSortBy(elegance, 'value', {'locale': 'fr_FR', 'strength':'primary'}) as aObj>
- ${aObj.value}
</#list> ?

 

The output is:

- Élégance

- Elegance

- elegance

- élégance

- elegANCE

- elègance

 


Another example

<#assign elegance = [
	{"value": "Élégance"},
	{"value": "Elegance"},
	{"value": "elegance"}
	{"value": "élégance"},
	{"value": "elegANCE"},
	{"value": "elègance"}
	]>
<#-- Sorted by value -->
<#list hardisCode.localeBasedSortBy(elegance, 'value', {'locale': 'fr_FR', 'strength':'tertiary'}) as aObj>
- ${aObj.value}
</#list> 

 

The output is:

- elegance

- elegANCE

- Elegance

- elègance

- élégance

- Élégance

↑ Top of page