2 votes

Rails Syntax highlighter albino ne fonctionne pas

J'utilise le surligneur syntaxique "albino" dans mon projet rails, mais il n'affiche rien.

J'ai écrit le code ci-dessous

dans le modèle d'aide

def highlight(text)
  Albino.new(text, :ruby)
end 

En vue

<% @codes.each do |code| %>
  <%= highlight(code) %>
<% end %>

Quelqu'un peut-il m'aider à comprendre où je me trompe ? ou suggérer une bonne gemme de mise en évidence pour les rails ?

0voto

Wukerplank Points 3164

Quelles sont les erreurs que vous obtenez ?

Il vous manque un . après @codes :

<% @codes.each do |code| %>
  <%= highlight(code) %>
<% end %>

0voto

Paul Russell Points 3280

Il me semble que votre aide crée une nouvelle instance d'Albino mais qu'elle ne lui demande pas réellement de faire de la coloration syntaxique.

Modifiez votre aide comme suit :

def highlight(text)
  Albino.colorize(text, :ruby)
end

0voto

Paul Russell Points 3280

Avez-vous envisagé d'utiliser Google Code Prettify ? Il s'agit du surligneur syntaxique utilisé à la fois sur Google Code et Stack Overflow, ce qui signifie probablement qu'il est raisonnablement robuste.

Normalement, je n'aime pas mettre trop de fonctionnalités dans JavaScript, mais il me semble que la coloration syntaxique est une fonctionnalité raisonnable à ajouter de cette façon - après tout, le code sera toujours lisible sans la coloration.

0voto

Tamachan87 Points 277

C'est un problème un peu ancien, mais je viens de le rencontrer moi-même.

Le problème est qu'Albino produit du HTML directement lors de son analyse (je pense que c'est le bon mot, je suis assez novice en la matière).

Par exemple :

highlight(text)

Et le texte l'est :

def hello_world
  puts "Hello World!".to_s
end

Il en résultera :

<div class="highlight"><pre><span class="k">def</span> <span class="nf">hello_world</span> <span class="nb">puts</span> <span class="s2">&quot;Hello World!&quot;</span><span class="o">.</span><span class="n">to_s</span> <span class="k">end</span> </pre> </div>

Ce qu'il faut faire, c'est ajouter .html_safe dans votre méthode de mise en évidence.

Albino.colorize(text).html_safe

Ça devrait marcher.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X