clearwater 1.0.0.rc3 → 1.0.0.rc4

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: 2c9a840ae557659a4f0df595834d8ff94590de64
4
- data.tar.gz: af9368086749443938d6964c7fe85bc134a8185e
3
+ metadata.gz: 98660a461c2da1071bbc7a8f0cfd3db413ff2224
4
+ data.tar.gz: 53727157dec9793aafce8f6ec538099fc11c57d3
5
5
  SHA512:
6
- metadata.gz: 5191ef0e82b48af68a202a0fb987a0325193508f64fee64f9f2eaa237bd55cd8fd0c2b86b6e8e4dbddd8fb3828a647570a86507e9adc32c7592b14e8d5eb76bd
7
- data.tar.gz: abc0c95a41cfb1ccfb162025c408a092375d07188a3fa15204bfa556022f55ebcf4ddcefcb99a2128d95760006e913ae3544cba960b0470d4b0ebec7954ddada
6
+ metadata.gz: 1016b8ce23f014f05d8aa14df5e7721c59b1950896b45e7f60e498ec4722ab24dde35c58fbc24c2ecac9171c216bb9966fc5a0ace8e510f77de571a8dca1f521
7
+ data.tar.gz: 38d578979f4aaed936e475d80c577e77a64dc76ce595a4c645eec7bf55d5688b15af2d5d05d604bc4c7d8986d4efd16073975253d0b7fbdcb68b159e45c743e6
@@ -1,3 +1,3 @@
1
1
  module Clearwater
2
- VERSION = "1.0.0.rc3"
2
+ VERSION = "1.0.0.rc4"
3
3
  end
@@ -1,107 +1,115 @@
1
1
  require 'clearwater/virtual_dom/js/virtual_dom.js'
2
2
 
3
- module VirtualDOM
4
- def self.node(tag_name, attributes=nil, content=nil)
5
- %x{
6
- return virtualDom.h(
7
- tag_name,
8
- #{HashUtils.camelized_native(attributes)},
9
- #{sanitize_content(content)}
10
- );
11
- }
12
- end
13
-
14
- def self.svg(tag_name, attributes=nil, content=nil)
15
- %x{
16
- return virtualDom.svg(
17
- tag_name,
18
- #{HashUtils.camelized_native(attributes)},
19
- #{sanitize_content(content)}
20
- );
21
- }
22
- end
3
+ module Clearwater
4
+ module VirtualDOM
5
+ def self.node(tag_name, attributes=nil, content=nil)
6
+ %x{
7
+ return virtualDom.h(
8
+ tag_name,
9
+ #{HashUtils.camelized_native(attributes)},
10
+ #{sanitize_content(content)}
11
+ );
12
+ }
13
+ end
23
14
 
24
- def self.create_element(node)
25
- `virtualDom.create(node)`
26
- end
15
+ def self.svg(tag_name, attributes=nil, content=nil)
16
+ %x{
17
+ return virtualDom.svg(
18
+ tag_name,
19
+ #{HashUtils.camelized_native(attributes)},
20
+ #{sanitize_content(content)}
21
+ );
22
+ }
23
+ end
27
24
 
28
- def self.diff first, second
29
- `virtualDom.diff(first, second)`
30
- end
25
+ def self.create_element(node)
26
+ `virtualDom.create(node)`
27
+ end
31
28
 
32
- def self.patch node, diff
33
- `virtualDom.patch(node, diff)`
34
- end
29
+ def self.diff first, second
30
+ `virtualDom.diff(first, second)`
31
+ end
35
32
 
36
- def self.sanitize_content content
37
- %x{
38
- if(content === Opal.nil || content === undefined) return null;
39
- if(content.$$is_array)
40
- return #{content.map!{ |c| sanitize_content c }};
41
- return content;
42
- }
43
- end
33
+ def self.patch node, diff
34
+ `virtualDom.patch(node, diff)`
35
+ end
44
36
 
45
- class Document
46
- def initialize(root=Bowser.document.create_element('div'))
47
- @root = root
37
+ def self.sanitize_content content
38
+ %x{
39
+ if(content === Opal.nil || content === undefined) return null;
40
+ if(content.$$is_array)
41
+ return #{content.map!{ |c| sanitize_content c }};
42
+ return content;
43
+ }
48
44
  end
49
45
 
50
- def render node
51
- if rendered?
52
- diff = VirtualDOM.diff @node, node
53
- VirtualDOM.patch @tree, diff
54
- @node = node
55
- else
56
- @node = node
57
- @tree = create_element(node)
58
- @root.inner_dom = @tree
59
- @rendered = true
46
+ class Document
47
+ def initialize(root=Bowser.document.create_element('div'))
48
+ @root = root
60
49
  end
61
- end
62
50
 
63
- def create_element node
64
- `virtualDom.create(node)`
65
- end
51
+ def render node
52
+ if rendered?
53
+ diff = VirtualDOM.diff @node, node
54
+ VirtualDOM.patch @tree, diff
55
+ @node = node
56
+ else
57
+ @node = node
58
+ @tree = create_element(node)
59
+ @root.inner_dom = @tree
60
+ @rendered = true
61
+ end
62
+ end
66
63
 
67
- def rendered?
68
- @rendered
64
+ def create_element node
65
+ `virtualDom.create(node)`
66
+ end
67
+
68
+ def rendered?
69
+ @rendered
70
+ end
69
71
  end
70
- end
71
72
 
72
- module StringUtils
73
- # Speed up camelization like whoa.
74
- %x{ var camelized_cache = {}; }
73
+ module StringUtils
74
+ # Speed up camelization like whoa.
75
+ %x{ var camelized_cache = {}; }
75
76
 
76
- def self.camelize string
77
- %x{
78
- if(camelized_cache.hasOwnProperty(string)) {
79
- return camelized_cache[string];
80
- } else {
81
- camelized_cache[string] = string.replace(/_(\w)/g, self.$_camelize_handler);
82
- return camelized_cache[string];
77
+ def self.camelize string
78
+ %x{
79
+ if(camelized_cache.hasOwnProperty(string)) {
80
+ return camelized_cache[string];
81
+ } else {
82
+ camelized_cache[string] = string.replace(/_(\w)/g, self.$_camelize_handler);
83
+ return camelized_cache[string];
84
+ }
83
85
  }
84
- }
85
- end
86
+ end
86
87
 
87
- def self._camelize_handler _, character_match
88
- `character_match.toUpperCase()`
88
+ def self._camelize_handler _, character_match
89
+ `character_match.toUpperCase()`
90
+ end
89
91
  end
90
- end
91
92
 
92
- module HashUtils
93
- def self.camelized_native hash
94
- return hash.to_n unless `!!hash.$$is_hash`
93
+ module HashUtils
94
+ def self.camelized_native hash
95
+ return hash.to_n unless `!!hash.$$is_hash`
95
96
 
96
- %x{
97
- var v, keys = #{hash.keys}, key, js_obj = {};
98
- for(var index = 0; index < keys.length; index++) {
99
- key = keys[index];
100
- v = #{hash[`key`]};
101
- js_obj[#{StringUtils.camelize(`key`)}] = v.$$is_hash ? self.$camelized_native(v) : v
97
+ %x{
98
+ var v, keys = #{hash.keys}, key, js_obj = {};
99
+ for(var index = 0; index < keys.length; index++) {
100
+ key = keys[index];
101
+ v = #{hash[`key`]};
102
+ js_obj[#{StringUtils.camelize(`key`)}] = v.$$is_hash
103
+ ? self.$camelized_native(v)
104
+ : (
105
+ (v && v.$$class) // If this is a Ruby object, nativize it
106
+ ? #{`v`.to_n}
107
+ : v
108
+ );
109
+ }
110
+ return js_obj;
102
111
  }
103
- return js_obj;
104
- }
112
+ end
105
113
  end
106
114
  end
107
115
  end
@@ -100,6 +100,23 @@ module Clearwater
100
100
  end
101
101
 
102
102
  def set_outlets targets=targets_for_path(current_path)
103
+ @old_targets = @targets || []
104
+ @targets = targets
105
+ navigating_from = @old_targets - @targets
106
+ navigating_to = @targets - @old_targets
107
+
108
+ navigating_from.each do |target|
109
+ if target.respond_to? :on_route_from
110
+ target.on_route_from
111
+ end
112
+ end
113
+
114
+ navigating_to.each do |target|
115
+ if target.respond_to? :on_route_to
116
+ target.on_route_to
117
+ end
118
+ end
119
+
103
120
  if targets.any?
104
121
  (targets.count).times do |index|
105
122
  targets[index].outlet = targets[index + 1]
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: clearwater
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.rc3
4
+ version: 1.0.0.rc4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jamie Gaskins
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-08-17 00:00:00.000000000 Z
11
+ date: 2016-09-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: opal
@@ -164,7 +164,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
164
164
  version: 1.3.1
165
165
  requirements: []
166
166
  rubyforge_project:
167
- rubygems_version: 2.6.6
167
+ rubygems_version: 2.4.8
168
168
  signing_key:
169
169
  specification_version: 4
170
170
  summary: Front-end Ruby web framework for fast, reasonable, and composable applications