bowser 0.4.0 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 325dcfff506bbe9728a56a3594f1833338781c05
4
- data.tar.gz: a9d0d2f9de91b17331b001b497bdad966f43532e
3
+ metadata.gz: 2666f7e1de610c1e041f9b6a223f07b42fb418df
4
+ data.tar.gz: 52928f3bd65a2d7e5f96dc08069978280dba4245
5
5
  SHA512:
6
- metadata.gz: 5ddfa2eab7464f87677c5da471706ac80e1c2d14251f7013966dc423dba29997b0c57dfad94f1f6eb65afa1b8a4ff117214cfa73d892f533d794fff8995dcd80
7
- data.tar.gz: 6faa9b7b6b3d78b3ec798f92f46f1e5aedc6d77ff4fd510d41b92d28de61ced407ec551d006966c39f8f06498698c7057c576e6186dafb671052f89835e173c0
6
+ metadata.gz: 950f1042ae01199c2310c422476a5c0ba230f67acccd1d014a55032f31caed65e979210a8e2f03f69804b65a419ec50fa829da7e8ab2269fa2fb37eee5de9d19
7
+ data.tar.gz: 778980230bf09c6df0a835eb0d9b7820e70ff614afe6a1742c7134640bcd2ea43446235254afa701027a6237bb9038c48017178cb6a437b0eab7547421bc212f
@@ -1,3 +1,3 @@
1
1
  module Bowser
2
- VERSION = "0.4.0"
2
+ VERSION = "0.4.1"
3
3
  end
@@ -7,6 +7,22 @@ module Bowser
7
7
  include EventTarget
8
8
  include DelegateNative
9
9
 
10
+ @tags = Hash.new(self)
11
+
12
+ def self.element *tags, &block
13
+ tags.each do |tag|
14
+ @tags
15
+ .fetch(tag) { @tags[tag] = const_set(tag.capitalize, Class.new(self)) }
16
+ .class_exec(&block)
17
+ end
18
+ end
19
+
20
+ def self.new(native)
21
+ element = @tags[`#{native}.tagName`.downcase].allocate
22
+ element.initialize native
23
+ element
24
+ end
25
+
10
26
  def initialize native
11
27
  @native = native
12
28
  end
@@ -0,0 +1,59 @@
1
+ require 'bowser/element'
2
+
3
+ module Bowser
4
+ class Element
5
+ element :video, :audio do
6
+ def buffered
7
+ TimeRanges.new(`#@native.buffered`)
8
+ end
9
+
10
+ def played
11
+ TimeRanges.new(`#@native.played`)
12
+ end
13
+
14
+ def seekable
15
+ TimeRanges.new(`#@native.seekable`)
16
+ end
17
+
18
+ def network_state
19
+ case `#@native.networkState`
20
+ when `HTMLMediaElement.NETWORK_EMPTY` then :no_data
21
+ when `HTMLMediaElement.NETWORK_IDLE` then :idle
22
+ when `HTMLMediaElement.NETWORK_LOADING` then :loading
23
+ when `HTMLMediaElement.NETWORK_NO_SOURCE` then :no_source
24
+ end
25
+ end
26
+ end
27
+
28
+ class TimeRanges
29
+ include Enumerable
30
+
31
+ def initialize native
32
+ @native = native
33
+ end
34
+
35
+ def to_n
36
+ @native
37
+ end
38
+
39
+ def each
40
+ `#@native.length`.times do |i|
41
+ yield TimeRange.new(`#@native.start(i)`, `#@native.end(i)`)
42
+ end
43
+
44
+ self
45
+ end
46
+ end
47
+
48
+ class TimeRange
49
+ attr_reader :start, :end
50
+
51
+ def initialize start, _end
52
+ @start = start
53
+ @end = _end
54
+ end
55
+
56
+ alias begin start
57
+ end
58
+ end
59
+ end
@@ -12,7 +12,7 @@ module Bowser
12
12
 
13
13
  if `#@native.requestAnimationFrame !== undefined`
14
14
  def animation_frame &block
15
- `requestAnimationFrame(block)`
15
+ `requestAnimationFrame(function() { #{block.call} })`
16
16
  self
17
17
  end
18
18
  else
@@ -23,12 +23,12 @@ module Bowser
23
23
  end
24
24
 
25
25
  def delay duration, &block
26
- `setTimeout(block, duration * 1000)`
26
+ `setTimeout(function() { #{block.call} }, duration * 1000)`
27
27
  self
28
28
  end
29
29
 
30
30
  def interval duration, &block
31
- `setInterval(block, duration * 1000)`
31
+ `setInterval(function() { #{block.call} }, duration * 1000)`
32
32
  self
33
33
  end
34
34
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bowser
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jamie Gaskins
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-05-10 00:00:00.000000000 Z
11
+ date: 2017-06-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: opal
@@ -97,6 +97,7 @@ files:
97
97
  - opal/bowser/delegate_native.rb
98
98
  - opal/bowser/document.rb
99
99
  - opal/bowser/element.rb
100
+ - opal/bowser/element/media.rb
100
101
  - opal/bowser/event.rb
101
102
  - opal/bowser/event_target.rb
102
103
  - opal/bowser/file_list.rb
@@ -127,7 +128,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
127
128
  version: '0'
128
129
  requirements: []
129
130
  rubyforge_project:
130
- rubygems_version: 2.6.11
131
+ rubygems_version: 2.6.12
131
132
  signing_key:
132
133
  specification_version: 4
133
134
  summary: Minimalist browser support for Opal apps