inesita 0.4.4 → 0.5.0
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/CHANGELOG.md +13 -1
- data/inesita.gemspec +1 -1
- data/lib/inesita/cli/template/Gemfile.tt +1 -1
- data/lib/inesita/cli/template/app/store.rb.tt +1 -1
- data/opal/inesita.rb +1 -1
- data/opal/inesita/application.rb +11 -10
- data/opal/inesita/component.rb +11 -12
- data/opal/inesita/component_helpers.rb +9 -0
- data/opal/inesita/component_virtual_dom_extension.rb +2 -7
- data/opal/inesita/injection.rb +9 -0
- data/opal/inesita/injection_methods.rb +7 -0
- data/opal/inesita/layout.rb +1 -1
- data/opal/inesita/store.rb +8 -16
- data/spec/opal/application_spec.rb +5 -5
- data/spec/opal/injecion_spec.rb +18 -0
- metadata +6 -5
- data/opal/inesita/component_properties.rb +0 -27
- data/spec/opal/store_spec.rb +0 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b37363ed5044f4dc5a61efe0d92ba7f2eecd8938
|
4
|
+
data.tar.gz: d04e1ee6dd0e06d748777b60adfaa2fb0446085a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 53a97e1c19d97eff209dc3e9b7daa1be6a34b72a9ab5549cd8af76c73c526cb13a3a5a5a62c489af34b6806b5af285f40aba0c3f0b6e4fded198f474555ab01b
|
7
|
+
data.tar.gz: 40bc04dadbe5c5244fc46cf4c80548c47d085e77a4d1d4c60247f1c080be0797079882c8b30951ecc44b88ab9419955d0b5962406a47a6319a94c02562151cc4
|
data/CHANGELOG.md
CHANGED
@@ -1,4 +1,16 @@
|
|
1
|
-
## [0.
|
1
|
+
## [0.5.0] - 2016.10.22
|
2
|
+
|
3
|
+
### Added
|
4
|
+
- Injection (you can inject any object)
|
5
|
+
- `before_render` callback to `Component`
|
6
|
+
|
7
|
+
### Changed
|
8
|
+
- Store is deprecated, use Injection
|
9
|
+
|
10
|
+
### Removed
|
11
|
+
- `init` callback, use `initialize` instead
|
12
|
+
|
13
|
+
## [0.4.4] - 2016.10.04
|
2
14
|
|
3
15
|
### Added
|
4
16
|
- `on_enter` callback to Router
|
data/inesita.gemspec
CHANGED
data/opal/inesita.rb
CHANGED
@@ -7,8 +7,8 @@ require 'virtual_dom'
|
|
7
7
|
require 'inesita/browser'
|
8
8
|
require 'inesita/error'
|
9
9
|
require 'inesita/component_virtual_dom_extension'
|
10
|
-
require 'inesita/component_properties'
|
11
10
|
require 'inesita/component_helpers'
|
11
|
+
require 'inesita/injection'
|
12
12
|
require 'inesita/component'
|
13
13
|
require 'inesita/routes'
|
14
14
|
require 'inesita/router'
|
data/opal/inesita/application.rb
CHANGED
@@ -3,10 +3,10 @@ module Inesita
|
|
3
3
|
include Inesita::Component
|
4
4
|
|
5
5
|
def initialize(options = {})
|
6
|
-
setup_router(options
|
7
|
-
setup_layout(options
|
6
|
+
setup_router(options.delete(:router))
|
7
|
+
setup_layout(options.delete(:layout))
|
8
8
|
setup_root
|
9
|
-
|
9
|
+
setup_injections(options)
|
10
10
|
end
|
11
11
|
|
12
12
|
def render
|
@@ -18,7 +18,7 @@ module Inesita
|
|
18
18
|
def setup_router(router)
|
19
19
|
if router
|
20
20
|
raise Error, "Invalid #{router} class, should mixin Inesita::Router" unless router.include?(Inesita::Router)
|
21
|
-
@router = router.new
|
21
|
+
@router = inject(:router, router.new)
|
22
22
|
else
|
23
23
|
@router = Class.new { define_method(:method_missing) { raise 'Router missing' } }.new
|
24
24
|
end
|
@@ -27,7 +27,7 @@ module Inesita
|
|
27
27
|
def setup_layout(layout)
|
28
28
|
if layout
|
29
29
|
raise Error, "Invalid #{layout} class, should mixin Inesita::Layout" unless layout.include?(Inesita::Layout)
|
30
|
-
@layout = layout.new
|
30
|
+
@layout = inject(:layout, layout.new)
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
@@ -41,11 +41,12 @@ module Inesita
|
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
44
|
-
def
|
45
|
-
return unless
|
46
|
-
|
47
|
-
|
48
|
-
|
44
|
+
def setup_injections(injections)
|
45
|
+
return unless injections
|
46
|
+
return unless injections.is_a?(Hash)
|
47
|
+
injections.each do |key, value|
|
48
|
+
inject(key, value.new)
|
49
|
+
end
|
49
50
|
end
|
50
51
|
end
|
51
52
|
end
|
data/opal/inesita/component.rb
CHANGED
@@ -2,10 +2,8 @@ module Inesita
|
|
2
2
|
module Component
|
3
3
|
include VirtualDOM::DOM
|
4
4
|
include ComponentHelpers
|
5
|
-
include ComponentProperties
|
6
5
|
include ComponentVirtualDomExtension
|
7
|
-
|
8
|
-
def init; end
|
6
|
+
include Injection
|
9
7
|
|
10
8
|
def render
|
11
9
|
raise Error, "Implement #render in #{self.class} component"
|
@@ -13,7 +11,7 @@ module Inesita
|
|
13
11
|
|
14
12
|
def mount_to(element)
|
15
13
|
raise Error, "Can't mount #{self.class}, target element not found!" unless element
|
16
|
-
|
14
|
+
inject(:root_component, self)
|
17
15
|
@virtual_dom = render_virtual_dom
|
18
16
|
@root_node = VirtualDOM.create(@virtual_dom)
|
19
17
|
Browser.append_child(element, @root_node)
|
@@ -28,7 +26,10 @@ module Inesita
|
|
28
26
|
@virtual_dom = new_virtual_dom
|
29
27
|
end
|
30
28
|
|
29
|
+
def before_render; end;
|
30
|
+
|
31
31
|
def render_virtual_dom
|
32
|
+
before_render
|
32
33
|
@cache_component_counter = 0
|
33
34
|
@__virtual_nodes__ = []
|
34
35
|
render
|
@@ -39,14 +40,6 @@ module Inesita
|
|
39
40
|
end
|
40
41
|
end
|
41
42
|
|
42
|
-
def render!
|
43
|
-
Browser.animation_frame do
|
44
|
-
if @root_component
|
45
|
-
@root_component.render_if_root
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
43
|
def cache_component(component, &block)
|
51
44
|
@cache_component ||= {}
|
52
45
|
@cache_component_counter ||= 0
|
@@ -61,5 +54,11 @@ module Inesita
|
|
61
54
|
def unhook(mthd)
|
62
55
|
VirtualDOM::UnHook.method(method(mthd))
|
63
56
|
end
|
57
|
+
|
58
|
+
attr_reader :props
|
59
|
+
def with_props(props)
|
60
|
+
@props = props
|
61
|
+
self
|
62
|
+
end
|
64
63
|
end
|
65
64
|
end
|
@@ -3,7 +3,7 @@ module Inesita
|
|
3
3
|
def self.included(base)
|
4
4
|
base.alias_method :__a, :a
|
5
5
|
base.define_method(:a) do |params, &block|
|
6
|
-
params = { onclick: -> {
|
6
|
+
params = { onclick: -> { router.go_to(params[:href]) } }.merge(params) if params[:href] && router
|
7
7
|
__a(params, &block)
|
8
8
|
end
|
9
9
|
end
|
@@ -12,12 +12,7 @@ module Inesita
|
|
12
12
|
raise Error, "Component is nil in #{self.class} class" if comp.nil?
|
13
13
|
@__virtual_nodes__ ||= []
|
14
14
|
@__virtual_nodes__ << cache_component(comp) do
|
15
|
-
comp
|
16
|
-
.with_root_component(@root_component)
|
17
|
-
.with_router(@router)
|
18
|
-
.with_store(@store)
|
19
|
-
comp.init
|
20
|
-
comp
|
15
|
+
comp.is_a?(Class) ? comp.new : comp
|
21
16
|
end.with_props(opts[:props] || {}).render_virtual_dom
|
22
17
|
end
|
23
18
|
end
|
data/opal/inesita/layout.rb
CHANGED
data/opal/inesita/store.rb
CHANGED
@@ -1,23 +1,15 @@
|
|
1
1
|
module Inesita
|
2
|
+
# TODO: Remove it.
|
2
3
|
module Store
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
def render!
|
8
|
-
root_component.render!
|
4
|
+
def self.included(base)
|
5
|
+
$console.warn('"include Inesita::Store" is deprecated. Use "include Inesita::Injection" insted.')
|
6
|
+
self.include Injection
|
9
7
|
end
|
10
8
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
end
|
16
|
-
|
17
|
-
attr_reader :router
|
18
|
-
def with_router(router)
|
19
|
-
@router = router
|
20
|
-
self
|
9
|
+
def render!
|
10
|
+
Browser.animation_frame do
|
11
|
+
root_component.render_if_root
|
12
|
+
end
|
21
13
|
end
|
22
14
|
end
|
23
15
|
end
|
@@ -3,7 +3,7 @@ require 'spec_helper'
|
|
3
3
|
describe Inesita::Application do
|
4
4
|
let(:application) { Inesita::Application }
|
5
5
|
let(:layout) { Class.new { include Inesita::Layout } }
|
6
|
-
let(:
|
6
|
+
let(:injection) { Class.new { include Inesita::Injection } }
|
7
7
|
let(:router) do
|
8
8
|
Class.new do
|
9
9
|
include Inesita::Router
|
@@ -38,11 +38,11 @@ describe Inesita::Application do
|
|
38
38
|
expect { application.new(layout: layout) }.not_to raise_error
|
39
39
|
end
|
40
40
|
|
41
|
-
it 'should fail with wrong :store class' do
|
42
|
-
expect { application.new(store: Class) }.to raise_error Inesita::Error
|
43
|
-
end
|
44
|
-
|
45
41
|
it 'should not fail with :layout class' do
|
46
42
|
expect { application.new(router: router) }.not_to raise_error
|
47
43
|
end
|
44
|
+
|
45
|
+
it 'should not fail with any class for injection' do
|
46
|
+
expect { application.new(test: injection) }.not_to raise_error
|
47
|
+
end
|
48
48
|
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Inesita::Injection do
|
4
|
+
let(:application) { Inesita::Application }
|
5
|
+
let(:injection) { Class.new { include Inesita::Injection } }
|
6
|
+
|
7
|
+
it 'should respond to #render!' do
|
8
|
+
expect(injection.new).to respond_to(:render!)
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'should respond to #root_component' do
|
12
|
+
expect(injection.new).to respond_to(:root_component)
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'should respond to injection name method' do
|
16
|
+
expect(application.new(test: injection)).to respond_to(:test)
|
17
|
+
end
|
18
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: inesita
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michał Kalbarczyk
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-10-
|
11
|
+
date: 2016-10-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: opal
|
@@ -214,9 +214,10 @@ files:
|
|
214
214
|
- opal/inesita/browser.rb
|
215
215
|
- opal/inesita/component.rb
|
216
216
|
- opal/inesita/component_helpers.rb
|
217
|
-
- opal/inesita/component_properties.rb
|
218
217
|
- opal/inesita/component_virtual_dom_extension.rb
|
219
218
|
- opal/inesita/error.rb
|
219
|
+
- opal/inesita/injection.rb
|
220
|
+
- opal/inesita/injection_methods.rb
|
220
221
|
- opal/inesita/layout.rb
|
221
222
|
- opal/inesita/router.rb
|
222
223
|
- opal/inesita/routes.rb
|
@@ -225,10 +226,10 @@ files:
|
|
225
226
|
- spec/lib/spec_helper.rb
|
226
227
|
- spec/opal/application_spec.rb
|
227
228
|
- spec/opal/component_spec.rb
|
229
|
+
- spec/opal/injecion_spec.rb
|
228
230
|
- spec/opal/layout_spec.rb
|
229
231
|
- spec/opal/router_spec.rb
|
230
232
|
- spec/opal/spec_helper.rb
|
231
|
-
- spec/opal/store_spec.rb
|
232
233
|
homepage: http://github.com/inesita-rb/inesita
|
233
234
|
licenses:
|
234
235
|
- MIT
|
@@ -258,7 +259,7 @@ test_files:
|
|
258
259
|
- spec/lib/spec_helper.rb
|
259
260
|
- spec/opal/application_spec.rb
|
260
261
|
- spec/opal/component_spec.rb
|
262
|
+
- spec/opal/injecion_spec.rb
|
261
263
|
- spec/opal/layout_spec.rb
|
262
264
|
- spec/opal/router_spec.rb
|
263
265
|
- spec/opal/spec_helper.rb
|
264
|
-
- spec/opal/store_spec.rb
|
@@ -1,27 +0,0 @@
|
|
1
|
-
module Inesita
|
2
|
-
module ComponentProperties
|
3
|
-
attr_reader :root_component
|
4
|
-
def with_root_component(component)
|
5
|
-
@root_component = component
|
6
|
-
self
|
7
|
-
end
|
8
|
-
|
9
|
-
attr_reader :router
|
10
|
-
def with_router(router)
|
11
|
-
@router = router
|
12
|
-
self
|
13
|
-
end
|
14
|
-
|
15
|
-
attr_reader :store
|
16
|
-
def with_store(store)
|
17
|
-
@store = store
|
18
|
-
self
|
19
|
-
end
|
20
|
-
|
21
|
-
attr_reader :props
|
22
|
-
def with_props(props)
|
23
|
-
@props = props
|
24
|
-
self
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
data/spec/opal/store_spec.rb
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Inesita::Store do
|
4
|
-
let(:store) { Class.new { include Inesita::Store } }
|
5
|
-
|
6
|
-
it 'should respond to #store' do
|
7
|
-
expect(store.new).to respond_to(:store)
|
8
|
-
end
|
9
|
-
|
10
|
-
it 'should respond to #render!' do
|
11
|
-
expect(store.new).to respond_to(:render!)
|
12
|
-
end
|
13
|
-
|
14
|
-
it 'should respond to #with_root_component' do
|
15
|
-
expect(store.new).to respond_to(:with_root_component)
|
16
|
-
end
|
17
|
-
end
|