2012-04-05 5 views
0

Ich arbeite an einer kleinen Sache, die etwas BBCode erfordern würde, und ich brauche es wirklich, Spoiler-Tags zu haben. Ich habe das Beispiel über das Hinzufügen meiner eigenen Tags zur Bibliothek gelesen, aber ich verstehe nicht wirklich, wie es funktioniert. Alles, was ich mit dem Spoiler-Tag machen möchte, ist eine schaltbare Schaltfläche, die etwas Text versteckt.Wie würde ich den Bb-Ruby-Edelstein erweitern, um mit Spoiler-Tags zu arbeiten?

+0

Fork den Repo, bearbeiten Sie den wichtigsten Ruby-Quellcode in 'lib /'? – element119

+0

[link] (http://rubydoc.info/gems/bbcoder/0.2.0/frames) Dies ist eine andere Bibliothek, die ich ausprobiert habe, aber sie unterstützt auch keine Spoiler. – RangerMauve

+1

Das Problem ist, dass ich nicht verstehe, wie die Erweiterung funktioniert, und ich weiß nicht genug HTML, damit es funktioniert. – RangerMauve

Antwort

0

Für bb-rubin es sieht aus wie Sie Ihre eigenen Tag-Definitionen senden können, wenn Sie bbcode_to_html als erstes Argument nennen ... so:

"Your string with [spoiler]spoiler[/spoiler]".bbcode_to_html(my_spoiler) 

mit my_spoiler Wesen:

my_spoiler = { 
    'Spoiler' => [ 
    /\[spoiler\](.*?)\[\/spoiler\]/mi, # regex to match spoiler 
    '<div class="spoiler"><a>Show Spoiler</a><p>\1</p></div>', # what to output, change this if needed 
    'Spoiler text',     # description 
    '[spoiler]this is a spoiler[/spoiler]', # sample 
    :spoiler       # actual tag used 
    ] 
} 

Sie ‚ll Notwendigkeit, die Ausgabe zu ändern, was Sie brauchen, und auch Javascript, um die Spoiler so in jQuery zu zeigen:

$('.spoiler').each(function() { 
    $(this).find('p').hide(); 
    $(this).find('a').click(function() { 
    $(this).find('p').toggle(); 
    }); 
}); 

Ich habe bemerkt, dass du gesagt hast, dass du auch bbcoder ausprobiert hast, da ich der Autor bin, werde ich auch schreiben, wie man das macht. Für bbcoder müssen Sie so etwas wie dies in Ihrer Anwendung Initialisierung setzen oder bevor Sie beginnen die eigentlichen Strings Parsen:

BBCoder.configure do 
    tag :spoiler do 
    <<-EOS 
<div class="spoiler"> 
    <a>Show Spoiler</a> 
    <p>#{content}</p> 
</div> 
    EOS 
    end 
end 

Nachdem Sie BBCoder konfigurieren Sie sind gut zu gehen, und es wird von da an über die Spoiler-Tag kennen und parsen es für Sie, so dass Sie nur tun müssen, um

"My [spoiler]spoiler string[/spoiler]".bbcode_to_html 

ich nicht diese Lösungen getestet haben, aber sie sollten ohne viel Aufhebens arbeiten.