Files
old-holivud2/app/helpers/notes_helper.rb
2020-05-31 22:38:19 +02:00

73 lines
1.3 KiB
Ruby

module NotesHelper
def notes_preview(notes)
NotePreview.new(self, notes).to_html
end
class NotePreview
def initialize(view, notes)
@view = view
@notes = notes
end
def to_html
return if notes.empty?
safe_join [
content,
tag(:br),
timestamp_with_author,
link_to_additional_notes,
]
end
private
attr_reader :view, :notes
delegate :content_tag, :link_to, :mail_to, :pluralize, :safe_join, :tag, :time_ago_in_words, to: :view
def first_note
notes.first
end
def additional_notes
notes.drop(1)
end
def content
first_note.content
end
def link_to_additional_notes
return if additional_notes.empty?
badge = link_to([first_note.notable, :notes, locale: I18n.locale], remote: true, class: "badge badge-primary") do
pluralize(additional_notes.size, "more note")
end
safe_join [
tag(:br),
badge,
]
end
def timestamp_with_author
content_tag(:small) do
safe_join [timestamp, author]
end
end
def timestamp
time_ago_in_words(first_note.created_at) + " ago "
end
def author_email
first_note.email
end
def author
safe_join ["(", mail_to(author_email), ")"]
end
end
end