clearwater 0.3.1 → 1.0.0.beta1
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 +4 -4
- data/lib/clearwater/version.rb +1 -1
- data/lib/clearwater.rb +1 -1
- data/opal/clearwater/application.rb +4 -7
- data/opal/clearwater/black_box_node.rb +67 -0
- data/opal/clearwater/component.rb +27 -25
- data/opal/clearwater/dom_reference.rb +30 -0
- data/opal/clearwater/link.rb +23 -30
- data/opal/clearwater/router.rb +34 -17
- data/opal/clearwater/virtual_dom.rb +1 -2
- data/opal/clearwater.rb +0 -1
- data/spec/clearwater/application_spec.rb +2 -1
- data/spec/clearwater/black_box_node_spec.rb +64 -0
- data/spec/clearwater/dom_reference_spec.rb +15 -0
- data/spec/clearwater/router_spec.rb +5 -4
- data/spec/component_spec.rb +3 -13
- metadata +31 -25
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7209c39df1f317e2f636b5b18d19c800c051313e
|
4
|
+
data.tar.gz: de84c3390eb8008f4e4bad72382816c78417c15e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 241b9c7654b51e7600ad9d2d9e77547f923035373f128ed9d4f221d21395f9a60cb38a51a398af34c5247c4bc55a1742df094b93e1a9876c7de480bc6c6c503d
|
7
|
+
data.tar.gz: 93657a5db3cf006c60b146ea50fea5ce8f141b6513f424c8d7cc5601d9aca430996f47005871a4b102b241a06a53f4fac75520824c79141b3d5d4d8352abfaf7
|
data/lib/clearwater/version.rb
CHANGED
data/lib/clearwater.rb
CHANGED
@@ -1,7 +1,4 @@
|
|
1
|
-
require '
|
2
|
-
require 'browser/delay'
|
3
|
-
require 'browser/event'
|
4
|
-
require 'browser/animation_frame'
|
1
|
+
require 'bowser'
|
5
2
|
require 'clearwater/router'
|
6
3
|
require 'clearwater/application_registry'
|
7
4
|
require 'native'
|
@@ -20,8 +17,8 @@ module Clearwater
|
|
20
17
|
@router = options.fetch(:router) { Router.new }
|
21
18
|
@component = options.fetch(:component) { nil }
|
22
19
|
@element = options.fetch(:element) { nil }
|
23
|
-
@document = options.fetch(:document) {
|
24
|
-
@window = options.fetch(:window) {
|
20
|
+
@document = options.fetch(:document) { Bowser.document }
|
21
|
+
@window = options.fetch(:window) { Bowser.window }
|
25
22
|
@on_render = []
|
26
23
|
|
27
24
|
router.application = self
|
@@ -64,7 +61,7 @@ module Clearwater
|
|
64
61
|
return
|
65
62
|
end
|
66
63
|
|
67
|
-
animation_frame { perform_render }
|
64
|
+
@window.animation_frame { perform_render }
|
68
65
|
|
69
66
|
nil
|
70
67
|
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
require 'bowser/element'
|
2
|
+
require 'clearwater/virtual_dom'
|
3
|
+
|
4
|
+
module Clearwater
|
5
|
+
module BlackBoxNode
|
6
|
+
def node
|
7
|
+
VirtualDOM.node :div
|
8
|
+
end
|
9
|
+
|
10
|
+
def mount node
|
11
|
+
end
|
12
|
+
|
13
|
+
def update previous, node
|
14
|
+
end
|
15
|
+
|
16
|
+
def unmount node
|
17
|
+
end
|
18
|
+
|
19
|
+
def render
|
20
|
+
Renderable.new(self)
|
21
|
+
end
|
22
|
+
|
23
|
+
class Renderable
|
24
|
+
def initialize delegate
|
25
|
+
@delegate = delegate
|
26
|
+
end
|
27
|
+
|
28
|
+
def wrap node
|
29
|
+
Bowser::Element.new(node)
|
30
|
+
end
|
31
|
+
|
32
|
+
def create_element
|
33
|
+
wrap(VirtualDOM.create_element(@delegate.node))
|
34
|
+
end
|
35
|
+
|
36
|
+
%x{
|
37
|
+
// Use the virtual-dom Widget type
|
38
|
+
Opal.defn(self, 'type', 'Widget');
|
39
|
+
|
40
|
+
// virtual-dom Widget init hook. Must return a real DOM node.
|
41
|
+
// We call the Ruby-land #mount method so we can define hooks for this
|
42
|
+
// in Ruby instead of requiring users to drop down to JS.
|
43
|
+
Opal.defn(self, 'init', function() {
|
44
|
+
var self = this;
|
45
|
+
var node = #{create_element};
|
46
|
+
#{@delegate.mount(`node`)};
|
47
|
+
return node.native;
|
48
|
+
});
|
49
|
+
|
50
|
+
// virtual-dom update hook
|
51
|
+
// previous: the instance of this object used in the previous render
|
52
|
+
// node: a Bowser-wrapped version of the DOM node
|
53
|
+
Opal.defn(self, 'update', function(previous, node) {
|
54
|
+
var self = this;
|
55
|
+
#{@delegate.update(`previous.delegate`, wrap(`node`))};
|
56
|
+
});
|
57
|
+
|
58
|
+
// virtual-dom destroy hook
|
59
|
+
// node: Bowser-wrapped version of the DOM node
|
60
|
+
Opal.defn(self, 'destroy', function(node) {
|
61
|
+
var self = this;
|
62
|
+
#{@delegate.unmount(wrap(`node`))};
|
63
|
+
});
|
64
|
+
}
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
@@ -1,13 +1,9 @@
|
|
1
1
|
require 'clearwater/virtual_dom'
|
2
|
-
require 'browser'
|
3
2
|
|
4
3
|
module Clearwater
|
5
4
|
module Component
|
6
5
|
attr_accessor :router, :outlet
|
7
6
|
|
8
|
-
def render
|
9
|
-
end
|
10
|
-
|
11
7
|
HTML_TAGS = %w(
|
12
8
|
a
|
13
9
|
abbr
|
@@ -122,27 +118,8 @@ module Clearwater
|
|
122
118
|
wbr
|
123
119
|
)
|
124
120
|
|
125
|
-
HTML_TAGS.each do |tag_name|
|
126
|
-
define_method(tag_name) do |attributes, content|
|
127
|
-
tag(tag_name, attributes, content)
|
128
|
-
end
|
129
|
-
end
|
130
|
-
|
131
|
-
def tag tag_name, attributes=nil, content=nil
|
132
|
-
if !(`attributes.$$is_hash || attributes === #{nil}`)
|
133
|
-
content = attributes
|
134
|
-
attributes = nil
|
135
|
-
end
|
136
|
-
|
137
|
-
VirtualDOM.node(
|
138
|
-
tag_name,
|
139
|
-
Component.sanitize_attributes(attributes),
|
140
|
-
Component.sanitize_content(content)
|
141
|
-
)
|
142
|
-
end
|
143
|
-
|
144
121
|
def params
|
145
|
-
router.
|
122
|
+
router.params
|
146
123
|
end
|
147
124
|
|
148
125
|
def self.sanitize_attributes attributes
|
@@ -162,7 +139,7 @@ module Clearwater
|
|
162
139
|
attributes.each do |key, handler|
|
163
140
|
if key[0, 2] == 'on'
|
164
141
|
attributes[key] = proc do |event|
|
165
|
-
handler.call(
|
142
|
+
handler.call(Bowser::Event.new(event))
|
166
143
|
end
|
167
144
|
end
|
168
145
|
end
|
@@ -192,6 +169,31 @@ module Clearwater
|
|
192
169
|
}
|
193
170
|
end
|
194
171
|
|
172
|
+
# Default render method for stubbing
|
173
|
+
def render
|
174
|
+
end
|
175
|
+
|
176
|
+
module_function
|
177
|
+
|
178
|
+
HTML_TAGS.each do |tag_name|
|
179
|
+
define_method(tag_name) do |attributes, content|
|
180
|
+
tag(tag_name, attributes, content)
|
181
|
+
end
|
182
|
+
end
|
183
|
+
|
184
|
+
def tag tag_name, attributes=nil, content=nil
|
185
|
+
if !(`attributes.$$is_hash || attributes === #{nil}`)
|
186
|
+
content = attributes
|
187
|
+
attributes = nil
|
188
|
+
end
|
189
|
+
|
190
|
+
VirtualDOM.node(
|
191
|
+
tag_name,
|
192
|
+
Component.sanitize_attributes(attributes),
|
193
|
+
Component.sanitize_content(content)
|
194
|
+
)
|
195
|
+
end
|
196
|
+
|
195
197
|
def call &block
|
196
198
|
Clearwater::Application::AppRegistry.render_all(&block)
|
197
199
|
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module Clearwater
|
2
|
+
class DOMReference
|
3
|
+
def mount node, previous
|
4
|
+
@node = node
|
5
|
+
end
|
6
|
+
|
7
|
+
def unmount node, previous
|
8
|
+
end
|
9
|
+
|
10
|
+
def method_missing *args, &block
|
11
|
+
@node.public_send *args, &block
|
12
|
+
end
|
13
|
+
|
14
|
+
def wrap node
|
15
|
+
Bowser::Element.new(node)
|
16
|
+
end
|
17
|
+
|
18
|
+
%x{
|
19
|
+
Opal.defn(self, 'hook', function(node, name, previous) {
|
20
|
+
var self = this;
|
21
|
+
#{mount(wrap(`node`), `previous`)};
|
22
|
+
});
|
23
|
+
|
24
|
+
Opal.defn(self, 'unhook', function(node, name, previous) {
|
25
|
+
var self = this;
|
26
|
+
#{unmount(wrap(`node`), `previous`)};
|
27
|
+
});
|
28
|
+
}
|
29
|
+
end
|
30
|
+
end
|
data/opal/clearwater/link.rb
CHANGED
@@ -1,22 +1,5 @@
|
|
1
1
|
require 'clearwater/component'
|
2
|
-
require '
|
3
|
-
require 'browser/history'
|
4
|
-
|
5
|
-
# TODO: Remove this once opal-browser supports coordinates natively
|
6
|
-
# for touch events.
|
7
|
-
module Browser
|
8
|
-
class Event
|
9
|
-
class Touch
|
10
|
-
def x
|
11
|
-
`#@native.pageX`
|
12
|
-
end
|
13
|
-
|
14
|
-
def y
|
15
|
-
`#@native.pageY`
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
2
|
+
require 'bowser'
|
20
3
|
|
21
4
|
class Link
|
22
5
|
include Clearwater::Component
|
@@ -56,6 +39,8 @@ class Link
|
|
56
39
|
end
|
57
40
|
|
58
41
|
def handle_touch event
|
42
|
+
document = Bowser.document
|
43
|
+
|
59
44
|
# All links will treat this as touch because this is a touch device
|
60
45
|
@@touch = true
|
61
46
|
moved = false
|
@@ -78,24 +63,32 @@ class Link
|
|
78
63
|
navigate event
|
79
64
|
end
|
80
65
|
|
81
|
-
|
82
|
-
|
66
|
+
document.off 'touchmove', &touch_move_handler
|
67
|
+
document.off 'touchend', &touch_end_handler
|
83
68
|
end
|
84
69
|
|
85
|
-
|
86
|
-
|
70
|
+
document.on 'touchmove', &touch_move_handler
|
71
|
+
document.on 'touchend', &touch_end_handler
|
87
72
|
end
|
88
73
|
|
89
74
|
def navigate event
|
90
75
|
# Don't handle middle-button clicks and clicks with modifier keys. Let them
|
91
76
|
# pass through to the browser's default handling or the user's modified handling.
|
92
|
-
|
93
|
-
event.
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
77
|
+
modified = (
|
78
|
+
event.meta? ||
|
79
|
+
event.shift? ||
|
80
|
+
event.ctrl? ||
|
81
|
+
event.alt? ||
|
82
|
+
event.button == 1
|
83
|
+
)
|
84
|
+
|
85
|
+
return if modified
|
86
|
+
|
87
|
+
event.prevent
|
88
|
+
window = Bowser.window
|
89
|
+
if href != window.location.path
|
90
|
+
Clearwater::Router.navigate_to href
|
91
|
+
window.scroll 0, 0
|
99
92
|
end
|
100
93
|
end
|
101
94
|
|
@@ -112,7 +105,7 @@ class Link
|
|
112
105
|
end
|
113
106
|
|
114
107
|
def check_active href
|
115
|
-
if
|
108
|
+
if Bowser.window.location.path == href
|
116
109
|
class_name = (
|
117
110
|
@attributes.delete(:class_name) ||
|
118
111
|
@attributes.delete(:class) ||
|
data/opal/clearwater/router.rb
CHANGED
@@ -6,9 +6,9 @@ module Clearwater
|
|
6
6
|
attr_accessor :application
|
7
7
|
|
8
8
|
def initialize options={}, &block
|
9
|
-
@window = options.fetch(:window) {
|
10
|
-
@location = options.fetch(:location) { window
|
11
|
-
@history = options.fetch(:history) { window
|
9
|
+
@window = options.fetch(:window) { Bowser.window }
|
10
|
+
@location = options.fetch(:location) { window.location }
|
11
|
+
@history = options.fetch(:history) { window.history }
|
12
12
|
@routes = RouteCollection.new(self)
|
13
13
|
@application = options[:application]
|
14
14
|
|
@@ -32,17 +32,17 @@ module Clearwater
|
|
32
32
|
routes_for_path(path).map(&:target)
|
33
33
|
end
|
34
34
|
|
35
|
-
def
|
35
|
+
def params path=current_path
|
36
36
|
path_parts = path.split("/").reject(&:empty?)
|
37
37
|
canonical_parts = canonical_path_for_path(path).split("/").reject(&:empty?)
|
38
38
|
|
39
39
|
canonical_parts.each_with_index.reduce({}) { |params, (part, index)|
|
40
40
|
if part.start_with? ":"
|
41
41
|
param = part[1..-1]
|
42
|
-
params
|
43
|
-
else
|
44
|
-
params
|
42
|
+
params[param] = path_parts[index]
|
45
43
|
end
|
44
|
+
|
45
|
+
params
|
46
46
|
}
|
47
47
|
end
|
48
48
|
|
@@ -50,21 +50,38 @@ module Clearwater
|
|
50
50
|
end
|
51
51
|
|
52
52
|
def current_path
|
53
|
-
location
|
53
|
+
location.path
|
54
|
+
end
|
55
|
+
|
56
|
+
def self.current_path
|
57
|
+
location.path
|
58
|
+
end
|
59
|
+
|
60
|
+
def current_url
|
61
|
+
location.href
|
62
|
+
end
|
63
|
+
|
64
|
+
def self.current_url
|
65
|
+
location.href
|
66
|
+
end
|
67
|
+
|
68
|
+
def self.location
|
69
|
+
Bowser.window.location
|
54
70
|
end
|
55
71
|
|
56
72
|
def navigate_to path
|
57
|
-
|
73
|
+
history.push path
|
58
74
|
set_outlets
|
59
75
|
render_application
|
60
76
|
end
|
61
77
|
|
62
|
-
def
|
63
|
-
|
78
|
+
def self.navigate_to path
|
79
|
+
Bowser.window.history.push path
|
80
|
+
render_all_apps
|
64
81
|
end
|
65
82
|
|
66
|
-
def
|
67
|
-
location
|
83
|
+
def navigate_to_remote path
|
84
|
+
location.href = path
|
68
85
|
end
|
69
86
|
|
70
87
|
def back
|
@@ -85,14 +102,14 @@ module Clearwater
|
|
85
102
|
|
86
103
|
private
|
87
104
|
|
88
|
-
def push_state path
|
89
|
-
history.pushState({}, nil, path)
|
90
|
-
end
|
91
|
-
|
92
105
|
def render_application
|
93
106
|
if application && application.component
|
94
107
|
application.component.call
|
95
108
|
end
|
96
109
|
end
|
110
|
+
|
111
|
+
def self.render_all_apps
|
112
|
+
Clearwater::Application.render
|
113
|
+
end
|
97
114
|
end
|
98
115
|
end
|
@@ -1,4 +1,3 @@
|
|
1
|
-
require 'browser'
|
2
1
|
require 'clearwater/virtual_dom/js/virtual_dom.js'
|
3
2
|
|
4
3
|
module VirtualDOM
|
@@ -40,7 +39,7 @@ module VirtualDOM
|
|
40
39
|
end
|
41
40
|
|
42
41
|
class Document
|
43
|
-
def initialize(root
|
42
|
+
def initialize(root=Bowser.document.create_element('div'))
|
44
43
|
@root = root
|
45
44
|
end
|
46
45
|
|
data/opal/clearwater.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'clearwater'
|
2
2
|
require 'clearwater/svg_component'
|
3
|
+
require 'bowser'
|
3
4
|
|
4
5
|
module Clearwater
|
5
6
|
RSpec.describe Application do
|
@@ -33,7 +34,7 @@ module Clearwater
|
|
33
34
|
end
|
34
35
|
end.new
|
35
36
|
}
|
36
|
-
let(:element) {
|
37
|
+
let(:element) { Bowser.document.create_element('div') }
|
37
38
|
|
38
39
|
it 'renders to the specified element' do
|
39
40
|
app.perform_render
|
@@ -0,0 +1,64 @@
|
|
1
|
+
require 'clearwater/black_box_node'
|
2
|
+
|
3
|
+
module Clearwater
|
4
|
+
describe BlackBoxNode do
|
5
|
+
let(:object) {
|
6
|
+
Class.new do
|
7
|
+
include Clearwater::BlackBoxNode
|
8
|
+
|
9
|
+
attr_reader :last_update
|
10
|
+
|
11
|
+
def node
|
12
|
+
VirtualDOM.node :span, { id: 'foo' }, ['hi']
|
13
|
+
end
|
14
|
+
|
15
|
+
def mount node
|
16
|
+
@mounted = true
|
17
|
+
end
|
18
|
+
|
19
|
+
def update
|
20
|
+
@last_update = Time.now
|
21
|
+
end
|
22
|
+
|
23
|
+
def unmount
|
24
|
+
@mounted = false
|
25
|
+
end
|
26
|
+
|
27
|
+
def mounted?
|
28
|
+
!!@mounted
|
29
|
+
end
|
30
|
+
end.new
|
31
|
+
}
|
32
|
+
let(:renderable) { BlackBoxNode::Renderable.new(object) }
|
33
|
+
|
34
|
+
it 'has the special type of "Widget"' do
|
35
|
+
r = renderable
|
36
|
+
expect(`r.type`).to eq 'Widget'
|
37
|
+
end
|
38
|
+
|
39
|
+
it 'uses the delegate node to render into the DOM' do
|
40
|
+
r = renderable
|
41
|
+
expect(`#{renderable.create_element}.native.outerHTML`).to eq '<span id="foo">hi</span>'
|
42
|
+
end
|
43
|
+
|
44
|
+
it 'calls mount when inserted into the DOM' do
|
45
|
+
r = renderable
|
46
|
+
`r.init()`
|
47
|
+
expect(object).to be_mounted
|
48
|
+
end
|
49
|
+
|
50
|
+
it 'calls unmount when removed from the DOM' do
|
51
|
+
r = renderable
|
52
|
+
`r.init()`
|
53
|
+
`r.destroy()`
|
54
|
+
expect(object).not_to be_mounted
|
55
|
+
end
|
56
|
+
|
57
|
+
it 'calls update when updated in the DOM' do
|
58
|
+
r = renderable
|
59
|
+
`r.update({})`
|
60
|
+
|
61
|
+
expect(object.last_update).not_to be_nil
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'clearwater/dom_reference'
|
2
|
+
|
3
|
+
module Clearwater
|
4
|
+
describe DOMReference do
|
5
|
+
let(:ref) { DOMReference.new }
|
6
|
+
|
7
|
+
it 'delegates to the DOM node passed in on mount' do
|
8
|
+
r = ref
|
9
|
+
|
10
|
+
`r.hook({ value: 'hi' })`
|
11
|
+
|
12
|
+
expect(r.value).to eq 'hi'
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'clearwater/router'
|
2
|
+
require 'ostruct'
|
2
3
|
|
3
4
|
module Clearwater
|
4
5
|
RSpec.describe Router do
|
@@ -22,7 +23,7 @@ module Clearwater
|
|
22
23
|
end
|
23
24
|
|
24
25
|
it 'gets the params for a given path' do
|
25
|
-
expect(router.
|
26
|
+
expect(router.params('/articles/foo')).to eq article_id: 'foo'
|
26
27
|
end
|
27
28
|
|
28
29
|
it 'gets the components for a given path' do
|
@@ -34,18 +35,18 @@ module Clearwater
|
|
34
35
|
end
|
35
36
|
|
36
37
|
it 'gets the current path' do
|
37
|
-
location =
|
38
|
+
location = OpenStruct.new(path: '/foo')
|
38
39
|
router = Router.new(location: location)
|
39
40
|
|
40
41
|
expect(router.current_path).to eq '/foo'
|
41
42
|
|
42
|
-
location
|
43
|
+
location.path = '/bar'
|
43
44
|
|
44
45
|
expect(router.current_path).to eq '/bar'
|
45
46
|
end
|
46
47
|
|
47
48
|
it 'gets the params from the path' do
|
48
|
-
expect(router.
|
49
|
+
expect(router.params('/articles/123')).to eq({ article_id: '123' })
|
49
50
|
end
|
50
51
|
end
|
51
52
|
end
|
data/spec/component_spec.rb
CHANGED
@@ -1,15 +1,5 @@
|
|
1
1
|
require 'clearwater/component'
|
2
2
|
|
3
|
-
# When running specs from the CLI, it doesn't define this class
|
4
|
-
unless defined? Browser::Event
|
5
|
-
module Browser
|
6
|
-
class Event
|
7
|
-
def initialize event
|
8
|
-
end
|
9
|
-
end
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
3
|
module Clearwater
|
14
4
|
RSpec.describe Component do
|
15
5
|
let(:component_class) {
|
@@ -32,13 +22,13 @@ module Clearwater
|
|
32
22
|
it 'sanitizes element attributes' do
|
33
23
|
attributes = Component.sanitize_attributes({
|
34
24
|
class: 'foo',
|
35
|
-
onclick: proc { |event| expect(event).to be_a
|
25
|
+
onclick: proc { |event| expect(event).to be_a Bowser::Event },
|
36
26
|
})
|
37
27
|
|
38
28
|
# Renames :class to :class_name
|
39
29
|
expect(attributes[:class_name]).to eq 'foo'
|
40
30
|
|
41
|
-
# Wraps yielded events in a
|
31
|
+
# Wraps yielded events in a Bowser::Event
|
42
32
|
attributes[:onclick].call(`document.createEvent('MouseEvent')`)
|
43
33
|
end
|
44
34
|
|
@@ -57,7 +47,7 @@ module Clearwater
|
|
57
47
|
it 'retrieves params from the router' do
|
58
48
|
router = double('Router')
|
59
49
|
params = { article_id: 123 }
|
60
|
-
allow(router).to receive(:
|
50
|
+
allow(router).to receive(:params) { params }
|
61
51
|
allow(router).to receive(:current_path) { '/articles/123' }
|
62
52
|
component.router = router
|
63
53
|
|
metadata
CHANGED
@@ -1,97 +1,97 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: clearwater
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0.beta1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jamie Gaskins
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-01-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: opal
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ~>
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '0.7'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ~>
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0.7'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: bowser
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ~>
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 0.1.2
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ~>
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 0.1.2
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: bundler
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ~>
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '1.3'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ~>
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '1.3'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: opal-rspec
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ~>
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: 0.5.0.beta2
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ~>
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: 0.5.0.beta2
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rake
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - ~>
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '10.1'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- -
|
80
|
+
- - ~>
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '10.1'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: pry
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- -
|
87
|
+
- - ~>
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: '0.9'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- -
|
94
|
+
- - ~>
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0.9'
|
97
97
|
description: Front-end web framework built on Opal
|
@@ -101,22 +101,26 @@ executables: []
|
|
101
101
|
extensions: []
|
102
102
|
extra_rdoc_files: []
|
103
103
|
files:
|
104
|
-
- lib/clearwater.rb
|
105
104
|
- lib/clearwater/version.rb
|
106
|
-
-
|
105
|
+
- lib/clearwater.rb
|
107
106
|
- opal/clearwater/application.rb
|
108
107
|
- opal/clearwater/application_registry.rb
|
108
|
+
- opal/clearwater/black_box_node.rb
|
109
109
|
- opal/clearwater/cached_render.rb
|
110
110
|
- opal/clearwater/component.rb
|
111
|
+
- opal/clearwater/dom_reference.rb
|
111
112
|
- opal/clearwater/link.rb
|
112
|
-
- opal/clearwater/router.rb
|
113
113
|
- opal/clearwater/router/route.rb
|
114
114
|
- opal/clearwater/router/route_collection.rb
|
115
|
+
- opal/clearwater/router.rb
|
115
116
|
- opal/clearwater/svg_component.rb
|
116
|
-
- opal/clearwater/virtual_dom.rb
|
117
117
|
- opal/clearwater/virtual_dom/js/virtual_dom.js
|
118
|
+
- opal/clearwater/virtual_dom.rb
|
119
|
+
- opal/clearwater.rb
|
118
120
|
- spec/clearwater/application_spec.rb
|
121
|
+
- spec/clearwater/black_box_node_spec.rb
|
119
122
|
- spec/clearwater/cached_render_spec.rb
|
123
|
+
- spec/clearwater/dom_reference_spec.rb
|
120
124
|
- spec/clearwater/router_spec.rb
|
121
125
|
- spec/component_spec.rb
|
122
126
|
homepage: https://clearwater-rb.github.io/
|
@@ -129,22 +133,24 @@ require_paths:
|
|
129
133
|
- lib
|
130
134
|
required_ruby_version: !ruby/object:Gem::Requirement
|
131
135
|
requirements:
|
132
|
-
- -
|
136
|
+
- - '>='
|
133
137
|
- !ruby/object:Gem::Version
|
134
138
|
version: '0'
|
135
139
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
136
140
|
requirements:
|
137
|
-
- -
|
141
|
+
- - '>'
|
138
142
|
- !ruby/object:Gem::Version
|
139
|
-
version:
|
143
|
+
version: 1.3.1
|
140
144
|
requirements: []
|
141
145
|
rubyforge_project:
|
142
|
-
rubygems_version: 2.
|
146
|
+
rubygems_version: 2.0.14
|
143
147
|
signing_key:
|
144
148
|
specification_version: 4
|
145
149
|
summary: Front-end web framework built on Opal
|
146
150
|
test_files:
|
147
151
|
- spec/clearwater/application_spec.rb
|
152
|
+
- spec/clearwater/black_box_node_spec.rb
|
148
153
|
- spec/clearwater/cached_render_spec.rb
|
154
|
+
- spec/clearwater/dom_reference_spec.rb
|
149
155
|
- spec/clearwater/router_spec.rb
|
150
156
|
- spec/component_spec.rb
|