def video node
xml = @xml_mode
id_attribute = node.id ? %( id="#{node.id}") : nil
classes = ['videoblock', node.role].compact
class_attribute = %( class="#{classes * ' '}")
title_element = node.title? ? %(\n<div class="title">
width_attribute = (node.attr? 'width') ? %( width="#{node.attr 'width'}") : nil
height_attribute = (node.attr? 'height') ? %( height="#{node.attr 'height'}") : nil
case node.attr 'poster'
when 'vimeo'
unless (asset_uri_scheme = (node.document.attr 'asset-uri-scheme', 'https')).empty?
asset_uri_scheme = %(#{asset_uri_scheme}:)
end
start_anchor = (node.attr? 'start', nil, false) ? %(#at=#{node.attr 'start'}) : nil
delimiter = '?'
autoplay_param = (node.option? 'autoplay') ? %(#{delimiter}autoplay=1) : nil
delimiter = '&' if autoplay_param
loop_param = (node.option? 'loop') ? %(#{delimiter}loop=1) : nil
%(<div#{id_attribute}#{class_attribute}>#{title_element}
<div class="content">
<iframe#{width_attribute}#{height_attribute} src="#{asset_uri_scheme}//player.vimeo.com/video/#{node.attr 'target'}#{start_anchor}#{autoplay_param}#{loop_param}" frameborder="0"#{(node.option? 'nofullscreen') ? nil : (append_boolean_attribute 'allowfullscreen', xml)}></iframe>
</div>
</div>)
when 'youtube'
unless (asset_uri_scheme = (node.document.attr 'asset-uri-scheme', 'https')).empty?
asset_uri_scheme = %(#{asset_uri_scheme}:)
end
rel_param_val = (node.option? 'related') ? 1 : 0
start_param = (node.attr? 'start', nil, false) ? %(&start=#{node.attr 'start'}) : nil
end_param = (node.attr? 'end', nil, false) ? %(&end=#{node.attr 'end'}) : nil
autoplay_param = (node.option? 'autoplay') ? '&autoplay=1' : nil
loop_param = (node.option? 'loop') ? '&loop=1' : nil
controls_param = (node.option? 'nocontrols') ? '&controls=0' : nil
if node.option? 'nofullscreen'
fs_param = '&fs=0'
fs_attribute = nil
else
fs_param = nil
fs_attribute = append_boolean_attribute 'allowfullscreen', xml
end
modest_param = (node.option? 'modest') ? '&modestbranding=1' : nil
theme_param = (node.attr? 'theme', nil, false) ? %(&theme=#{node.attr 'theme'}) : nil
hl_param = (node.attr? 'lang') ? %(&hl=#{node.attr 'lang'}) : nil
target, list = (node.attr 'target').split '/', 2
if (list ||= (node.attr 'list', nil, false))
list_param = %(&list=#{list})
else
target, playlist = target.split ',', 2
if (playlist ||= (node.attr 'playlist', nil, false))
list_param = %(&playlist=#{playlist})
else
list_param = loop_param ? %(&playlist=
end
end
%(<div#{id_attribute}#{class_attribute}>#{title_element}
<div class="content">
<iframe#{width_attribute}#{height_attribute} src="#{asset_uri_scheme}//www.youtube.com/embed/#{target}?rel=#{rel_param_val}#{start_param}#{end_param}#{autoplay_param}#{loop_param}#{controls_param}#{list_param}#{fs_param}#{modest_param}#{theme_param}#{hl_param}" frameborder="0"#{fs_attribute}></iframe>
</div>
</div>)
else
poster_attribute = (val = node.attr 'poster', nil, false).nil_or_empty? ? nil : %( poster="#{node.media_uri val}")
preload_attribute = (val = node.attr 'preload', nil, false).nil_or_empty? ? nil : %( preload="#{val}")
start_t = node.attr 'start', nil, false
end_t = node.attr 'end', nil, false
time_anchor = (start_t || end_t) ? %(#t=#{start_t}#{end_t ? ',' : nil}#{end_t}) : nil
%(<div#{id_attribute}#{class_attribute}>#{title_element}
<div class="content">
<video src="#{node.media_uri(node.attr 'target')}#{time_anchor}"#{width_attribute}#{height_attribute}#{poster_attribute}#{(node.option? 'autoplay') ? (append_boolean_attribute 'autoplay', xml) : nil}#{(node.option? 'nocontrols') ? nil : (append_boolean_attribute 'controls', xml)}#{(node.option? 'loop') ? (append_boolean_attribute 'loop', xml) : nil}#{preload_attribute}>
Your browser does not support the video tag.
</video>
</div>
</div>)
end
end