diaspora/app/helpers/posts_helper.rb
Damien f4b3f2fd1e Consider Markdown header content as post title
clarify regexp and correct some bad backtracking

add specs

rewrite regex

convert mardown style title to plain text title

fix bad indentation

add jasmine test for post-viewer.js

tries to fix bad jasmine test
2013-07-31 14:59:02 +02:00

37 lines
1.7 KiB
Ruby

# Copyright (c) 2012, Diaspora Inc. This file is
# licensed under the Affero General Public License version 3 or later. See
# the COPYRIGHT file.
module PostsHelper
def post_page_title(post, opts={})
if post.is_a?(Photo)
I18n.t "posts.show.photos_by", :count => 1, :author => post.status_message_author_name
elsif post.is_a?(Reshare)
I18n.t "posts.show.reshare_by", :author => post.author_name
else
if post.text.present?
if opts.has_key?(:length)
truncate(post.text(:plain_text => true), :length => opts.fetch(:length))
elsif /\A(?: # Regexp to match a Markdown header present on first line :
(?<setext_content>.{1,200}\n(?:={1,200}|-{1,200}))(?:\r?\n|$) # Setext-style header
| # or
(?<atx_content>\#{1,6}\s.{1,200})(?:\r?\n|$) # Atx-style header
)/x =~ post.text(:plain_text => true)
return setext_content unless setext_content.nil?
return atx_content unless atx_content.nil?
else
truncate(post.text(:plain_text => true), :length => 20 )
end
elsif post.respond_to?(:photos) && post.photos.present?
I18n.t "posts.show.photos_by", :count => post.photos.size, :author => post.author_name
end
end
end
def post_iframe_url(post_id, opts={})
opts[:width] ||= 516
opts[:height] ||= 315
host = AppConfig.pod_uri.authority
"<iframe src='#{Rails.application.routes.url_helpers.post_url(post_id, :host => host)}' width='#{opts[:width]}px' height='#{opts[:height]}px' frameBorder='0'></iframe>".html_safe
end
end