Special Characters Handler
Un framework Dart puissant et flexible pour gérer les caractères spéciaux, les emojis, et les entités HTML dans vos chaînes de caractères. Conçu pour la performance et la simplicité.
📑 Table des Matières
- Caractéristiques
- Installation
- Utilisation rapide
- Fonctionnalités détaillées
- Configuration avancée
- Performance
- Compatibilité
- Contribution
- Licence
Caractéristiques
- 🧹 Nettoyage intelligent : Supprime ou transforme les caractères spéciaux selon vos besoins.
- 🔄 Entités HTML : Décodage complet et automatique des entités HTML.
- 😊 Emojis : Détection, extraction et suppression ultra-précise des emojis.
- 🔗 Slugs : Génération de slugs URL-friendly (propres, minuscules, sans accents).
- 📝 Markdown : Nettoyage des balises Markdown (gras, liens, code) en préservant le texte.
- 🎥 YouTube : Extraction d'URLs depuis n'importe quel bloc HTML ou texte brut.
- 🔠 Unicode : Normalisation Unicode (NFC/NFD) et gestion avancée des accents.
- ⚡ Performance : Système de cache LRU intégré pour les textes volumineux.
- 🎯 Simple : API basée sur des extensions String pour une intégration immédiate.
Installation
Ajoutez cette ligne à votre fichier pubspec.yaml :
dependencies:
special_characters_handler: ^1.0.0
Utilisation rapide
import 'package:special_characters_handler/special_characters_handler.dart';
void main() {
// Nettoyage avec options par défaut
String text = "Héllô "world" 😊";
print(text.cleanSpecialCharacters()); // Output: Hello "world"
// Génération de slug instantanée
print("Mon Super Article ! 😊".toSlug()); // Output: mon-super-article
// Extraction de vidéos
var youtubeLinks = "Regarde: https://youtu.be/dQw4w9WgXcQ".extractYouTubeUrls();
}
Fonctionnalités détaillées
1. Analyse complète de texte
Idéal pour la validation de formulaires ou le filtrage de contenu.
final result = "Héllô 😊 & world".analyzeText();
print(result.originalLength);
print(result.emojis); // ['😊']
print(result.htmlEntities); // ['&']
print(result.accents); // ['é', 'ô']
print(result.youtubeUrls); // []
print(result.cleanedText); // "Hello & world"
2. Niveaux et Types de nettoyage
Gagnez du temps avec les préréglages intégrés.
// Par niveau d'agressivité
text.cleanSpecialCharacters(options: CleaningLevel.light.toOptions());
text.cleanSpecialCharacters(options: CleaningLevel.medium.toOptions());
text.cleanSpecialCharacters(options: CleaningLevel.aggressive.toOptions());
// Par type de contenu
text.cleanSpecialCharacters(options: CleaningType.htmlOnly.toOptions());
text.cleanSpecialCharacters(options: CleaningType.emojisOnly.toOptions());
3. Nettoyage personnalisé
Prenez le contrôle total sur chaque aspect du traitement.
final options = CleaningOptions(
removeHtmlEntities: true,
removeEmojis: true,
removeMarkdown: true,
convertAccents: true,
removeSpecialChars: true,
preserveNewlines: false,
);
String custom = text.cleanSpecialCharacters(options: options);
4. Gestion des emojis
String text = "Hello 😊 World 🌍";
List<String> emojis = text.extractEmojis(); // ['😊', '🌍']
bool hasEmoji = text.hasEmojis(); // true
String noEmojis = text.removeEmojis(); // "Hello World "
5. Support Markdown
Transformez du contenu riche en texte brut proprement.
String markdown = "# Titre\n**Gras** et [Lien](https://dart.dev)";
String cleaned = markdown.cleanSpecialCharacters(
options: CleaningOptions(removeMarkdown: true)
);
print(cleaned); // "Titre Gras et Lien"
6. Slugs URL Friendly
Générez des URLs propres automatiquement.
String title = "Comment créer un Slug en 2024 ! 😊";
print(title.toSlug()); // "comment-creer-un-slug-en-2024"
7. Extraction YouTube
Supporte tous les formats standards : watch, embed, et short links.
String content = 'Vidéo ici : <iframe src="https://www.youtube.com/embed/dQw4w9WgXcQ"></iframe>';
List<String> videos = content.extractYouTubeUrls();
Configuration avancée
Configurez les limites globales au démarrage de votre application :
const config = SpecialCharactersConfig(
maxInputLength: 1000000,
enableLogging: true,
cacheSize: 1000,
);
Règles de remplacement personnalisées
final handler = SpecialCharactersHandler();
// Remplacement simple
handler.addReplacementRule(ReplacementRule(pattern: '@', replacement: 'at'));
// Expression régulière
handler.addReplacementRule(ReplacementRule(
pattern: r'\b\d{4}\b',
replacement: 'YEAR',
isRegex: true,
));
Performance
Le framework est conçu pour être O(n). Il utilise un système de cache LRU (Least Recently Used) qui évite de recalculer le nettoyage pour des chaînes identiques déjà traitées, ce qui est particulièrement efficace dans les interfaces Flutter réactives.
Compatibilité
Ce package est pure-dart et compatible avec toutes les plateformes :
- 📱 Android / iOS
- 💻 Windows / macOS / Linux
- 🌐 Web / Server-side (Shelf, Dart Frog)
Contribution
Les contributions sont les bienvenues !
- Fork le projet
- Créez votre branche (
git checkout -b feature/AmazingFeature) - Committez vos changements (
git commit -m 'feat: add amazing feature') - Push vers la branche (
git push origin feature/AmazingFeature) - Ouvrez une Pull Request
Licence
Distribué sous la licence MIT. Voir LICENSE pour plus d'informations.
Auteur
Remerciements
- À la communauté Dart/Flutter pour ses retours inspirants.
- Aux mainteneurs des packages
characters,html_unescapeetunicode.