reactive-ruby 0.7.34 → 0.7.35
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/README.md +1 -0
- data/lib/react/component.rb +3 -3
- data/lib/react/component/class_methods.rb +5 -0
- data/lib/react/element.rb +3 -3
- data/lib/reactive-ruby/version.rb +1 -1
- data/path_release_steps.md +8 -0
- data/reactive-ruby.gemspec +1 -1
- data/spec/react/dsl_spec.rb +132 -10
- data/spec/react/param_declaration_spec.rb +28 -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: 05ae08f2b56a80908ec8567ccc3357293ab2c7bc
|
4
|
+
data.tar.gz: de11dd05910b4caed3bc5f2b2176b3884f6db348
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 538f69788b50ced92007ee30f819ddaf1696ce01c61ade058134a7ab36874da6d6de5c354b88849a69d4a7c0634603b1b45163e89e77898acb303f6b567cb6ec
|
7
|
+
data.tar.gz: f9ea8686c375fb3f52e202e2bb3c1c9579336f3ae13d5260795bd479699da39361de9373d34d80a6419a523cb3c6b6ef5627c8e5f3392fa51b08086a08e61ad7
|
data/README.md
CHANGED
@@ -3,6 +3,7 @@
|
|
3
3
|
[](https://gitter.im/zetachang/react.rb?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
4
4
|
[](https://travis-ci.org/zetachang/react.rb)
|
5
5
|
[](https://codeclimate.com/github/zetachang/react.rb)
|
6
|
+
[](https://badge.fury.io/rb/reactive-ruby)
|
6
7
|
|
7
8
|
**React.rb is an [Opal Ruby](http://opalrb.org) wrapper of
|
8
9
|
[React.js library](http://facebook.github.io/react/)**.
|
data/lib/react/component.rb
CHANGED
@@ -44,7 +44,7 @@ module React
|
|
44
44
|
unless name && name.method_defined?(:render)
|
45
45
|
return super
|
46
46
|
end
|
47
|
-
RenderingContext.build_or_render(node_only, name, *args, &block)
|
47
|
+
React::RenderingContext.build_or_render(node_only, name, *args, &block)
|
48
48
|
end
|
49
49
|
end
|
50
50
|
end
|
@@ -241,7 +241,7 @@ module React
|
|
241
241
|
name = "p"
|
242
242
|
end
|
243
243
|
|
244
|
-
RenderingContext.build_or_render(node_only, name, *args, &block)
|
244
|
+
React::RenderingContext.build_or_render(node_only, name, *args, &block)
|
245
245
|
end
|
246
246
|
|
247
247
|
def watch(value, &on_change)
|
@@ -256,7 +256,7 @@ module React
|
|
256
256
|
|
257
257
|
def _render_wrapper
|
258
258
|
State.set_state_context_to(self) do
|
259
|
-
RenderingContext.render(nil) {render || ""}.tap { |element| @waiting_on_resources = element.waiting_on_resources if element.respond_to? :waiting_on_resources }
|
259
|
+
React::RenderingContext.render(nil) {render || ""}.tap { |element| @waiting_on_resources = element.waiting_on_resources if element.respond_to? :waiting_on_resources }
|
260
260
|
end
|
261
261
|
rescue Exception => e
|
262
262
|
self.class.process_exception(e, self)
|
@@ -98,6 +98,11 @@ module React
|
|
98
98
|
define_method(name) do
|
99
99
|
@_all_others ||= self.class.validator.undefined_props(props)
|
100
100
|
end
|
101
|
+
|
102
|
+
validator_in_lexial_scope = validator
|
103
|
+
props_wrapper.define_method(name) do
|
104
|
+
@_all_others ||= validator_in_lexial_scope.undefined_props(props)
|
105
|
+
end
|
101
106
|
end
|
102
107
|
|
103
108
|
def define_state(*states, &block)
|
data/lib/react/element.rb
CHANGED
@@ -60,18 +60,18 @@ module React
|
|
60
60
|
new_props = properties.dup
|
61
61
|
new_props["class"] = "#{new_props['class']} #{class_name} #{args.delete("class")} #{args.delete('className')}".split(" ").uniq.join(" ")
|
62
62
|
new_props.merge! args
|
63
|
-
RenderingContext.replace(
|
63
|
+
React::RenderingContext.replace(
|
64
64
|
self,
|
65
65
|
React::RenderingContext.build { React::RenderingContext.render(type, new_props, &new_block) }
|
66
66
|
)
|
67
67
|
end
|
68
68
|
|
69
69
|
def as_node
|
70
|
-
RenderingContext.as_node(self)
|
70
|
+
React::RenderingContext.as_node(self)
|
71
71
|
end
|
72
72
|
|
73
73
|
def delete
|
74
|
-
RenderingContext.delete(self)
|
74
|
+
React::RenderingContext.delete(self)
|
75
75
|
end
|
76
76
|
end
|
77
77
|
end
|
@@ -0,0 +1,8 @@
|
|
1
|
+
|
2
|
+
For example assuming you are releasing fix to 0.8.18
|
3
|
+
|
4
|
+
1. Checkout 0-8-stable
|
5
|
+
2. Update tests, fix the bug and commit the changes.
|
6
|
+
3. Build & Release to RubyGems (Remember the version in version.rb should already be 0.8.19)
|
7
|
+
4. Create a tag 'v0.8.19' pointing to that commit.
|
8
|
+
5. Bump the version in 0-8-stable to 0.8.20 so it will be ready for the next patch level release.
|
data/reactive-ruby.gemspec
CHANGED
@@ -9,7 +9,7 @@ Gem::Specification.new do |s|
|
|
9
9
|
|
10
10
|
s.author = 'David Chang'
|
11
11
|
s.email = 'zeta11235813@gmail.com'
|
12
|
-
s.homepage = 'https://
|
12
|
+
s.homepage = 'https://reactrb.org'
|
13
13
|
s.summary = 'Opal Ruby wrapper of React.js library.'
|
14
14
|
s.license = 'MIT'
|
15
15
|
s.description = "Write React UI components in pure Ruby."
|
data/spec/react/dsl_spec.rb
CHANGED
@@ -2,15 +2,137 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
if opal?
|
4
4
|
describe 'the React DSL' do
|
5
|
-
|
6
|
-
it "
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
5
|
+
|
6
|
+
it "will turn the last string in a block into a element" do
|
7
|
+
stub_const 'Foo', Class.new
|
8
|
+
Foo.class_eval do
|
9
|
+
include React::Component
|
10
|
+
def render
|
11
|
+
div { "hello" }
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
expect(React.render_to_static_markup(React.create_element(Foo))).to eq('<div>hello</div>')
|
16
|
+
end
|
17
|
+
|
18
|
+
it "has a .span short hand String method" do
|
19
|
+
stub_const 'Foo', Class.new
|
20
|
+
Foo.class_eval do
|
21
|
+
include React::Component
|
22
|
+
def render
|
23
|
+
div { "hello".span; "goodby".span }
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
expect(React.render_to_static_markup(React.create_element(Foo))).to eq('<div><span>hello</span><span>goodby</span></div>')
|
28
|
+
end
|
29
|
+
|
30
|
+
it "has a .br short hand String method" do
|
31
|
+
stub_const 'Foo', Class.new
|
32
|
+
Foo.class_eval do
|
33
|
+
include React::Component
|
34
|
+
def render
|
35
|
+
div { "hello".br }
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
expect(React.render_to_static_markup(React.create_element(Foo))).to eq('<div><span>hello<br></span></div>')
|
40
|
+
end
|
41
|
+
|
42
|
+
it "has a .td short hand String method" do
|
43
|
+
stub_const 'Foo', Class.new
|
44
|
+
Foo.class_eval do
|
45
|
+
include React::Component
|
46
|
+
def render
|
47
|
+
table { tr { "hello".td } }
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
expect(React.render_to_static_markup(React.create_element(Foo))).to eq('<table><tr><td>hello</td></tr></table>')
|
52
|
+
end
|
53
|
+
|
54
|
+
it "has a .para short hand String method" do
|
55
|
+
stub_const 'Foo', Class.new
|
56
|
+
Foo.class_eval do
|
57
|
+
include React::Component
|
58
|
+
def render
|
59
|
+
div { "hello".para }
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
expect(React.render_to_static_markup(React.create_element(Foo))).to eq('<div><p>hello</p></div>')
|
64
|
+
end
|
65
|
+
|
66
|
+
it "will treat the component class name as a first class component name" do
|
67
|
+
stub_const 'Mod::Bar', Class.new
|
68
|
+
Mod::Bar.class_eval do
|
69
|
+
include React::Component
|
70
|
+
def render
|
71
|
+
"a man walks into a bar"
|
72
|
+
end
|
73
|
+
end
|
74
|
+
stub_const 'Foo', Class.new(React::Component::Base)
|
75
|
+
Foo.class_eval do
|
76
|
+
def render
|
77
|
+
Mod::Bar()
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
expect(React.render_to_static_markup(React.create_element(Foo))).to eq('<span>a man walks into a bar</span>')
|
82
|
+
end
|
83
|
+
|
84
|
+
it "can add class names by the haml .class notation" do
|
85
|
+
stub_const 'Mod::Bar', Class.new(React::Component::Base)
|
86
|
+
Mod::Bar.class_eval do
|
87
|
+
collect_other_params_as :attributes
|
88
|
+
def render
|
89
|
+
"a man walks into a bar".span(attributes)
|
90
|
+
end
|
91
|
+
end
|
92
|
+
stub_const 'Foo', Class.new(React::Component::Base)
|
93
|
+
Foo.class_eval do
|
94
|
+
def render
|
95
|
+
Mod::Bar().the_class
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
expect(React.render_to_static_markup(React.create_element(Foo))).to eq('<span class="the-class">a man walks into a bar</span>')
|
100
|
+
end
|
101
|
+
|
102
|
+
it "can use the 'class' keyword for classes" do
|
103
|
+
stub_const 'Foo', Class.new
|
104
|
+
Foo.class_eval do
|
105
|
+
include React::Component
|
106
|
+
def render
|
107
|
+
span(class: "the-class") { "hello" }
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
expect(React.render_to_static_markup(React.create_element(Foo))).to eq('<span class="the-class">hello</span>')
|
112
|
+
end
|
113
|
+
|
114
|
+
it "can generate a unrendered node using the .as_node method" do # div { "hello" }.as_node
|
115
|
+
stub_const 'Foo', Class.new #(React::Component::Base)
|
116
|
+
Foo.class_eval do
|
117
|
+
include React::Component
|
118
|
+
def render
|
119
|
+
span { "hello".span.as_node.class.name }.as_node.render
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
expect(React.render_to_static_markup(React.create_element(Foo))).to eq('<span>React::Element</span>')
|
124
|
+
end
|
125
|
+
|
126
|
+
it "can use the dangerously_set_inner_HTML param" do
|
127
|
+
stub_const 'Foo', Class.new
|
128
|
+
Foo.class_eval do
|
129
|
+
include React::Component
|
130
|
+
def render
|
131
|
+
div(dangerously_set_inner_HTML: { __html: "Hello Goodby" })
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
135
|
+
expect(React.render_to_static_markup(React.create_element(Foo))).to eq('<div>Hello Goodby</div>')
|
136
|
+
end
|
15
137
|
end
|
16
138
|
end
|
@@ -2,6 +2,34 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
if opal?
|
4
4
|
describe 'the param macro' do
|
5
|
+
it 'defines collect_other_params_as method on params proxy' do
|
6
|
+
stub_const 'Foo', Class.new(React::Component::Base)
|
7
|
+
Foo.class_eval do
|
8
|
+
collect_other_params_as :foo
|
9
|
+
|
10
|
+
def render
|
11
|
+
div { params.foo[:bar] }
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
html = React.render_to_static_markup(React.create_element(Foo, { bar: 'biz' }))
|
16
|
+
expect(html).to eq('<div>biz</div>')
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'still defines deprecated collect_other_params_as method' do
|
20
|
+
stub_const 'Foo', Class.new(React::Component::Base)
|
21
|
+
Foo.class_eval do
|
22
|
+
collect_other_params_as :foo
|
23
|
+
|
24
|
+
def render
|
25
|
+
div { foo[:bar] }
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
html = React.render_to_static_markup(React.create_element(Foo, { bar: 'biz' }))
|
30
|
+
expect(html).to eq('<div>biz</div>')
|
31
|
+
end
|
32
|
+
|
5
33
|
it 'still defines deprecated param accessor method' do
|
6
34
|
stub_const 'Foo', Class.new(React::Component::Base)
|
7
35
|
Foo.class_eval do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: reactive-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.35
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Chang
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-12-
|
11
|
+
date: 2015-12-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: opal
|
@@ -344,6 +344,7 @@ files:
|
|
344
344
|
- logo1.png
|
345
345
|
- logo2.png
|
346
346
|
- logo3.png
|
347
|
+
- path_release_steps.md
|
347
348
|
- reactive-ruby.gemspec
|
348
349
|
- spec/controller_helper_spec.rb
|
349
350
|
- spec/index.html.erb
|
@@ -368,7 +369,7 @@ files:
|
|
368
369
|
- spec/spec_helper.rb
|
369
370
|
- spec/support/react/spec_helpers.rb
|
370
371
|
- spec/vendor/es5-shim.min.js
|
371
|
-
homepage: https://
|
372
|
+
homepage: https://reactrb.org
|
372
373
|
licenses:
|
373
374
|
- MIT
|
374
375
|
metadata: {}
|