Ich verwende Redcarpet Markdown auf meiner Rails-Website. Oft möchte ich einem Absatz, einer Tabelle oder einem anderen Element Klassen (oder andere Attribute) hinzufügen, aber es lässt dies nicht zu. Wenn ich das Markdown-Element durch HTML ersetze, muss ich auch den inneren Markdown durch HTML ersetzen, was ein Ärgernis ist.
Ich möchte zum Beispiel die Klasse "table" zum Markdown-Tabellenelement hinzufügen (damit es den Tabstyling von Bootstrap bekommt), aber dann muss ich die Markdown-Tabelle durch HTML ersetzen.
Was ist die einfachste Lösung dafür? Gibt es eine einfache Möglichkeit, den Markdown so zu modifizieren, dass er mit Klassen umgehen kann? Oder gibt es eine Möglichkeit, Markdown in einem HTML-Element zuzulassen?
Beispielaktualisierung
Ich möchte eine Klasse zu einem div, einer Tabelle oder einem Absatz hinzufügen, aber die Markierung innerhalb des Elements beibehalten. Ich möchte zum Beispiel folgenden HTML erzeugen:
%Vor%Es gibt zwei mögliche Lösungen, aber ich weiß nicht, wie man sie mit Redcarpet Markdown macht:
Erhalte spezielle Markdown-Syntax für Klassen, zB:
{class: cool}
**Hello world** [Google](http://google.com)
Erlaube Markdown, in HTML-Elementen zu arbeiten:
<p class="cool">
**Hello world** [Google](http://google.com)
</p>
Momentan mache ich solche Elemente nur in reinem HTML ohne Abschriften. Aber wie kann ich # 1 oder # 2 zum Arbeiten bekommen?
Sie können einen eigenen Renderer erstellen (basierend auf Redcarpet::Render::HTML
), der die Methoden außer Kraft setzt, die Sie anpassen möchten:
Benutzerdefinierte Renderer werden durch Erben von einem vorhandenen Renderer erstellt. Die integrierten Renderer,
%Vor%HTML
undXHTML
, können wie folgt erweitert werden:Aber neue Renderer können auch von Grund auf neu erstellt werden (siehe
lib/redcarpet/render_man.rb
für eine Beispielimplementierung von a Manpage Renderer)
<<snip>>
Die folgenden Instanzmethoden können vom Renderer implementiert werden:
<<snip>>
- Tabelle (Header, Körper)
<<snip>>
- raw_html (raw_html)
Um zum Beispiel Markdown innerhalb von Roh-HTML zu aktivieren, würde ich vorschlagen, ein <markdown>
-Element anzugeben, das Sie extrahieren und rendern können ( Warnung - nicht getesteter Code vorher ):
Überschreiben Sie diese Methoden, um entweder die benötigte Klasse zu Ihrer Tabelle hinzuzufügen oder rekursiv render
von Elementen in Ihrem HTML-Code aufzurufen.
Tags und Links rendering ruby-on-rails markdown redcarpet github-flavored-markdown