diff --git a/app/models/story.rb b/app/models/story.rb index d21cb32..f0a6d59 100644 --- a/app/models/story.rb +++ b/app/models/story.rb @@ -221,12 +221,19 @@ class Story < ActiveRecord::Base self.markeddown_description = self.generated_markeddown_description end - def description_or_story_cache - if self.description.present? + def description_or_story_cache(chars = 0) + s = if self.description.present? self.markeddown_description.gsub(/<[^>]*>/, "") else self.story_cache end + + if chars > 0 + # remove last truncated word + s = s.to_s[0, chars].gsub(/ [^ ]*$/, "") + end + + HTMLEntities.new.decode(s.to_s) end def domain diff --git a/app/views/stories/_listdetail.html.erb b/app/views/stories/_listdetail.html.erb index b58dd7c..222162e 100644 --- a/app/views/stories/_listdetail.html.erb +++ b/app/views/stories/_listdetail.html.erb @@ -81,9 +81,9 @@ class="story <%= story.vote && story.vote[:vote] == 1 ? "upvoted" : "" %> <% if !(defined?(single_story) && single_story) && @user && @user.show_story_previews? %> - <% if (sc = story.description_or_story_cache).present? %> + <% if (sc = story.description_or_story_cache(500)).present? %>
- <%= break_long_words(sc[0, 500]) %> + <%= break_long_words(sc) %>
<% end %> <% end %>