Tronquer un texte en lua

Lorsque l’on récupère des informations (d’une page web par exemple) pour les afficher dans un device Text sous domoticz nous sommes parfois confronté à un volume de données trop important.
J’avais ce problème dans mon script horoscope pour domoticz.
j’ai donc fais une petite fonction pour résoudre cela.

j’ai fait plusieurs essais pour connaitre le nombre de caractère limite pouvant être afficher dans un device texte. Au dela de 240 caractères le device affiche « undefined ».
super, passons par un string.sub pour tronquer le contenu de ma variable horoscope.

oui mais… ce n’est pas parfait. le texte est « sabré » au 240éme caractère, éventuellement en plein milieu d’un mot ou d’une phrase.
Préférant couper le texte à la fin d’une phrase plutôt que d’un mot, il me faut trouver quel est le caractère de ponctuation est le plus prêt du 240éme caractère.
Je voulais utiliser le « pattern » %p qui regroupe l’ensemble des ponctuations mais du coup le texte peut s’arrêter après les caractères suivants : [!-/:-@%[\\%]^_`{|}~]
ce qui n’est pas vraiment ce que je souhaite. Je retiens donc les caractères ;!?. comme étant les seuls à terminer une phrase.

on obtient le résultat escompté avec

pourquoi pas ce faire une petite fonction permettant son utilisation dans les scripts utilisant les devices texte?

Bien entendu, si le texte ne comporte pas de ponctuation il sera tronqué lorsque le nombre limite de caractère sera atteint

Laisser un commentaire