Blog der Heimetli Software AG

MarkdownProcessor

Was ist Markdown?

Textlastige HTML-Seiten schreibt man besser mit Markdown als in HTML. Markdown ist ein einfaches, lesbares Textformat, das mit vielen Tools in HTML umgewandelt werden kann.

Wenn man Markdown einmal kennt, findet man bald heraus, dass viele Applikationen die Eingabe von Markdown erlauben oder sogar vorschreiben. Beispiele sind Blogs und Site-Generatoren, aber auch Moodle kennt das Format.

Eine Beschreibung der Syntax finden Sie auf daringfireball.net

Weil ich HTML kenne, brauche ich selber nur einen kleinen Subset der möglichen Anweisungen, denn Markdown erlaubt das direkte einbetten von HTML in den Text.

Normalerweise nehme ich pandoc als Konverter, aber die vielen Optionen sind ganz schön verwirrend und unübersichtlich. Ich brauchte ein einfaches Tool ohne viele Optionen.

Standard-Markdown?

Bei der Suche nach einem Tool fand ich heraus, dass Markdown sehr schwach spezifiziert ist. Als "Spezifikation" dient hauptsächlich das perl-Script von John Gruber und die oben verlinkte Seite...

Jeder der einen Markdown-Prozessor schreibt, hat aber anscheinend noch eigene Ideen, so dass jede Implementation wieder andere Features hat.

Es gibt zwar einen Versuch, Markdown genau zu spezifizieren und Konverter nach dieser Spezifikation zu bauen. Die Spezifikation hat im Moment den Status "fast fertig" ;-)

Ob sich diese Spezifikaton am Ende durchsetzt ist auch nicht klar, denn die vielen Varianten in allen möglichen Tools sind ja heute schon im Einsatz.

Markdown-Konverter

Erstaunlicherweise gibt es ausser pandoc kaum einen fertigen Konverter für Markdown (oder ich habe sie nicht gefunden). Es gibt zwar viele Scripts für alle möglichen Scriptsprachen, aber unter Windows kann man kaum davon ausgehen dass zum Beispiel perl oder python installiert ist.

Was es gibt, sind viele Editoren die meist auch gleich eine HTML-Preview anbieten. Und für praktisch alle verbreiteten Editoren findet man zumindest einen Markdown-Plugin. Ich habe keinen dieser Editoren und Plugins angesehen, kann also nicht sagen ob die etwas taugen.

Libraries dagegen findet man in rauhen Mengen, vermutlich weil die Markdown-Funktionen meist in grössere Applikationen integriert sind.

Der MarkdownProcessor

Schlussendlich habe ich mich für MarkdownSharp entschieden und ein kleines Hauptprogramm dazu geschrieben:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using MarkdownSharp;

namespace MarkdownProcessor
{
    class Program
    {
        static void Main(string[] args)
        {
            if( args.Length != 2 )
            {
                System.Console.WriteLine( "usage: MarkdownProcessor inputfile outputfile" ) ;
                return ;
            }

            Markdown markdown = new Markdown( true ) ;

            try
            {
                String input  = File.ReadAllText( args[0] ) ;
                String output = markdown.Transform( input ) ;
                File.WriteAllText( args[1], output ) ;
            }
            catch( Exception e )
            {
                 System.Console.WriteLine( e.Message ) ;
            }
        }
    }
}

Den MarkDownProcessor können Sie herunterladen und Ihre Markdown-Files damit konvertieren:

MarkdownProcessor input.md output.html

Das erste Argument bestimmt den Namen des Markdown-Files, das zweite den Namen das Output-Files. MarkdownProcessor.exe.config ist ein XML-File das eine Option im Markdown-Objekt setzt.

Wer Lust hat, kann auch das C#-Projekt herunterladen und es an seine Bedürfnisse anpassen.

Update

Das Programm wurde später erweitert, lesen Sie auch MarkdownProcessor mit Template.