Téléchargement des produits


Version anglaise


 

Cette fonction retourne une séquence résultat du tri d'une séquence d'objets de type Hash.

Le tri peut être ascendant ou descendant. Il est effectué en fonction des valeurs d'un attribut d'objet. Pour cela, il faut spécifier le nom de l'attribut ou la séquence de noms d'attributs représentant le chemin en notation pointée menant à l'attribut d'objet de sous-niveau.
Lorsque les valeurs de l'attribut indiqué sont de type String, le tri appliqué est un tri basé sur une locale.

Contrairement au tri lexicographique, qui compare la valeur de codage de chaque caractère, ce tri utilise une collation qui permet de comparer deux chaînes de caractères en fonction d'une langue donnée.

 

Remarque :
Quelques différences par rapport à la fonction "built-in" Freemarker "sort_by" (cliquez ici pour plus de détails) appliquée à une séquence ([...]?sort_by) et à la fonction "lexicographicSortBy" :

  • Le résultat obtenu des trois fonctions "sort_by", "lexicographicSortBy" et "localeBasedSortBy" est identique pour les types Boolean / Number / Date / Time / Date-time. Pour le type String, la fonction Freemarker "sort_by" applique un tri utilisant une collation (donc un résultat identique à "localBasedSortBy", mais différent de "lexicographicSortBy"),
  • La fonction "sort_by" ne permet pas de trier en descendant. La seule solution est d'utiliser la fonction Freemarker "reverse" ([...]?sort_by()?reverse), mais l'ordre original des valeurs qui sont égales n'est pas respecté.


Paramètres

Sequence de Hash

seqHash

Séquence d'objets Hash à trier

Obligatoire

String / Sequence de String

sedAttrName

Attribut d'objet sur lequel appliquer le tri. Il est identifié par son nom ou par la séquence de noms d'attributs représentant le chemin en notation pointée menant à lui.

Obligatoire

Boolean

ascendingOrder

"true" pour un tri ascendant, "false" pour un tri descendant

Optionnel.

La valeur par défaut est "true"

Hash

collatorInfos

Définition des informations de la collation. Cet objet peut avoir les attributs suivants :

  • "locale" : chaîne au format IETF BCP 47 identifiant une locale de tri,
  • "strength" : chaîne représentant la force de la collection pour déterminer le niveau de différence considéré comme significatif dans les comparaisons. Cinq valeurs sont fournies : "identical", "primary", "secondary", "tertiary" et "quaternary".
  • "decomposition" : chaîne représentant le mode de décomposition de la collation. Il détermine le traitement des caractères composés Unicode. Le réglage du mode de décomposition permet à l'utilisateur de choisir entre un comportement de classement plus rapide et plus complet. Trois valeurs sont fournies : "no_decomposition", "canonical_decomposition" et "full_decomposition"

Optionnel.

Si cet objet n'est pas fourni, la locale prise pour le tri est celle renseignée pour l'exécution du template (les attributs "strength" et "decomposition" auront une valeur par défaut qui dépend de la locale).

 


Par exemple

<#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>  

 

La sortie est :

- Élégance

- Elegance

- elegance

- élégance

- elegANCE

- elègance

 


Autre exemple

<#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> 

 

La sortie est :

- elegance

- elegANCE

- Elegance

- elègance

- élégance

- Élégance

↑ Haut de page