Class: Jekyll::SWFObject::SWFObjectTag

Inherits:
Liquid::Block
  • Object
show all
Defined in:
lib/jekyll-swfobject.rb

Constant Summary collapse

@@ATTRIBUTES =

constants

%w(
  id align name styleclass
)
@@PARAMETERS =
%w(
  play loop menu quality scale salign wmode bgcolor base
  swliveconnect devicefont allowscriptaccess seamlesstabbing allowfullscreen allownetworking
)
@@DEFAULTS =
{
    :content_id => 'flashcontent',
    :width => '100%',
    :height => '100%',
    :version => '10.0',
    :flashvars => ''
}

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(tag_name, markup, tokens) ⇒ SWFObjectTag

Returns a new instance of SWFObjectTag.



49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/jekyll-swfobject.rb', line 49

def initialize(tag_name, markup, tokens)
  super

  @config = {}
  # set defaults
  override_config(@@DEFAULTS)

  # override configuration with values defined within _config.yml
  if Jekyll.configuration({}).has_key?('swfobject')
    config = Jekyll.configuration({})['swfobject']
    override_config(config)
  end

  params = markup.split

  # first argument (required) is url of swf
  @swf_url = params.shift.strip

  if params.size > 0
    # override configuration with parameters defined within {% swfobject pathToSWF %}
    config = {} # reset local config
    params.each do |param|
      param = param.gsub /\s+/, '' # remove whitespaces
      key, value = param.split(':',2) # split first occurrence of ':' only
      config[key.to_sym] = value
    end
    override_config(config)
  end

end

Class Method Details

.DEFAULTSObject



45
46
47
# File 'lib/jekyll-swfobject.rb', line 45

def self.DEFAULTS
  return @@DEFAULTS
end

Instance Method Details

#override_config(config) ⇒ Object



80
81
82
# File 'lib/jekyll-swfobject.rb', line 80

def override_config(config)
  config.each{ |key,value| @config[key] = value }
end

#remove_last_comma(content) ⇒ Object



164
165
166
# File 'lib/jekyll-swfobject.rb', line 164

def remove_last_comma(content)
  content.gsub(/,?$/, '')
end

#render(context) ⇒ Object



84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
# File 'lib/jekyll-swfobject.rb', line 84

def render(context)
  content = super

  # raise an error if the swfobject block has no content
  if content.strip.size <= 0
    raise ScriptError.new("swfobject tag can not be empty")
  end

  <<-HTML.gsub /^\s+/, '' # remove whitespaces from heredocs
  <div id="#{@config[:content_id]}-wrapper" style="width: #{@config[:width]}; height: #{@config[:height]}">
    <div id="#{@config[:content_id]}" style="width: 100%; height:100%">#{content}</div>
  </div>
  <script type="text/javascript">
    //  <![CDATA[
    #{render_flashvars()}
  #{render_params()}
  #{render_attributes()}
    swfobject.embedSWF(
      '#{@swf_url}',
      '#{@config[:content_id]}',
      '100%',
      '100%',
      '#{@config[:version]}',
      #{render_express_install_url()},
      flashvars,
      params,
      attributes,
      #{render_callback_function()}
    );
    // ]]>
  </script>
  HTML
end

#render_attributesObject



129
130
131
132
133
134
135
136
137
138
# File 'lib/jekyll-swfobject.rb', line 129

def render_attributes
  result = 'var attributes = {'
  @config.each do |key, value|
    if @@ATTRIBUTES.include?(key.to_s)
      result += "#{key}:'#{value}',"
    end
  end
  result = remove_last_comma(result)
  result += '};'
end

#render_callback_functionObject



160
161
162
# File 'lib/jekyll-swfobject.rb', line 160

def render_callback_function
  @config[:callback_function] ? "#{@config[:callback_function]}" : 'null'
end

#render_express_install_urlObject



156
157
158
# File 'lib/jekyll-swfobject.rb', line 156

def render_express_install_url
  @config[:express_install_url] ? "'#{@config[:express_install_url]}'" : 'null'
end

#render_flashvarsObject



140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
# File 'lib/jekyll-swfobject.rb', line 140

def render_flashvars
  result = 'var flashvars = {'

  if !@config[:flashvars].nil?
    vars = @config[:flashvars].split('&')
    vars.each do |var|
      key_value = var.split('=',2) # split first occurrence of '=' only
      key = key_value.first
      value = key_value.last
      result += "#{key}:'#{value}',"
    end
    result = remove_last_comma(result)
  end
  result += '};'
end

#render_paramsObject



118
119
120
121
122
123
124
125
126
127
# File 'lib/jekyll-swfobject.rb', line 118

def render_params
  result = 'var params = {'
  @config.each do |key, value|
    if @@PARAMETERS.include?(key.to_s)
      result += "#{key}:'#{value}',"
    end
  end
  result = remove_last_comma(result)
  result += '};'
end