module AsciicastsHelper def player(asciicast, options = PlaybackOptions.new, skip_titlebar = false) render 'asciicasts/player', asciicast: AsciicastSerializer.new(asciicast, v0: options.v0), options: options, skip_titlebar: skip_titlebar end def screenshot_javascript_tag js = assets.find_asset('embed.js').to_s content_tag(:script, js.html_safe) end def screenshot_stylesheet_tag css = translate_asset_paths(assets.find_asset('screenshot.css').to_s) content_tag(:style, css.html_safe) end def embed_script(asciicast) src = asciicast_url(asciicast, format: :js) id = "asciicast-#{asciicast.to_param}" %() end def embed_html_link(asciicast) img_src = asciicast_url(asciicast, format: :png) url = asciicast_url(asciicast) width = %{width="#{asciicast.image_width}"} if asciicast.image_width %() end def embed_markdown_link(asciicast) img_src = asciicast_url(asciicast, format: :png) url = asciicast_url(asciicast) "[![asciicast](#{img_src})](#{url})" end private def translate_asset_paths(css) css.gsub(/['"]\/assets\/(.+?)(-\w{64})?\.(.+?)['"]/) { |m| path = assets.find_asset("#{$1}.#{$3}").pathname "'#{path}'" } end end