2016-05-03 16 views
1

Unser Blog hat viele Codebeispiele. Da wir gerade Github-Seiten verwenden, wird der Markdown mit kramdown + rouge gerendert.Deaktiviere syntax raten in kramdown

Was bringt mich zu meiner Frage: Ist es möglich, Syntax-spezifische Hervorhebung mit Kramdown aktivieren?

Das Problem ist, dass kramdown scheint falsch zu denken, dass fast jeder Code, der mit { beginnt, ein JSON-Codeblock ist. Dies führt häufig zu "JSON-Fehler" in unseren Posts, wenn der enthaltene Code nicht JSON ist.

Kann ich diese Syntax 'raten' deaktivieren oder bin ich stecken text Sprache Flag zu falsch markierten Code-Blöcke oder noch schlimmer {:.language-text} für falsch markierten Code Spannen hinzufügen.

Hoffentlich gibt es eine einfache Möglichkeit, dies zu deaktivieren.

Antwort

1

Kramdown hat ein paar options:

coderay_default_lang

die Standardsprache Legt Blöcke für die Hervorhebung Code

Wenn keine Sprache für einen Codeblock gesetzt ist, wird die Standardsprache stattdessen verwendet. Der Wert muss eine der von coderay oder nil unterstützten Sprachen sein, wenn keine Standardsprache verwendet werden soll.

Sie können es auf nil gesetzt und haben keine standardmäßig oder auf text eingestellt, dass der Standard sein.

syntax_highlighter

der Highlighter Syntax Set

die Syntax Highlighter an, die für die Hervorhebung Codeblöcke und Spannweiten verwendet werden soll. Wenn diese Option auf nil festgelegt ist, wird keine Syntaxhervorhebung durchgeführt.

Optionen für den Syntax-Highlighter können mit der Konfigurationsoption syntax_highlighter_opts festgelegt werden.

Standard: coderay

Set syntax_highlighter-nil und haben überhaupt keine Syntax-Highlighter.

Oder Sie können es auf rouge setzen und übergeben in was auch immer Rouge unterstützt über die syntax_highlighter_opts Konfigurationsoption. Beispielsweise kann die Einstellung default_lang für Rouge Ihre Anforderungen erfüllen.

Sie können die Optionen über die Befehlszeile:

kramdown --coderay_default_lang=text 

oder in Ihrem Code in Ruby:

Kramdown::Document.new(source_text, {coderay_default_lang: "text"}) 

oder im Dokument selbst:

{::options coderay_default_lang="text" /} 

Es sein kann eine Möglichkeit, diese Optionen von der verwendeten Blog-Engine an KramDown weiterzugeben, aber ohne Angabe von dir benutzen, alles, was ich sagen kann, ist in der Dokumentation nachzulesen.

+0

Wird die Einstellung einer Standardsprache verhindern, dass cramdown fälschlicherweise entscheidet, dass etwas JSON ist? Zum Beispiel wird diese Inline-Code-Spanne '{key: value}' als ungültige JSON gerendert. – dbeach

+0

Leider scheint es keine Option speziell zu geben, um "Raten" zu aktivieren/deaktivieren. Sie können also nur einige Tests mit verschiedenen Einstellungen durchführen. Ich habe nur lokal überprüft, aber ich habe keine der relevanten Ruby-Bibliotheken für Syntax-Highlighting installiert. Versuchen Sie, diesen Befehl über die Befehlszeile auszuführen und sehen Sie, was Sie erhalten: 'echo" {key: value} "| kramdown --coderay_default_lang = text' und vergleiche die Ausgabe mit verschiedenen Optionen. – Waylan

+0

Das ist die Schlussfolgerung, zu der ich auch gekommen bin. Wir könnten die Volltext-Hervorhebung deaktivieren. Durch die Verwendung von Inline-Attributlisten ('{: .language-text}') für Bereichscodeelemente wird ein Großteil der Einfachheit der Abschrift entfernt. – dbeach