Signatur
Beschreibung
CommonMark\Render\Man ist eine Funktion aus der PHP-Erweiterung CommonMark (pecl/commonmark) und wandelt einen geparsten CommonMark-Dokumentbaum in das Man-Page-Format (troff/groff) um. Man-Pages sind das traditionelle Unix-Dokumentationsformat und werden mit dem Befehl man angezeigt.
Diese Funktion ist sinnvoll, wenn PHP-Anwendungen Dokumentationen, Handbücher oder Hilfeseiten direkt aus Markdown-Quellen als Unix-Man-Pages erzeugen sollen, ohne externe Werkzeuge wie pandoc zu benötigen. Der Eingabeknoten sollte typischerweise durch CommonMark\Parse erzeugt worden sein.
Über den Parameter options lassen sich Render-Optionen als Bitmask übergeben (z. B. CommonMark\Option\HARDBREAKS). Der Parameter width steuert die Textbreite für den Umbruch; der Wert 0 deaktiviert den automatischen Zeilenumbruch.
- Erfordert die PECL-Erweiterung
commonmark(>= 1.0.0). - Das Ausgabeformat ist direkt kompatibel mit
man,nroffundgroff.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $node Pflicht | CommonMark\Node | Der Wurzelknoten des geparsten CommonMark-Dokumentbaums, üblicherweise ein Rückgabewert von CommonMark\Parse(). |
|
| $options | int | 0 | Optionale Bitmask aus CommonMark\Option\*-Konstanten, die das Render-Verhalten steuern, z. B. CommonMark\Option\HARDBREAKS für harte Zeilenumbrüche. |
| $width | int | 0 | Maximale Zeilenbreite für den automatischen Textumbruch. Der Wert 0 deaktiviert den Umbruch vollständig. |
Rückgabewert
Beispiele
Einfaches Markdown-Dokument als Man-Page rendern
<?php
// Markdown-Quelle
$markdown = "# meinprogramm(1)\n\n## BESCHREIBUNG\n\nDies ist eine **Beispiel**-Man-Page, erzeugt aus Markdown.\n\n## OPTIONEN\n\n- `-h` — Hilfe anzeigen\n- `-v` — Version ausgeben\n";
// Parsen des Markdown-Textes in einen Dokumentbaum
$document = CommonMark\Parse($markdown);
// Rendern als Man-Page
$manPage = CommonMark\Render\Man($document);
echo $manPage;
Man-Page mit Zeilenbreite und Optionen erzeugen
<?php
$markdown = "# beispiel(1)\n\n## SYNOPSIS\n\n`beispiel [OPTIONEN] DATEI`\n\n## BESCHREIBUNG\n\nEin längerer Beschreibungstext, der bei Bedarf umgebrochen werden soll.\n";
$document = CommonMark\Parse($markdown);
// Rendern mit Zeilenbreite 80 und aktivierten Hard-Breaks
$manPage = CommonMark\Render\Man(
$document,
CommonMark\Option\HARDBREAKS,
80
);
// Ausgabe in eine Datei schreiben
file_put_contents('/usr/share/man/man1/beispiel.1', $manPage);
echo "Man-Page erfolgreich gespeichert.\n";
// Wichtig · Fallstricke
Hinweis zur Erweiterung: CommonMark\Render\Man ist Teil der PECL-Erweiterung commonmark, die separat installiert werden muss (pecl install commonmark). Sie ist nicht im PHP-Kern enthalten.
Das Ausgabeformat entspricht dem klassischen troff/groff-Format. Für eine korrekte Darstellung mit man muss die erzeugte Datei im richtigen Verzeichnis (/usr/share/man/man1/ etc.) abgelegt und mit mandb indiziert werden.
Ungültige oder null-Knoten als Eingabe führen zu einem Error. Stelle sicher, dass CommonMark\Parse() einen gültigen Knoten zurückgegeben hat, bevor du ihn an diese Funktion übergibst.