bowser 0.4.0 → 0.4.1

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.
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