2017-01-10 4 views
0

Quelqu'un at-il de l'expérience avec les gemmes Redcarpet et Rouge pour Rails? J'essaie d'utiliser les gems pour syntaxhighlighting dans mon blogapplication. Je fondé ma mise en œuvre sur ce blogpost:Syntaxhighlighting avec Redcarpet et Rouge ne fonctionne pas dans Rails 5 application

http://www.brettdemetris.com/posts/4

Ce sont les étapes de mon travail:

I mis en œuvre les pierres précieuses (redcarpet, Rouge)

mon fichier Applicationhelper ressemble à ceci:

J'ai une feuille de style pour Rouge: app/assets/stylesheets/rouge.css.erbJ'ai une feuille de style pour Rouge: app/assets/stylesheets/rouge.css.erb
<%= Rouge::Themes::Github.render(:scope => '.highlight, code') %> 

.highlight { 
    background-color: #f5f7f9; 
    padding: 1em; 
} 

.highlight .err { 
    color: #a61717; 
    background-color: #f5f7f9; 
} 

Apperently la conversion aux travaux de démarques, mais pas la coloration syntaxique avec Rouge:

par exemple lorsque j'utilise ce code dans mon blogpost:

```ruby 
e = "some ruby code" 
e.puts 
``` 

le code ne soit pas mis en évidence.

la sortie de l'extrait de code ci-dessus est la suivante:

<pre><code class="ruby">e = &quot;some variable&quot; 
e.puts 
</code></pre> 

Est-ce que je manque quelque chose?

mon dépôt de code est ici:

https://github.com/acandael/personalsite/tree/markdown

des conseils est très apprécié

salutations,

Anthony

+0

Quelle est la sortie produite par votre méthode/assistant 'markdown' pour votre exemple de ruby? Aussi, si je ne me trompe pas, 'fenced_code_blocks: true' est [une extension] (https://github.com/vmg/redcarpet#user-content-and-its-like-really-simple-to-use) (devrait être dans votre hachage 'extensions', pas' options'). (même pour 'space_after_headers') – julp

+0

merci julp pour le conseil, la sortie du code est enveloppée dans les pré-tags – Toontje

+0

en ajoutant à ma réponse précédente à julp, la sortie est également enveloppée dans des balises de code avec un class = ruby ​​ – Toontje

Répondre

0

Pour les personnes intéressées, c'est le code de travail dans mon applicationhelper:

app/helpers/application_helper.rb 

module ApplicationHelper 

require 'redcarpet' 
require 'rouge' 
require 'rouge/plugins/redcarpet' 

class HTML < Redcarpet::Render::HTML 
    include Rouge::Plugins::Redcarpet 

    def block_code(code, language) 
    Rouge.highlight(code, language || 'text', 'html') 
    end 
end 

def markdown(text) 
    options = { 
     filter_html:  true, 
     hard_wrap:  true, 
     link_attributes: { rel: 'nofollow', target: "_blank" } 
    } 

    extensions = { 
     autolink:   true, 
     highlight:   true, 
     superscript:  true, 
     disable_indented_code_blocks: true, 
     space_after_headers: true, 
     fenced_code_blocks: true 
    } 

    #renderer = Redcarpet::Render::HTML.new(options) 
    renderer = HTML.new(options) 
    markdown = Redcarpet::Markdown.new(renderer, extensions) 

    markdown.render(text).html_safe 
    end 
end 

est ce que je mis en œuvre dans la vue:

app/views/articles/show.html.erb 

<%= raw(markdown(@article.body)) %> 

Le démarquage et travaille maintenant coloration syntaxique.