class MediaEmbed::IframeBuilder
Constants
- IFRAME_ATTRS_WHITELIST
- NO_VALUE_OPTIONS
Attributes
iframe_options[RW]
url_options[RW]
Public Class Methods
new(source, options = {}, url_params_whitelist = [])
click to toggle source
# File lib/media_embed/iframe_builder.rb, line 15 def initialize(source, options = {}, url_params_whitelist = []) @source = source @options = Hash[options.map { |key, val| [key.to_sym, val] }] @url_params_whitelist = url_params_whitelist split_options end
Public Instance Methods
build()
click to toggle source
# File lib/media_embed/iframe_builder.rb, line 23 def build %(<iframe src="#{@source}#{url_params_string}"#{iframe_options_string}></iframe>) end
iframe_options_string()
click to toggle source
# File lib/media_embed/iframe_builder.rb, line 33 def iframe_options_string return unless iframe_options.any? key_value_options = iframe_options.reject { |opt_name, _| NO_VALUE_OPTIONS.include?(opt_name) } options_string = " #{key_value_options.map { |name, value| "#{name}=\"#{value}\"" }.join(' ')}" if NO_VALUE_OPTIONS.any? { |opt| iframe_options.keys.include? opt } options_string = "#{options_string}#{NO_VALUE_OPTIONS.map { |opt| iframe_options[opt] ? opt.to_s : nil }.compact.join(' ')}" end options_string end
split_options()
click to toggle source
# File lib/media_embed/iframe_builder.rb, line 47 def split_options self.iframe_options = @options.select { |key, _| IFRAME_ATTRS_WHITELIST.include?(key) } self.url_options = @options.select { |key, _| @url_params_whitelist.include?(key) } end
url_params_string()
click to toggle source
private
# File lib/media_embed/iframe_builder.rb, line 29 def url_params_string "?#{url_options.map { |name, value| "#{name}=#{value}" }.join('&')}" if url_options.any? end