Allow images in the daily digest for top scoring posts

This commit is contained in:
Robin Ward 2013-06-05 18:54:46 -04:00
parent 0dc678c1e7
commit 6384518599
3 changed files with 34 additions and 17 deletions

View File

@ -12,7 +12,8 @@
<%- if t.best_post.present? %>
<%= raw(t.best_post.excerpt(1000,
strip_links: true,
text_entities: true)) %>
text_entities: true,
markdown_images: true)) %>
--------------------------------------------------------------------------------

View File

@ -9,6 +9,7 @@ class ExcerptParser < Nokogiri::XML::SAX::Document
options || {}
@strip_links = options[:strip_links] == true
@text_entities = options[:text_entities] == true
@markdown_images = options[:markdown_images] == true
end
def self.get_excerpt(html, length, options)
@ -21,9 +22,17 @@ class ExcerptParser < Nokogiri::XML::SAX::Document
me.excerpt
end
def include_tag(name, attributes)
characters("<#{name} #{attributes.map{|k,v| "#{k}='#{v}'"}.join(' ')}>", false, false, false)
end
def start_element(name, attributes=[])
case name
when "img"
# If include_images is set, include the image in markdown
characters("!") if @markdown_images
attributes = Hash[*attributes.flatten]
if attributes["alt"]
characters("[#{attributes["alt"]}]")
@ -32,12 +41,12 @@ class ExcerptParser < Nokogiri::XML::SAX::Document
else
characters("[image]")
end
characters("(#{attributes['src']})") if @markdown_images
when "a"
unless @strip_links
c = "<a "
c << attributes.map{|k,v| "#{k}='#{v}'"}.join(' ')
c << ">"
characters(c, false, false, false)
include_tag(name, attributes)
@in_a = true
end
when "aside"

View File

@ -105,14 +105,7 @@ test
describe "Excerpt" do
it "should have an option to strip links" do
PrettyText.excerpt("<a href='http://cnn.com'>cnn</a>",100, strip_links: true).should == "cnn"
end
it "should preserve links" do
PrettyText.excerpt("<a href='http://cnn.com'>cnn</a>",100).should == "<a href='http://cnn.com'>cnn</a>"
end
context "images" do
it "should dump images" do
PrettyText.excerpt("<img src='http://cnn.com/a.gif'>",100).should == "[image]"
end
@ -125,6 +118,20 @@ test
PrettyText.excerpt("<img src='http://cnn.com/a.gif' title='car'>",100).should == "[car]"
end
it "should convert images to markdown if the option is set" do
PrettyText.excerpt("<img src='http://cnn.com/a.gif' title='car'>", 100, markdown_images: true).should == "![car](http://cnn.com/a.gif)"
end
end
it "should have an option to strip links" do
PrettyText.excerpt("<a href='http://cnn.com'>cnn</a>",100, strip_links: true).should == "cnn"
end
it "should preserve links" do
PrettyText.excerpt("<a href='http://cnn.com'>cnn</a>",100).should == "<a href='http://cnn.com'>cnn</a>"
end
it "should deal with special keys properly" do
PrettyText.excerpt("<pre><b></pre>",100).should == ""
end