24 lines
578 B
Python
24 lines
578 B
Python
"""Modèles de données partagés par l'application."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from dataclasses import dataclass
|
|
from datetime import datetime
|
|
|
|
|
|
@dataclass
|
|
class Clip:
|
|
"""Un extrait de texte capturé sur une page web."""
|
|
|
|
text: str
|
|
title: str
|
|
url: str
|
|
captured_at: datetime
|
|
|
|
def preview(self, length: int = 60) -> str:
|
|
"""Retourne un aperçu court du texte, sur une seule ligne."""
|
|
flat = " ".join(self.text.split())
|
|
if len(flat) <= length:
|
|
return flat
|
|
return flat[: length - 1].rstrip() + "…"
|