audiojs 0.0.4 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Vendorfile +10 -0
- data/audiojs.gemspec +2 -0
- data/lib/audiojs/version.rb +1 -1
- data/vendor/assets/javascripts/{audiojs.js → audiojs.js.erb} +29 -38
- data/vendor/assets/javascripts/audiojs.swf +0 -0
- metadata +22 -11
data/Vendorfile
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
from 'git://github.com/kolber/audiojs.git' do
|
2
|
+
file 'vendor/assets/javascripts/audiojs-player-graphics.gif', 'audiojs/player-graphics.gif'
|
3
|
+
file 'vendor/assets/javascripts/audiojs.swf', 'audiojs/audiojs.swf'
|
4
|
+
file 'vendor/assets/javascripts/audiojs.js.erb', 'audiojs/audio.js' do |path|
|
5
|
+
rewrite(path) do |content|
|
6
|
+
content.gsub!("imageLocation: path + 'player-graphics.gif'", "imageLocation: <%= asset_path 'audiojs-player-graphics.gif' %>")
|
7
|
+
content.gsub!("swfLocation: path + 'audiojs.swf'", "swfLocation: <%= asset_path 'audiojs.swf' %>")
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
data/audiojs.gemspec
CHANGED
data/lib/audiojs/version.rb
CHANGED
@@ -3,33 +3,24 @@
|
|
3
3
|
// Use the path to the audio.js file to create relative paths to the swf and player graphics
|
4
4
|
// Remember that some systems (e.g. ruby on rails) append strings like '?1301478336' to asset paths
|
5
5
|
var path = (function() {
|
6
|
-
var re = new RegExp('(
|
7
|
-
scripts = document.getElementsByTagName('script')
|
8
|
-
px = '/assets/';
|
9
|
-
|
6
|
+
var re = new RegExp('audio(\.min)?\.js.*'),
|
7
|
+
scripts = document.getElementsByTagName('script');
|
10
8
|
for (var i = 0, ii = scripts.length; i < ii; i++) {
|
11
9
|
var path = scripts[i].getAttribute('src');
|
12
|
-
if(re.test(path))
|
13
|
-
var _th = path.substring(0,path.lastIndexOf("/")+1);
|
14
|
-
if (!(typeof _th === 'undefined') || (_th == '')) {
|
15
|
-
return _th;
|
16
|
-
}
|
17
|
-
}
|
10
|
+
if(re.test(path)) return path.replace(re, '');
|
18
11
|
}
|
19
|
-
|
20
|
-
return px;
|
21
12
|
})();
|
22
|
-
|
13
|
+
|
23
14
|
// ##The audiojs interface
|
24
15
|
// This is the global object which provides an interface for creating new `audiojs` instances.
|
25
16
|
// It also stores all of the construction helper methods and variables.
|
26
17
|
container[audiojs] = {
|
27
18
|
instanceCount: 0,
|
28
19
|
instances: {},
|
29
|
-
// The markup for the swf. It is injected into the page if there is not support for the `<audio>` element. The `$n`s are placeholders.
|
30
|
-
// `$1` The name of the flash movie
|
31
|
-
// `$2` The path to the swf
|
32
|
-
// `$3` Cache invalidation
|
20
|
+
// The markup for the swf. It is injected into the page if there is not support for the `<audio>` element. The `$n`s are placeholders.
|
21
|
+
// `$1` The name of the flash movie
|
22
|
+
// `$2` The path to the swf
|
23
|
+
// `$3` Cache invalidation
|
33
24
|
flashSource: '\
|
34
25
|
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="$1" width="1" height="1" name="$1" style="position: absolute; left: -1px;"> \
|
35
26
|
<param name="movie" value="$2?playerInstance='+audiojs+'.instances[\'$1\']&datetime=$3"> \
|
@@ -43,8 +34,8 @@
|
|
43
34
|
autoplay: false,
|
44
35
|
loop: false,
|
45
36
|
preload: true,
|
46
|
-
imageLocation:
|
47
|
-
swfLocation:
|
37
|
+
imageLocation: <%= asset_path 'audiojs-player-graphics.gif' %>,
|
38
|
+
swfLocation: <%= asset_path 'audiojs.swf' %>,
|
48
39
|
useFlash: (function() {
|
49
40
|
var a = document.createElement('audio');
|
50
41
|
return !(a.canPlayType && a.canPlayType('audio/mpeg;').replace(/no/, ''));
|
@@ -196,10 +187,10 @@
|
|
196
187
|
|
197
188
|
// ### Contructor functions
|
198
189
|
|
199
|
-
// `create()`
|
200
|
-
// Used to create a single `audiojs` instance.
|
201
|
-
// If an array is passed then it calls back to `createAll()`.
|
202
|
-
// Otherwise, it creates a single instance and returns it.
|
190
|
+
// `create()`
|
191
|
+
// Used to create a single `audiojs` instance.
|
192
|
+
// If an array is passed then it calls back to `createAll()`.
|
193
|
+
// Otherwise, it creates a single instance and returns it.
|
203
194
|
create: function(element, options) {
|
204
195
|
var options = options || {}
|
205
196
|
if (element.length) {
|
@@ -209,8 +200,8 @@
|
|
209
200
|
}
|
210
201
|
},
|
211
202
|
|
212
|
-
// `createAll()`
|
213
|
-
// Creates multiple `audiojs` instances.
|
203
|
+
// `createAll()`
|
204
|
+
// Creates multiple `audiojs` instances.
|
214
205
|
// If `elements` is `null`, then automatically find any `<audio>` tags on the page and create `audiojs` instances for them.
|
215
206
|
createAll: function(options, elements) {
|
216
207
|
var audioElements = elements || document.getElementsByTagName('audio'),
|
@@ -357,14 +348,14 @@
|
|
357
348
|
audio.settings.updatePlayhead.apply(audio, [percent]);
|
358
349
|
}
|
359
350
|
audio['play'] = function() {
|
360
|
-
// If the audio hasn't started preloading, then start it now.
|
351
|
+
// If the audio hasn't started preloading, then start it now.
|
361
352
|
// Then set `preload` to `true`, so that any tracks loaded in subsequently are loaded straight away.
|
362
353
|
if (!audio.settings.preload) {
|
363
354
|
audio.settings.preload = true;
|
364
355
|
audio.element.init(audio.mp3);
|
365
356
|
}
|
366
357
|
audio.playing = true;
|
367
|
-
// IE doesn't allow a method named `play()` to be exposed through `ExternalInterface`, so lets go with `pplay()`.
|
358
|
+
// IE doesn't allow a method named `play()` to be exposed through `ExternalInterface`, so lets go with `pplay()`.
|
368
359
|
// <http://dev.nuclearrooster.com/2008/07/27/externalinterfaceaddcallback-can-cause-ie-js-errors-with-certain-keyworkds/>
|
369
360
|
audio.element.pplay();
|
370
361
|
audio.settings.play.apply(audio);
|
@@ -403,7 +394,7 @@
|
|
403
394
|
|
404
395
|
// ## Helper functions
|
405
396
|
helpers: {
|
406
|
-
// **Merge two objects, with `obj2` overwriting `obj1`**
|
397
|
+
// **Merge two objects, with `obj2` overwriting `obj1`**
|
407
398
|
// The merge is shallow, but that's all that is required for our purposes.
|
408
399
|
merge: function(obj1, obj2) {
|
409
400
|
for (attr in obj2) {
|
@@ -429,7 +420,7 @@
|
|
429
420
|
var re = new RegExp('(\\s|^)'+className+'(\\s|$)');
|
430
421
|
element.className = element.className.replace(re,' ');
|
431
422
|
},
|
432
|
-
// **Dynamic CSS injection**
|
423
|
+
// **Dynamic CSS injection**
|
433
424
|
// Takes a string of css, inserts it into a `<style>`, then injects it in at the very top of the `<head>`. This ensures any user-defined styles will take precedence.
|
434
425
|
injectCss: function(audio, string) {
|
435
426
|
|
@@ -463,7 +454,7 @@
|
|
463
454
|
if (firstchild) head.insertBefore(style, firstchild);
|
464
455
|
else head.appendChild(styleElement);
|
465
456
|
},
|
466
|
-
// **Handle all the IE6+7 requirements for cloning `<audio>` nodes**
|
457
|
+
// **Handle all the IE6+7 requirements for cloning `<audio>` nodes**
|
467
458
|
// Create a html5-safe document fragment by injecting an `<audio>` element into the document fragment.
|
468
459
|
cloneHtml5Node: function(audioTag) {
|
469
460
|
var fragment = document.createDocumentFragment(),
|
@@ -489,7 +480,7 @@
|
|
489
480
|
// For modern browsers use the standard DOM-compliant `addEventListener`.
|
490
481
|
if (element.addEventListener) {
|
491
482
|
element.addEventListener(eventName, func, false);
|
492
|
-
// For older versions of Internet Explorer, use `attachEvent`.
|
483
|
+
// For older versions of Internet Explorer, use `attachEvent`.
|
493
484
|
// Also provide a fix for scoping `this` to the calling element and register each listener so the containing elements can be purged on page unload.
|
494
485
|
} else if (element.attachEvent) {
|
495
486
|
this.listeners.push(element);
|
@@ -538,8 +529,8 @@
|
|
538
529
|
audio.loadTimer = loadTimer;
|
539
530
|
},
|
540
531
|
|
541
|
-
// **Douglas Crockford's IE6 memory leak fix**
|
542
|
-
// <http://javascript.crockford.com/memory/leak.html>
|
532
|
+
// **Douglas Crockford's IE6 memory leak fix**
|
533
|
+
// <http://javascript.crockford.com/memory/leak.html>
|
543
534
|
// This is used to release the memory leak created by the circular references created when fixing `this` scoping for IE. It is called on page unload.
|
544
535
|
purge: function(d) {
|
545
536
|
var a = d.attributes, i;
|
@@ -554,7 +545,7 @@
|
|
554
545
|
}
|
555
546
|
},
|
556
547
|
|
557
|
-
// **DOMready function**
|
548
|
+
// **DOMready function**
|
558
549
|
// As seen here: <https://github.com/dperini/ContentLoaded/>.
|
559
550
|
ready: (function() { return function(fn) {
|
560
551
|
var win = window, done = false, top = true,
|
@@ -660,7 +651,7 @@
|
|
660
651
|
var ios = (/(ipod|iphone|ipad)/i).test(navigator.userAgent);
|
661
652
|
// On iOS this interaction will trigger loading the mp3, so run `init()`.
|
662
653
|
if (ios && this.element.readyState == 0) this.init.apply(this);
|
663
|
-
// If the audio hasn't started preloading, then start it now.
|
654
|
+
// If the audio hasn't started preloading, then start it now.
|
664
655
|
// Then set `preload` to `true`, so that any tracks loaded in subsequently are loaded straight away.
|
665
656
|
if (!this.settings.preload) {
|
666
657
|
this.settings.preload = true;
|
@@ -686,7 +677,7 @@
|
|
686
677
|
}
|
687
678
|
}
|
688
679
|
|
689
|
-
// **getElementsByClassName**
|
680
|
+
// **getElementsByClassName**
|
690
681
|
// Having to rely on `getElementsByTagName` is pretty inflexible internally, so a modified version of Dustin Diaz's `getElementsByClassName` has been included.
|
691
682
|
// This version cleans things up and prefers the native DOM method if it's available.
|
692
683
|
var getByClass = function(searchClass, node) {
|
@@ -696,7 +687,7 @@
|
|
696
687
|
if (node.getElementsByClassName) {
|
697
688
|
matches = node.getElementsByClassName(searchClass);
|
698
689
|
} else {
|
699
|
-
var i, l,
|
690
|
+
var i, l,
|
700
691
|
els = node.getElementsByTagName("*"),
|
701
692
|
pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
|
702
693
|
|
@@ -709,4 +700,4 @@
|
|
709
700
|
return matches.length > 1 ? matches : matches[0];
|
710
701
|
};
|
711
702
|
// The global variable names are passed in here and can be changed if they conflict with anything else.
|
712
|
-
})('audiojs', 'audiojsInstance', this);
|
703
|
+
})('audiojs', 'audiojsInstance', this);
|
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: audiojs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,8 +9,24 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
13
|
-
dependencies:
|
12
|
+
date: 2012-11-17 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: vendorer
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
14
30
|
description: Audio.js on Rails Asset Pipeline
|
15
31
|
email:
|
16
32
|
- subosito@gmail.com
|
@@ -23,11 +39,12 @@ files:
|
|
23
39
|
- LICENSE
|
24
40
|
- README.md
|
25
41
|
- Rakefile
|
42
|
+
- Vendorfile
|
26
43
|
- audiojs.gemspec
|
27
44
|
- lib/audiojs.rb
|
28
45
|
- lib/audiojs/version.rb
|
29
46
|
- vendor/assets/javascripts/audiojs-player-graphics.gif
|
30
|
-
- vendor/assets/javascripts/audiojs.js
|
47
|
+
- vendor/assets/javascripts/audiojs.js.erb
|
31
48
|
- vendor/assets/javascripts/audiojs.swf
|
32
49
|
homepage: https://github.com/subosito/audiojs
|
33
50
|
licenses: []
|
@@ -41,21 +58,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
41
58
|
- - ! '>='
|
42
59
|
- !ruby/object:Gem::Version
|
43
60
|
version: '0'
|
44
|
-
segments:
|
45
|
-
- 0
|
46
|
-
hash: 2509283403028303442
|
47
61
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
48
62
|
none: false
|
49
63
|
requirements:
|
50
64
|
- - ! '>='
|
51
65
|
- !ruby/object:Gem::Version
|
52
66
|
version: '0'
|
53
|
-
segments:
|
54
|
-
- 0
|
55
|
-
hash: 2509283403028303442
|
56
67
|
requirements: []
|
57
68
|
rubyforge_project:
|
58
|
-
rubygems_version: 1.8.
|
69
|
+
rubygems_version: 1.8.23
|
59
70
|
signing_key:
|
60
71
|
specification_version: 3
|
61
72
|
summary: audio.js is a drop-in javascript library that allows HTML5's <audio> tag
|