Class: Jekyll::LividTag
- Inherits:
-
Liquid::Tag
- Object
- Liquid::Tag
- Jekyll::LividTag
- Defined in:
- lib/jekyll/livid_tag.rb
Constant Summary collapse
- EMBED_BASE =
"https://livid.com/embed/".freeze
- HASH_PARAMS =
Parameters appended as URL hash fragments rather than query params
%w[t].freeze
- VALID_PARAMS =
All supported advanced embed parameters https://support.livid.com/article/46-advanced-embedding-parameters
%w[ airplay autoplay background cc chromecast color colors controls custom_logo dnt fullscreen keyboard livid_logo loop max_quality min_quality muted pip play_button_position playsinline preload progress_bar quality_selector share speed t title transparent volume ].freeze
Instance Method Summary collapse
-
#initialize(tag_name, markup, tokens) ⇒ LividTag
constructor
A new instance of LividTag.
- #render(_context) ⇒ Object
Constructor Details
#initialize(tag_name, markup, tokens) ⇒ LividTag
Returns a new instance of LividTag.
19 20 21 22 23 24 |
# File 'lib/jekyll/livid_tag.rb', line 19 def initialize(tag_name, markup, tokens) super parts = markup.strip.split(/\s+/, 2) @video_id = parts[0] @params = parse_params(parts[1] || "") end |
Instance Method Details
#render(_context) ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/jekyll/livid_tag.rb', line 26 def render(_context) raise "Livid tag requires a video ID" if @video_id.nil? || @video_id.empty? query_params = @params.reject { |k, _| HASH_PARAMS.include?(k) } hash_params = @params.select { |k, _| HASH_PARAMS.include?(k) } src = EMBED_BASE + @video_id src += "?" + query_params.map { |k, v| "#{k}=#{CGI.escape(v.to_s)}" }.join("&") unless query_params.empty? src += "#t=#{hash_params['t']}" if hash_params['t'] <<~HTML.strip <div class="livid-embed" style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;"> <iframe src="#{src}" frameborder="0" allow="autoplay; fullscreen; picture-in-picture" allowfullscreen style="position:absolute;top:0;left:0;width:100%;height:100%;" loading="lazy"> </iframe> </div> HTML end |