mirror of
https://github.com/discourse/discourse.git
synced 2024-11-23 10:41:45 +08:00
4b4f2330da
The chat quoting mechanism will need to be able to generate markdown for all kinds of uploads. The UploadMarkdown class was missing generation for video and audio uploads. This commit adds that in, and also expands the server-side regex recognition of FileHelper types to match those in uploads.js, and adds a spec for UploadMarkdown
40 lines
1.1 KiB
Ruby
40 lines
1.1 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
class UploadMarkdown
|
|
def initialize(upload)
|
|
@upload = upload
|
|
end
|
|
|
|
def to_markdown(display_name: nil)
|
|
if FileHelper.is_supported_image?(@upload.original_filename)
|
|
image_markdown
|
|
elsif FileHelper.is_supported_playable_media?(@upload.original_filename)
|
|
playable_media_markdown
|
|
else
|
|
attachment_markdown(display_name: display_name)
|
|
end
|
|
end
|
|
|
|
def image_markdown
|
|
"![#{@upload.original_filename}|#{@upload.width}x#{@upload.height}](#{@upload.short_url})"
|
|
end
|
|
|
|
def attachment_markdown(display_name: nil, with_filesize: true)
|
|
human_filesize = with_filesize ? " (#{@upload.human_filesize})" : ""
|
|
display_name ||= @upload.original_filename
|
|
|
|
"[#{display_name}|attachment](#{@upload.short_url})#{human_filesize}"
|
|
end
|
|
|
|
def playable_media_markdown
|
|
type = \
|
|
if FileHelper.is_supported_audio?(@upload.original_filename)
|
|
"audio"
|
|
elsif FileHelper.is_supported_video?(@upload.original_filename)
|
|
"video"
|
|
end
|
|
return attachment_markdown if !type
|
|
"![#{@upload.original_filename}|#{type}](#{@upload.short_url})"
|
|
end
|
|
end
|