Verwenden Sie hübscher, um JavaScript -Codeblöcke in einer Trichterweb -Datei zu formatierenJavaScript

Javascript-Forum
Anonymous
 Verwenden Sie hübscher, um JavaScript -Codeblöcke in einer Trichterweb -Datei zu formatieren

Post by Anonymous »

Ich habe eine Trichterweb -Datei, deren @{... @} Codeblöcke in ein JavaScript -Programm verwickelt sind. Ich möchte hübscher verwenden, um diese Codeblöcke zu formatieren, während ich die Non-Code-Trichterquelle unverändert bleibt. BR /> Ich verwende ein Node.js -Programm, das die Dateizeile für Zeile verarbeitet. Wenn es sich nicht im Status "Codeblock" befindet, kopiert es einfach jede Zeile in die Ausgabe. Aber: < /p>
  • Wenn eine Zeile mit einer Code -Block -Definition@$@@{< /code> beginnt, gibt sie diese Zeile aus. Erstellt einen neuen "Codepuffer" und wechselt in den Status "Code Block". /> Wenn eine Zeile mit beginnt @} verlässt den Status "Code Block", verarbeitet den Codepuffer mit schöneren und gibt die resultierenden Zeilen aus, gefolgt von der aktuellen Zeile.
Das Problem ist, dass der Inhalt des Codeblocks @{... @} im Codepuffer normalerweise kein JavaScript-Programm enthält, das von schöner als fehlerfrei angesehen wird. Dies liegt daran, dass FunnelWeb ohne Rücksicht auf die Programmiersprache, die sie enthalten, in andere Codeblöcke einfügen und in andere Codeblöcke einfügen. Insbesondere < /p>

Ein Codeblock kann @ < /code> auf andere Codeblöcke enthalten < /li>
< LI> Ein Codeblock enthält oft eine Methode einer Klasse und sieht aus wie

Code: Select all

method(args) {...}
< /code>
und schöner lehnt dies in Abwesenheit der Umgebung abclass ClassName {...}
< /code>
< /li>
< /ul>
Um diese beiden Probleme zu umgehen, mein Knoten.js Programm < /p>
 < Br/>  Wraps@ 
In der Kommentarsyntax wie /*@*/ bevor schöner Formatierung /> Konvertiten Eine uneinheitliche Methode (args) { in die Funktion/*m*/methode (args) { bevor schöner Formatierung Methode (args) { in die Funktion/*s*/methode (args) { vor hübscher Formatierung und konvertiert sie zurück danach.

Code: Select all

code = code
.replaceAll("function /*s*/", "static")
.replaceAll("function /*m*/ ", "")
.replace(/\/\*|\*\//g, "");
< /code>
Und wenn ein Codeblock immer noch nicht von schöneren formatiert werden kann, wird der nicht formatierte Code ausgegeben. formatiert sind Einzeiler wie < /p>
@$@+=@{
ClassName,
@}
Wieder meine Frage: Hat jemand dies versucht und einen besseren Ansatz gefunden?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post