28 lines
668 B
Ruby
28 lines
668 B
Ruby
# frozen_string_literal: true
|
|
|
|
module Onebox
|
|
module Engine
|
|
class AsciinemaOnebox
|
|
include Engine
|
|
include StandardEmbed
|
|
|
|
always_https
|
|
matches_regexp(/^https?:\/\/asciinema\.org\/a\/[\p{Alnum}_\-]+$/)
|
|
|
|
def to_html
|
|
"<script type='text/javascript' src='https://asciinema.org/a/#{match[:asciinema_id]}.js' id='asciicast-#{match[:asciinema_id]}' async></script>"
|
|
end
|
|
|
|
def placeholder_html
|
|
"<img src='https://asciinema.org/a/#{match[:asciinema_id]}.png'>"
|
|
end
|
|
|
|
private
|
|
|
|
def match
|
|
@match ||= @url.match(/asciinema\.org\/a\/(?<asciinema_id>[\p{Alnum}_\-]+)$/)
|
|
end
|
|
end
|
|
end
|
|
end
|