ForHosting KIT · Texte et IA

Normaliser l'indentation texte

Des lignes indentées de 2, 4 et 6 espaces sont lues comme les niveaux 1, 2 et 3 d'une unité de 2 espaces, puis chaque ligne est réécrite pour la respecter exactement. Ce qui suit l'indentation n'est jamais modifié. Gratuit dans votre navigateur.

  • Gratuit
  • Fonctionne dans votre navigateur
  • Sans inscription
  • Vos données restent sur votre appareil
Utilisez-le depuis WebAPIE-mailTelegramApp bientôt
Si vous saisissez
Texte
def foo(): if True: bar() baz() return
Vous obtenez
Entrée
def foo(): if True: bar() baz() return
Style d'indentation
spaces
Unité d'indentation
2
Unité détectée
2

Les espaces blancs initiaux incohérents figurent parmi les maux de tête les plus fréquents lors du collage de code dans les revues, les dumps de configuration et les blocs de documentation. Un extrait peut mélanger des pas de deux et de quatre espaces ou, pire, des tabulations sur certaines lignes et des espaces sur d'autres, jusqu'à ce qu'un linter ou un collègue rejette le fichier. Ce normaliseur d'indentation de texte accepte du texte brut multiligne, classe chaque ligne non vide selon la façon dont son indentation de tête est écrite, détecte une seule unité de base — le plus grand commun diviseur des comptes d'espaces, ou une tabulation — et réécrit chaque ligne pour que l'indentation soit un multiple exact de cette unité.

Comment fonctionnent la détection de l'unité de base et la réécriture des niveaux

L'algorithme normalise d'abord les fins de ligne Windows CRLF et CR hérités en une seule forme LF, puis découpe le document en lignes. Les lignes entièrement vides restent vides et ne contribuent à aucun style d'indentation. Pour chaque ligne non vide, la suite initiale d'espaces et de tabulations est mesurée : si les deux caractères apparaissent dans cette suite, ou si un autre espace blanc Unicode y apparaît, la ligne est traitée comme mixte et toute la requête échoue avec un message clair indiquant le numéro de ligne.

Si certaines lignes non vides sont indentées avec des espaces et d'autres avec des tabulations, le document n'a pas de style unique clair et est également rejeté — la conversion doit être délibérée, non devinée. Lorsque chaque ligne indentée utilise des espaces, l'unité de base est le plus grand commun diviseur de tous les comptes positifs d'espaces de tête ; si rien n'est indenté, l'unité par défaut pour le rapport est de deux espaces.

Lorsque chaque ligne indentée utilise des tabulations, l'unité de base est une tabulation et chaque tabulation de tête compte pour un niveau. Le niveau de chaque ligne est ensuite recalculé comme le compte divisé par l'unité (exact pour le PGCD des comptes d'espaces observés, comptes entiers de tabulations en mode tab), et la ligne est réécrite avec un préfixe pur d'espaces répétés de longueur niveau fois unité de sortie, ou de tabulations répétées de longueur niveau.

Le contenu après l'indentation de tête n'est jamais modifié : espaces intérieurs, espaces de fin et jetons de code restent identiques octet par octet.

Nettoyer le code et la config collés avant le commit

Les développeurs collent des extraits aux pas mixtes de deux et quatre espaces ; l'outil réécrit chaque ligne sur une unité de base et signale la profondeur maximale d'indentation pour la revue.

Comment l'outil choisit-il l'unité de base d'indentation ?

Pour les lignes indentées par espaces, il utilise le plus grand commun diviseur de tous les comptes positifs d'espaces de tête (unité de rapport par défaut deux si rien n'est indenté). Pour les lignes en tabulations, l'unité est une tabulation par niveau.

Que se passe-t-il si certaines lignes utilisent des tabulations et d'autres des espaces ?

Un mélange au niveau du document de tabulations et d'espaces n'a pas de motif unique clair ; convertissez d'abord vers un seul style, puis normalisez.

Puis-je convertir une indentation de deux espaces en quatre espaces ?

Les niveaux détectés sont conservés et chaque niveau est réécrit avec quatre espaces.

La normalisation modifie-t-elle le code à l'intérieur d'une ligne ?

Non. Seule la suite d'indentation de tête est réécrite. L'espacement intérieur, les espaces de fin et tous les caractères hors indentation restent inchangés.

Que deviennent les lignes vides et les sauts de ligne Windows ?

Les lignes entièrement vides restent vides et ne comptent pas dans la détection du style d'indentation. Les sauts de ligne Windows et les formats plus anciens sont unifiés avant la mesure, ils ne créent donc jamais d'écart.

Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.

POSThttps://api.kit.forhosting.com/text/text-indentation-normalize

Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.

curl -X POST https://api.kit.forhosting.com/text/text-indentation-normalize \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text":"def foo():\n  if True:\n      bar()\n    baz()"}'
{
  "text": "def foo():\n  if True:\n      bar()\n    baz()"
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "text.text_indentation_normalize",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.

par requête$0.002

Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.

max_tokens20000
HTTPCodeSignification
401unauthorizedClé API absente ou invalide : vérifiez l’en-tête Authorization.
402insufficient_balanceSolde insuffisant : rechargez votre compte pour lancer cette tâche.
404unknown_typeType de tâche inconnu : vérifiez le champ type de votre requête.
429rate_limitedTrop de requêtes : ralentissez la cadence, puis réessayez.

Lorsque la même ligne ou le document entier mélange tabulations et espaces sans motif clair, la tâche échoue avec invalid_input au lieu de deviner en silence. Le target_unit optionnel vous permet de redimensionner les niveaux basés sur les espaces (par exemple de deux à quatre) sans changer l'arbre logique de profondeur.

Comment fonctionnent la détection de l'unité de base et la réécriture des niveaux

Le target_unit optionnel ne s'applique qu'aux documents en style espaces : les niveaux sont conservés et la sortie utilise ce nombre d'espaces par niveau, ce qui permet de convertir un arbre à deux espaces en un arbre à quatre en un seul appel. L'entrée en style tabulations ignore target_unit afin de ne pas développer les tabulations en silence.

Contrat d'entrée, champs de réponse et comportement d'erreur

Préférez envoyer le corps multiligne brut plutôt que de collapser les sauts de ligne à l'avance lorsque vous voulez une sémantique réelle d'indentation par ligne ; une seule longue ligne n'a qu'une indentation à normaliser. Envoyez en POST un corps JSON avec un champ chaîne obligatoire text (alias input, value, string, s, content et body). La valeur doit être une chaîne non vide après trim global des espaces blancs et ne doit pas dépasser cent mille caractères, afin qu'un seul collage n'épuise pas la mémoire du Worker ou du navigateur. Le target_unit optionnel est un entier positif de un à trente-deux ; les non-entiers et les valeurs hors plage échouent à la validation. En cas de succès, la réponse renvoie input comme la chaîne d'origine, text comme le résultat multiligne réécrit joint avec LF, indent_style comme spaces, tabs ou none, indent_unit comme la taille effective de l'unité de sortie, detected_unit comme l'unité déduite avant tout override de cible, line_count comme le nombre de lignes y compris les vides, indented_lines comme le nombre de lignes ayant un niveau positif, max_level comme le niveau d'indentation le plus profond, levels comme le tableau de profondeur entière par ligne aligné sur lines, lines comme le tableau ordonné des chaînes de ligne réécrites, et message comme un court résumé du style, de l'unité, du nombre de lignes et du niveau maximal. Une validation échouée — text manquant, valeurs non chaîne, contenu vide, charge trop grande, target_unit invalide, mélange tabulation/espace sur la même ligne, ou mélange de styles au niveau du document — renvoie invalid_input et n'est jamais facturée. Le tarif est un forfait de $0.002 par requête réussie avec unité item. Lors de l'intégration, affirmez sur text ou lines pour le contenu nettoyé, comparez éventuellement levels et indent_unit pour les régressions, et traitez invalid_input comme un conflit de style côté client sur les collages mixtes, non comme un événement de facturation.

Quand utiliser cet outil et en quoi il diffère des recherches voisines

Utilisez cette capacité lorsque l'intention de recherche est de normaliser les niveaux d'indentation de texte, de corriger une indentation incohérente en ligne, de convertir un collage irrégulier de deux et quatre espaces en une seule unité, ou de détecter le style d'indentation tabulation versus espace avant un commit. Gardez à l'esprit les espaces de fin et les colonnes d'alignement intérieures — cet outil ne réécrit que la suite d'indentation de tête, pas les espaces d'alignement à l'intérieur d'une ligne. Ce n'est pas un formateur de code complet, ni un pretty printer conscient du langage, ni un suppresseur de lignes vides, ni un String.trim global qui détruirait la structure intentionnelle. Les contrôles aller-retour pour les tests sont simples : fournissez un bloc de trois lignes avec zéro, deux et quatre espaces de tête et attendez indent_unit deux avec levels zéro, un et deux ; fournissez des blocs imbriqués indentés uniquement en tabulations et attendez indent_style tabs avec des niveaux entiers correspondant aux comptes de tabulations ; envoyez délibérément une ligne commençant par une tabulation puis des espaces, ou une ligne en tabulation à côté d'une sœur en espaces, et confirmez invalid_input mentionnant le mélange de tabulations et d'espaces. Préférez str.trim_lines lorsque vous devez seulement retirer les espaces de tête et de fin de chaque ligne sans conserver un arbre de profondeur ; préférez data.json_format lorsque la charge est du JSON à pretty-print avec une indentation fixe ; préférez cette capacité lorsque des humains ont déjà écrit du texte hiérarchique brut ou des blocs de type code et que vous avez besoin d'une unité de base cohérente. Les tâches en échec qui renvoient invalid_input ne consomment pas le solde prépayé, ce qui maintient à bas coût la validation de formulaires et les tests négatifs de CI.

Préprocesseurs de CI et de linters

Les pipelines rejettent tôt les mélanges de tabulations et d'espaces avec invalid_input, ou normalisent les arbres en espaces seuls vers un target_unit de projet avant les contrôles de style.

Documentation, tutoriels et fixtures d'exercices

Auteurs et enseignants génèrent des exemples multilignes indentés de référence et des cas d'erreur de style mixte pour éditeurs, outils LMS et tests golden.

Combien coûte la normalisation de l'indentation de texte ?

L'outil navigateur est gratuit. Les requêtes API utilisent le solde KIT prépayé à $0.002 par appel réussi ; l'entrée invalide n'est pas facturée.

Consulter la documentation complète du KIT →