2017-01-14 1 views
1

Ich versuche, eine benutzerdefinierte erstellen, oder ändern Sie die vorhandene, Methodenformatierer, um mit verschiedenen Stilen der Anordnung von Code zu experimentieren.Einfacher Formatierer und versuchen, einen benutzerdefinierten Formatierungsstil um Code herum zu erstellen?

BISimpleFormatter ist eine Unterklasse von RBProgramNodeVisitor, also möchte ich auch so etwas verwenden.

Wie kann ich als allgemeiner Ausgangspunkt vor und nach jedem Code-Knoten eigene Zeichen (Leerzeichen oder Tabulatoren) einfügen?

Antwort

2

Erstellen Sie eine Unterklasse von BISimpleFormatter. Für jede #visit<XYZ> Methode in der BISimpleFormatter implementieren Sie in Ihrer Klasse die gleiche Methode, indem Sie die Vor-Dekoration, die Sie wollen, dann rufen Sie super visit<XYZ> und beenden Sie mit Ihrem Post-Dekoration.

Zum Beispiel

MySpaciousFormatter konnte jedes Mal, wenn etwas auf den Linien von

visitLiteralNode: aLiteralNode 
    codeStream space. 
    super visitLiteralNode: aLiteralNode. 
    codeStream space 

Auf diese Weise machen die Formatierer ist über ein LiteralNode es um es ausdrückte Räume werden zu drucken. Ich bin sicher, du hast viel bessere Ideen; Ich wollte dir nur ein einfaches Beispiel geben.

Verwandte Themen