jekyll-swfobject 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ ZDYwOWMyNjFhMzZmZmQ2Njc5NDg5MTljMDA0ZGZjYjkzMjllZmY2NA==
5
+ data.tar.gz: !binary |-
6
+ MmQ2NmQ0MDA5MjIyMGNiNDIxN2MxMGY1MjY0MDM1MDVkMjczODQ0MQ==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ ZjdlNTdmYjVlMGY3NjJmNGU2NzRkZmI5MGFlYjBiMDI1YzIyNDQxOTQ0MTVl
10
+ ZWNmYTAzZWU2YWU0ZWJlMGVmMjdkNzIyZmYxMDc3OWE1OWMzNWY5YWNiMjE3
11
+ MzBkNGEyNDA3ZWJjYTI4ZTY4ZDgzNzE0YjYzNTIwNDMzMGE0YjI=
12
+ data.tar.gz: !binary |-
13
+ NDZmNzc5ZDlkOWJmOWRhN2FlMmE1ODBkOWRmZTg1OTM4YmViYzYzNjgxMjMz
14
+ OGM4OWYwNTI5MDYzMzUyODI0MDEwZWIyNjI4NTg1OTAxZTMxZDk2MzUzZDIx
15
+ ODlkYTYzZDc3OTQ0OTA1ZWJkNmVmMGU3YmUzMGEwYmY0MWM1MjQ=
data/.gitignore ADDED
@@ -0,0 +1,6 @@
1
+ .idea/*
2
+ *.iml
3
+ .DS_Store
4
+
5
+ *.rvmc
6
+ Gemfile.lock
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in jekyll-swfobject.gemspec
4
+ gemspec
data/History.md ADDED
@@ -0,0 +1,9 @@
1
+ ## Revision history of jekyll-swfobject
2
+
3
+ ### 1.0.0 / 2013-07-04
4
+ * Unit tests added
5
+ * Ruby code improvements
6
+ * Deployed to http://rubygems.org/
7
+
8
+ ### 0.9.0 / 2013-01-10
9
+ * First release
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 "sectore" Jens Krause // [WEBSECTOR.DE](http://websector.de)
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,160 @@
1
+ # Jekyll Plugin: SWFObject Tag
2
+
3
+ SWFObject Tag is a [Liquid](http://www.liquidmarkup.org/) plugin for [Jekyll](http://jekyllrb.com/) to embed Flash files (*.swf) using [SWFObject](http://code.google.com/p/swfobject/)
4
+
5
+ ## Installation
6
+
7
+ 1 Add this line to your application's Gemfile:
8
+
9
+ gem 'jekyll-swfobject'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install jekyll-swfobject
18
+
19
+
20
+ 2. Link SWFObject in your layout template or page within `<head>` or before `{% swfobject %}` :
21
+
22
+ `<script src="//ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js"></script>`
23
+
24
+
25
+ ## Usage
26
+
27
+ ### Tag
28
+ {% swfobject swf_url %}{% endswfobject %}
29
+ Note: Because SWFObject Tag is a `Liquid::Block`, you have to close any `{% swfobject %}` with `{% endswfobject %}` in your templates.
30
+
31
+ #### Optional parameters
32
+
33
+ All optional parameters are defined using `key:value` pairs.
34
+
35
+ {% swfobject swf_url id:myFlash content_id:flashcontent width:500 height:600 %}{% endswfobject %}
36
+
37
+ Note: Don't use whitespaces between `:` to avoid issues rendering templates.
38
+
39
+ For all optional parameters check section [Parameters](#parameters) below.
40
+
41
+
42
+ #### Alternative HTML content
43
+
44
+ {% swfobject swf_url %}
45
+ <p>Latest <a href='http://www.adobe.com/go/getflashplayer'>Flash Player Plugin</a> is required.</p>
46
+ {% endswfobject %}
47
+
48
+ #### Optional parameters defined in `_config.yml`
49
+
50
+
51
+ swfobject:
52
+ height: 350
53
+ width: 200
54
+ express_install_url: expressInstall.swf
55
+ alternative_content: <p>Please install latest <a href='http://www.adobe.com/go/getflashplayer'>Flash Player Plugin</a>.</p>
56
+
57
+ For all optional parameters check section [Parameters](#parameters) below.
58
+
59
+
60
+ ## Parameters
61
+
62
+ ### Required parameter
63
+
64
+ `swf_url` - Path to SWF, which has to be embedded
65
+
66
+ ### Optional parameters
67
+
68
+ All optional parameters can be defined within `{% swfobject %}` and / or using `_config.yml`.
69
+ Parameters defined in `_config.yml` will be overridden by tag parameters.
70
+
71
+ `content_id` - Id of the div container, which will be replaced by SWFObject to embed SWF
72
+
73
+ `height` - Height (`px`, `%`, `em` or `rem`) of the embedded SWF and of the surrounded `<div>` (default: 100%)
74
+
75
+ `width` - Width (`px`, `%`, `em` or `rem`) of the embedded SWF and of the surrounded `<div>` (default: 100%).
76
+
77
+ Note: For a better support of fluid and responsive layouts using `em`, `rem` etc. the plugin creates an extra `div`,
78
+ which wrappes the generated `<object>` tag. This wrapper `div` will be sized using values of `height` and `width`.
79
+ The wrapper can be addressed by using the `content_id` + `-wrapper`, e.g. `flashcontent-wrapper`.
80
+
81
+ `version` - Version of the Flash Player Plugin (default: 10.0)
82
+
83
+ `flashvars` - String of flashvars using `key=value` pairs combinend with `&`, e.g. `name1=hello&name2=world`
84
+
85
+ `express_install_url` - URL of the expressInstall.swf
86
+
87
+ `callback_function` - Callback function to check success or failure of creating a Flash plug-in `<object>`
88
+
89
+
90
+ #### Optional Attributes of the `<object>` element
91
+
92
+ `id`
93
+
94
+ `align`
95
+
96
+ `name`
97
+
98
+ `styleclass`
99
+
100
+ For detailed information check SWF Object documentation: http://code.google.com/p/swfobject/wiki/documentation
101
+
102
+ #### Optional Flash specific parameters
103
+
104
+ `play`
105
+
106
+ `loop`
107
+
108
+ `menu`
109
+
110
+ `quality`
111
+
112
+ `scale`
113
+
114
+ `salign`
115
+
116
+ `wmode`
117
+
118
+ `bgcolor`
119
+
120
+ `base`
121
+
122
+ `swliveconnect`
123
+
124
+ `devicefont`
125
+
126
+ `allowscriptaccess`
127
+
128
+ `seamlesstabbing`
129
+
130
+ `allowfullscreen`
131
+
132
+ `allownetworking`
133
+
134
+ For detailed information check SWF Object documentation: http://code.google.com/p/swfobject/wiki/documentation
135
+
136
+ ## Live example
137
+
138
+ SWFObject Tag is used by the Jekyll generated website [WEBSECTOR.DE](http://websector.de). You will find the [source](https://github.com/sectore/websector.de) of WEBSECTOR.DE [here](https://github.com/sectore/websector.de) at GitHub.
139
+
140
+ ## Test
141
+
142
+ The plugin is well tested using [Test::Unit](http://www.ruby-doc.org/core/classes/Test/Unit.html) with [Shoulda](https://github.com/thoughtbot/shoulda) and [Mocha](http://gofreerange.com/mocha/). To start tests just run
143
+
144
+ rake test
145
+
146
+
147
+
148
+ ## Contributing
149
+
150
+ 1. Fork it
151
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
152
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
153
+ 4. Push to the branch (`git push origin my-new-feature`)
154
+ 5. Create new Pull Request
155
+
156
+ ## License
157
+
158
+ Copyright (c) 2013 "sectore" Jens Krause // [WEBSECTOR.DE](http://websector.de)
159
+
160
+ SWFObject Tag is free software and it may be redistributed under the terms specified in the MIT-LICENSE file.
data/Rakefile ADDED
@@ -0,0 +1,12 @@
1
+ # test tasks
2
+ # ---------------------------------------------
3
+ require "bundler/gem_tasks"
4
+ require 'rake/testtask'
5
+
6
+ task :default => :test
7
+
8
+ Rake::TestTask.new do |t|
9
+ t.libs << 'lib' << 'test'
10
+ t.pattern = 'test/**/test_*.rb'
11
+ end
12
+
@@ -0,0 +1,29 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require "jekyll-swfobject/version"
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "jekyll-swfobject"
8
+ spec.version = Jekyll::SWFObject::VERSION
9
+ spec.authors = ["Jens Krause"]
10
+ spec.email = ["info@websector.de"]
11
+ spec.description = %q{Liquid plugin for using SWFObject with Jekyll}
12
+ spec.summary = %q{SWFObject Tag is a Liquid plugin for Jekyll to embed Flash files (*.swf) using SWFObject}
13
+ spec.homepage = "https://github.com/sectore/jekyll-swfobject"
14
+ spec.license = "MIT"
15
+
16
+ spec.required_ruby_version = '>= 1.9.3'
17
+
18
+ spec.files = `git ls-files`.split($/)
19
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
20
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
21
+ spec.require_paths = ["lib"]
22
+
23
+ spec.add_runtime_dependency "jekyll", "~> 1.0.3"
24
+ spec.add_development_dependency("bundler", "~> 1.3")
25
+ spec.add_development_dependency("rake")
26
+ spec.add_development_dependency("shoulda", "~> 3.5")
27
+ spec.add_development_dependency("shoulda-context", "~> 1.0")
28
+ spec.add_development_dependency("mocha", ">= 0.14")
29
+ end
@@ -0,0 +1,175 @@
1
+ # SWFObject Tag
2
+ # is a Jekyll plugin to embed Flash files (*.swf) using SWFObject http://code.google.com/p/swfobject/
3
+ #
4
+ # Example:
5
+ #
6
+ # {% swfobject swf_url %}{% endswfobject %}
7
+ # or
8
+ # {% swfobject swf_url id:swfID content_id:flashcontent width:500px height:600px %}{% endswfobject %}
9
+ # or
10
+ # {% swfobject swf_url %}
11
+ # <p>Alternative HTML content, e.g. Latest <a href='http://www.adobe.com/go/getflashplayer'>Flash Player Plugin</a> is required.</p>
12
+ # {% endswfobject %}
13
+ #
14
+ # Full documentation:
15
+ # https://github.com/sectore/jekyll-swfobject/blob/master/README.md
16
+ #
17
+ # Author: Jens Krause http://websector.de
18
+ # Source: https://github.com/sectore/jekyll-swfobject
19
+ # License: MIT
20
+
21
+ module Jekyll
22
+ module SWFObject
23
+ class SWFObjectTag < Liquid::Block
24
+
25
+ #
26
+ # constants
27
+ #
28
+ @@ATTRIBUTES = %w(
29
+ id align name styleclass
30
+ )
31
+
32
+ @@PARAMETERS = %w(
33
+ play loop menu quality scale salign wmode bgcolor base
34
+ swliveconnect devicefont allowscriptaccess seamlesstabbing allowfullscreen allownetworking
35
+ )
36
+
37
+ @@DEFAULTS = {
38
+ :content_id => 'flashcontent',
39
+ :width => '100%',
40
+ :height => '100%',
41
+ :version => '10.0',
42
+ :flashvars => '',
43
+ :alternative_content => "<p>Please install latest <a href='http://www.adobe.com/go/getflashplayer'>Flash Player Plugin</a>.</p>"
44
+ }
45
+
46
+ def self.DEFAULTS
47
+ return @@DEFAULTS
48
+ end
49
+
50
+ def initialize(tag_name, text, tokens)
51
+ super
52
+
53
+ @config = {}
54
+ # set defaults
55
+ override_config(@@DEFAULTS)
56
+
57
+ # override configuration with values defined within _config.yml
58
+ if Jekyll.configuration({}).has_key?('swfobject')
59
+ config = Jekyll.configuration({})['swfobject']
60
+ override_config(config)
61
+ end
62
+
63
+ params = text.split
64
+
65
+ # first argument (required) is url of swf
66
+ @swf_url = params.shift.strip
67
+
68
+ if params.size > 0
69
+ # override configuration with parameters defined within {% swfobject pathToSWF %}
70
+ config = {} # reset local config
71
+ params.each do |param|
72
+ param = param.gsub /\s+/, '' # remove whitespaces
73
+ key, value = param.split(':',2) # split first occurrence of ':' only
74
+ config[key.to_sym] = value
75
+ end
76
+ override_config(config)
77
+ end
78
+
79
+ end
80
+
81
+ def override_config(config)
82
+ config.each{ |key,value| @config[key] = value }
83
+ end
84
+
85
+ def render(context)
86
+ output = super
87
+
88
+ <<-HTML.gsub /^\s+/, '' # remove whitespaces from heredocs
89
+ <div id="#{@config[:content_id]}-wrapper" style="width: #{@config[:width]}; height: #{@config[:height]}">
90
+ <div id="#{@config[:content_id]}" style="width: 100%; height:100%">#{render_alternative_content(output)}</div>
91
+ </div>
92
+ <script type="text/javascript">
93
+ // <![CDATA[
94
+ #{render_flashvars()}
95
+ #{render_params()}
96
+ #{render_attributes()}
97
+ swfobject.embedSWF(
98
+ '#{@swf_url}',
99
+ '#{@config[:content_id]}',
100
+ '100%',
101
+ '100%',
102
+ '#{@config[:version]}',
103
+ #{render_express_install_url()},
104
+ flashvars,
105
+ params,
106
+ attributes,
107
+ #{render_callback_function()}
108
+ );
109
+ // ]]>
110
+ </script>
111
+ HTML
112
+ end
113
+
114
+ def render_alternative_content(output)
115
+ unless output.strip.size > 0
116
+ output = @config[:alternative_content]
117
+ end
118
+ output
119
+ end
120
+
121
+ def render_params
122
+ result = 'var params = {'
123
+ @config.each do |key, value|
124
+ if @@PARAMETERS.include?(key.to_s)
125
+ result += "#{key}:'#{value}',"
126
+ end
127
+ end
128
+ result = remove_last_comma(result)
129
+ result += '};'
130
+ end
131
+
132
+ def render_attributes
133
+ result = 'var attributes = {'
134
+ @config.each do |key, value|
135
+ if @@ATTRIBUTES.include?(key.to_s)
136
+ result += "#{key}:'#{value}',"
137
+ end
138
+ end
139
+ result = remove_last_comma(result)
140
+ result += '};'
141
+ end
142
+
143
+ def render_flashvars
144
+ result = 'var flashvars = {'
145
+
146
+ if !@config[:flashvars].nil?
147
+ vars = @config[:flashvars].split('&')
148
+ vars.each do |var|
149
+ key_value = var.split('=',2) # split first occurrence of '=' only
150
+ key = key_value.first
151
+ value = key_value.last
152
+ result += "#{key}:'#{value}',"
153
+ end
154
+ result = remove_last_comma(result)
155
+ end
156
+ result += '};'
157
+ end
158
+
159
+ def render_express_install_url
160
+ @config[:express_install_url] ? "'#{@config[:express_install_url]}'" : 'null'
161
+ end
162
+
163
+ def render_callback_function
164
+ @config[:callback_function] ? "#{@config[:callback_function]}" : 'null'
165
+ end
166
+
167
+ def remove_last_comma(content)
168
+ content.gsub(/,?$/, '')
169
+ end
170
+
171
+ end
172
+ end
173
+ end
174
+
175
+ Liquid::Template.register_tag('swfobject', Jekyll::SWFObject::SWFObjectTag)
@@ -0,0 +1,5 @@
1
+ module Jekyll
2
+ module SWFObject
3
+ VERSION = "1.0.0"
4
+ end
5
+ end