bowser 0.3.0 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +1 -0
- data/CHANGELOG.md +23 -0
- data/lib/bowser/version.rb +1 -1
- data/opal/bowser/delegate_native.rb +54 -0
- data/opal/bowser/document.rb +2 -0
- data/opal/bowser/element.rb +2 -39
- data/opal/bowser/window.rb +2 -0
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 325dcfff506bbe9728a56a3594f1833338781c05
|
4
|
+
data.tar.gz: a9d0d2f9de91b17331b001b497bdad966f43532e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5ddfa2eab7464f87677c5da471706ac80e1c2d14251f7013966dc423dba29997b0c57dfad94f1f6eb65afa1b8a4ff117214cfa73d892f533d794fff8995dcd80
|
7
|
+
data.tar.gz: 6faa9b7b6b3d78b3ec798f92f46f1e5aedc6d77ff4fd510d41b92d28de61ced407ec551d006966c39f8f06498698c7057c576e6186dafb671052f89835e173c0
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,26 @@
|
|
1
|
+
## Version 0.3.0
|
2
|
+
|
3
|
+
- Fix bug with falsy JS values as element properties
|
4
|
+
- Yield request object in `HTTP` methods (like `.fetch` and `.upload`)
|
5
|
+
- Two `Element` instances holding the same native element are equal (`==`)
|
6
|
+
- Fix travis + phantomjs 2
|
7
|
+
- Add request upload object
|
8
|
+
- Add Geolocation support
|
9
|
+
|
10
|
+
## Version 0.2.2
|
11
|
+
|
12
|
+
- Use event.target instead of event.currentTarget for native events
|
13
|
+
- Fix spec failure with a more recent `opal-rspec`
|
14
|
+
- Remove opal-rspec version restriction
|
15
|
+
- Improve native pass-through in Event
|
16
|
+
- Allow WebSockets to be closed
|
17
|
+
|
18
|
+
## Version 0.2.1
|
19
|
+
|
20
|
+
- Allow passing data, headers, and method with HTTP.fetch
|
21
|
+
- Allow WebSockets to reconnect automatically with configurable delay
|
22
|
+
- Relax Opal version restriction
|
23
|
+
|
1
24
|
## Version 0.2.0
|
2
25
|
|
3
26
|
- Allow specifying methods for HTTP requests, including file uploads
|
data/lib/bowser/version.rb
CHANGED
@@ -0,0 +1,54 @@
|
|
1
|
+
module Bowser
|
2
|
+
module DelegateNative
|
3
|
+
# Fall back to native properties.
|
4
|
+
def method_missing message, *args, &block
|
5
|
+
property_name = property_for_message(message)
|
6
|
+
property = `#@native[#{property_name}]`
|
7
|
+
|
8
|
+
# translate setting a property
|
9
|
+
if message.end_with? '='
|
10
|
+
return `#@native[#{property_name}] = args[0]`
|
11
|
+
end
|
12
|
+
|
13
|
+
# If the native element doesn't have this property, bubble it up
|
14
|
+
super if `#{property} === undefined`
|
15
|
+
|
16
|
+
if `property === false`
|
17
|
+
return false
|
18
|
+
else
|
19
|
+
property = `property == null ? nil : property`
|
20
|
+
end
|
21
|
+
|
22
|
+
# If it's a method, call it. Otherwise, return it.
|
23
|
+
if `typeof(property) === 'function'`
|
24
|
+
`property.apply(#@native, args)`
|
25
|
+
else
|
26
|
+
property
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def respond_to_missing? message, include_all
|
31
|
+
return true if message.end_with? '='
|
32
|
+
return true if property_for_message(message)
|
33
|
+
|
34
|
+
false
|
35
|
+
end
|
36
|
+
|
37
|
+
def property_for_message message
|
38
|
+
camel_cased_message = message
|
39
|
+
.gsub(/_\w/) { |match| `match[1]`.upcase }
|
40
|
+
.sub(/=$/, '')
|
41
|
+
|
42
|
+
# translate `supported?` to `supported` or `isSupported`
|
43
|
+
if message.end_with? '?'
|
44
|
+
camel_cased_message = camel_cased_message.chop
|
45
|
+
property_type = `typeof(#@native[camel_cased_message])`
|
46
|
+
if property_type == 'undefined'
|
47
|
+
camel_cased_message = "is#{camel_cased_message[0].upcase}#{camel_cased_message[1..-1]}"
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
camel_cased_message
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
data/opal/bowser/document.rb
CHANGED
data/opal/bowser/element.rb
CHANGED
@@ -1,9 +1,11 @@
|
|
1
1
|
require 'bowser/event_target'
|
2
2
|
require 'bowser/file_list'
|
3
|
+
require 'bowser/delegate_native'
|
3
4
|
|
4
5
|
module Bowser
|
5
6
|
class Element
|
6
7
|
include EventTarget
|
8
|
+
include DelegateNative
|
7
9
|
|
8
10
|
def initialize native
|
9
11
|
@native = native
|
@@ -78,45 +80,6 @@ module Bowser
|
|
78
80
|
FileList.new(`#@native.files`)
|
79
81
|
end
|
80
82
|
|
81
|
-
# Fall back to native properties.
|
82
|
-
def method_missing message, *args, &block
|
83
|
-
camel_cased_message = message
|
84
|
-
.gsub(/_\w/) { |match| match[1].upcase }
|
85
|
-
.sub(/=$/, '')
|
86
|
-
|
87
|
-
# translate setting a property
|
88
|
-
if message.end_with? '='
|
89
|
-
return `#@native[camel_cased_message] = args[0]`
|
90
|
-
end
|
91
|
-
|
92
|
-
# translate `supported?` to `supported` or `isSupported`
|
93
|
-
if message.end_with? '?'
|
94
|
-
camel_cased_message = camel_cased_message.chop
|
95
|
-
property_type = `typeof(#@native[camel_cased_message])`
|
96
|
-
if property_type == 'undefined'
|
97
|
-
camel_cased_message = "is#{camel_cased_message[0].upcase}#{camel_cased_message[1..-1]}"
|
98
|
-
end
|
99
|
-
end
|
100
|
-
|
101
|
-
# If the native element doesn't have this property, bubble it up
|
102
|
-
super if `typeof(#@native[camel_cased_message]) === 'undefined'`
|
103
|
-
|
104
|
-
property = `#@native[camel_cased_message]`
|
105
|
-
|
106
|
-
if `property === false`
|
107
|
-
return false
|
108
|
-
else
|
109
|
-
property = `property == null ? nil : property`
|
110
|
-
end
|
111
|
-
|
112
|
-
# If it's a method, call it. Otherwise, return it.
|
113
|
-
if `typeof(property) === 'function'`
|
114
|
-
`property.apply(#@native, args)`
|
115
|
-
else
|
116
|
-
property
|
117
|
-
end
|
118
|
-
end
|
119
|
-
|
120
83
|
def ==(other)
|
121
84
|
`#@native === #{other.to_n}`
|
122
85
|
end
|
data/opal/bowser/window.rb
CHANGED
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
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jamie Gaskins
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-05-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: opal
|
@@ -94,6 +94,7 @@ files:
|
|
94
94
|
- lib/bowser.rb
|
95
95
|
- lib/bowser/version.rb
|
96
96
|
- opal/bowser.rb
|
97
|
+
- opal/bowser/delegate_native.rb
|
97
98
|
- opal/bowser/document.rb
|
98
99
|
- opal/bowser/element.rb
|
99
100
|
- opal/bowser/event.rb
|
@@ -126,7 +127,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
126
127
|
version: '0'
|
127
128
|
requirements: []
|
128
129
|
rubyforge_project:
|
129
|
-
rubygems_version: 2.
|
130
|
+
rubygems_version: 2.6.11
|
130
131
|
signing_key:
|
131
132
|
specification_version: 4
|
132
133
|
summary: Minimalist browser support for Opal apps
|