Nettoyer et minifier du code Ruby en ligne

Allégez un fichier Ruby : commentaires, lignes vides et indentation disparaissent, le programme reste strictement identique. Les numéros de ligne peuvent être conservés.

Niveau de protection

Réglages détaillés

Traitement 100 % local, rien n’est envoyé

Comment ça marche ?

Le nettoyage supprime les commentaires (# et blocs =begin / =end), les lignes vides, l’indentation et les espaces en double. Il ne touche ni aux chaînes, ni aux symboles, ni aux expressions régulières, ni aux littéraux %w[], ni aux documents « heredoc », ni à ce qui suit __END__.

Les lignes ne sont jamais jointes : les messages d’erreur restent proches de l’original, et l’option « Conserver les numéros de ligne » garde exactement la même numérotation. Le shebang, les commentaires magiques (# frozen_string_literal: true) et les licences sont conservés.

Exemples

Un fichier : 78 octets deviennent 53

Un fichier avec 2 commentaires et une ligne vide devient 4 lignes sans commentaire ni indentation : def saluer(nom), puts "Bonjour #{nom}", puts "Fin", end.

Heredoc préservé : 57 octets deviennent 45

Dans texte = <<~FIN, la ligne # ceci reste fait partie du texte et reste ; le commentaire # ceci part en fin de ligne puts texte disparaît. Avec « Conserver les numéros de ligne », les 4 lignes gardent leur numéro d’origine.

Questions fréquentes

Pourquoi les variables ne sont-elles pas renommées pour ce langage ?
Renommer sans risque exige de savoir ce que chaque nom désigne. En Ruby (introspection, `send`, `eval`) comme en C et C++ (macros, modèles, surcharges), cela suppose d’exécuter ou de compiler le programme, ce qu’un outil dans le navigateur ne peut pas faire. L’outil se limite donc à ce qui est certain : commentaires, lignes vides, espaces.
Comment savez-vous que le programme reste identique ?
L’analyseur est comparé à Ripper, l’analyseur de Ruby, sur l’ensemble de la bibliothèque standard : l’arbre syntaxique est le même avant et après. Si une construction n’est pas prise en charge (heredoc ouvert dans une interpolation), le code est laissé inchangé et un avertissement est affiché.
Le code réduit se comporte-t-il comme l’original ?
Oui : la réduction ne change que ce qui est sans effet (espaces, commentaires, noms purement locaux). Les noms visibles de l’extérieur (variables globales, exports, propriétés, paramètres de fonctions) restent intacts, car d’autres fichiers peuvent en dépendre. Testez toujours la version réduite avant de la publier.
Mon code est-il envoyé quelque part ?
Non. Le traitement se fait dans votre navigateur, dans un worker : votre code n’est ni envoyé, ni enregistré, et aucune requête n’est faite pendant la réduction. Seuls les moteurs sont téléchargés : esbuild (JavaScript, TypeScript, CSS) est servi par ce site, et l’interpréteur Python (environ 13 Mo, une seule fois) vient de jsDelivr, vérifié par une empreinte SHA-256 avant d’être utilisé.