From sourcecode to documentation

Summary

Source code sharing of internal 4D components with 4D Partners Good news for me. I was looking for some behaviours of 4D SVG, which I would like to understand and use them more properly. I’m getting to lazy already, to open the source just for looking up some lines of code.

Source code sharing of internal 4D components with 4D Partners Das hörte ich gerne. Ich wollte das eine oder andere Verhalten von 4D SVG besser verstehen, um zu sehen, warum was so funktioniert und nicht anders. Inzwischen bin ich zu faul, den Source zu öffnen, nur um eine Methode anzusehen.


Ich wollte mir’s einfacher machen. Deshalb habe ich alle Methoden der Komponente geparsed, die Inhalte extrahiert, die Tokens formatiert und dann als styled-text wieder zusammengesetzt und schließlich in ein HTML-Template eingebaut. So sieht das jetzt aus:

jetzt habe ich meine Dokumentation who ich sie brauche

Natürlich bin ich nicht so vorgegangen. Zu viel Arbeit. Stattdessen habe ich mir diese Zeilen 4D-Code ausgedacht, die für jede Komponenten-Methode, die mich interessiert, wiederholt wird.

METHOD OPEN PATH($methodPath;*)
DELAY PROCESS(Current process;20)
INVOKE ACTION(ak select all)
INVOKE ACTION(ak copy)
$error:=osaScript ($methodPath)

die osaScript-function führt ein AppleScript aus, das Textedit anweist ein neues Dokument aus dem Inhalt der Zwischenablage zu erzeugen und dieses mit dem übergebenen Namen in $methodPath als RTF zu sichern. Schließlich führt es ein
shell script "textutil -convert html " & whichDocumentToConvert
aus und konvertiert das Textedit-Dokument in html

Die versteckte Perle ist 4D, das beim Kopieren des Methoden-Codes auch eine Kopie im RTF-Format in die Zwischenablage setzt, welches Textedit bevorzugt. Noch besser, mein Farbschema bleibt erhalten, viel schicker als das Mitgelieferte.

200 Methoden durchzurödeln dauert einige Minuten, auch auf V16R3 64-Bit. 200 Methoden-Fenster werden geöffnet und 200 Textedit-Dokumente angelegen. Danach kommt die richtige Arbeit: Option-Schließen in 4D und Textedit herzhaft beenden.

Damit die Dokumentations-Seiten angenehm aussehen, habe ich in einem weiteren Schritt mein CSS und die Navigations-Leiste (die Zeile 4D Code fehlt oben) in die HTML-Dokumente injiziert.

Ich kann leider nicht auf meine Dokumentation verlinken, das läßt die Lizenz nicht zu. Der Screenshot oben muß als Abbild der Idee reichen.

 


I was thinking about how to make life easier. So I extracted all methods of the component, parsed the content and set every token to a styled-text element which I then copied and pasted into an html-template. This is how it looks like:

having my documentation available where ever I want

Of course I didn’t do that. Too much work. What I did, was write this couple of lines of 4D code, repeated for every project-method I was interested in.

METHOD OPEN PATH($methodPath;*)
DELAY PROCESS(Current process;20)
INVOKE ACTION(ak select all)
INVOKE ACTION(ak copy)
$error:=osaScript ($methodPath)

The osaScript-function executes an AppleScript that tells Textedit to make a new document from clipboard, save that with the name given in $methodPath as RTF and then the AppleScript does run a
shell script "textutil -convert html " & whichDocumentToConvert
to convert the Textedit-document into html.

The hidden gem is 4D, copying the methode-code as RTF-formatted too, which Textedit appreciates. I love most, that my color-coding is preserved, which I prefer to the default one.

Doing this for some 200 methods takes a couple of minutes, at least on V16R3 64-Bit, to open 200 method-windows and create 200 Textedit documents. Closing is the work: option-closing in 4D and force-closing Textedit.

To make the pages look nicely, a further step injected some code into the converted html-files, to load CSS and insert a navigation (that line of 4D code is missing above).

I can’t link to my documentation-pages, for license reasons. Therefore the screenshot above might give you the idea.